Почему скрипт на python3 не пишет данные в файл, когда запущен из crontab?
Вот простейшая запись в файл на python3:
mes = 'hehe\n';
with open('events.log', 'a+') as f:
f.write(mes)
При запуске с консоли linux работает как положено. Однако, когда я запускаю скрипт при помощи crontab ничего не работает, записи в файле нет вообще. Запуск идет с правами root.
* * * * * /usr/bin/python3.5 /home/username/test.py > /dev/null 2>&1
Если вызывать так, тоже неработает:
* * * * * /usr/bin/python3.5 /home/username/test.py
Выводы stderr ничего не возвращают (/home/username/errors.log пуст)
* * * * * /usr/bin/python3.5 /home/username/test.py > /dev/null 2>> /home/username/errors.log
Как быть, кто знает в чём может быть дело?
Ответы (2 шт):
Автор решения: D. Violet
→ Ссылка
Пробовали так?
* * * * * myjob.sh >> /var/log/myjob.log 2>&1
События cron:
- /var/log/cron
- /var/log/syslog
- journalctl | grep cron
- journalctl -u cron
Автор решения: Login8
→ Ссылка
В python3 все пути к файлам необходимо указывать как абсолютные а не как относительные
install_dir = '/usr/local/my_program'
mes = 'hehe\n';
with open(instal_dir+'/events.log', 'a+') as f:
f.write(mes)
Тогда не важно кто запускает вашу программу, вы с консоли linux или сторонний скрипт например crontab , все будет работать