У меня следующая проблема: мой скрипт Python 'hello world' не может быть запущен crontab.
Если я установлю инструкцию crontab следующим образом:
* * * * * cd /home/ && /usr/bin/python /home/hello.py
Текст не отображается в терминале.
Но если я сделаю:
* * * * * cd /home/ && /usr/bin/python /home/hello.py >> /home/log.txt
Ubuntu добавляет текст «hello world» в log.txt
вот мой сценарий:
#!/usr/bin/env python
print('Hello World!')
Что я делаю неправильно?
PS уже читал эту тему Почему не работают скрипты crontab?
Ответы:
Ваш скрипт выполняется Cron, и все работает, как и ожидалось. Просто Cron не предназначен для вывода чего-либо в терминал. Итак, IMO, правильный вопрос здесь должен выглядеть примерно так: куда идет стандартный вывод в Cron?
Если он не перенаправлен (
>
,>>
) или piped (|
) в другую программу, все, что обычно выводится в STDOUT (если вы выполняете команду в командной строке), включая все сообщения об ошибках, будет отправлено в локальный почтовый ящик пользователя, который запускает Cronjob. Чтобы отправлять / получать эти электронные письма, вы должны применить минимальную конфигурацию, как описано здесь: Как настроить Cron для отправки электронных писем?Большинство предложений в предлагаемом дублировании объясняют, как перенаправить вывод Cronjob в TTY или окно терминала, но чтобы получить вывод там, вы должны заранее войти в систему (в этом окне TTY или терминала). Вот несколько дополнительных примеров:
Три способа получить вывод из Crontab
Где находится место исполнения Cronjobs по умолчанию
Задание Cron для запуска скрипта Python при перезагрузке не работает
Crontab и программа, которая должна быть выполнена в окне терминала
Как запустить любое приложение с графическим интерфейсом из Crontab в Ubuntu
Отрегулируйте яркость с помощью xrandr и cron
Кроме того, в этом случае:
cd /home/
не нужен, потому что ваш скрипт ничего там не пишет, а скрипт вызывается по его полному пути./usr/bin/python
это не нужно, потому что вы указываете системе, что это скрипт на Python, по шебангу#!/usr/bin/env python
. Но в этом случае файл должен иметь исполняемые разрешения:chmod +x /home/hello.py
.источник
Вы можете попробовать это!
(или ваш tty, если не tty3)
источник