Я использую dryscrape в сценарии python. Сценарий python вызывается в сценарии bash, который запускается cron. Для тех, кто может не знать, dryscrape - это безгласный браузер (используйте QtWebkit в фоновом режиме, поэтому для него требуется xsession).Задача Cron не может запускать скрипт bash (который требует скрипт python, требующий xsession), который отлично работает с консоли
Вот основные моменты, касающиеся меня вопрос
- Когда я запускаю сценарий питона из командной строки, она работает
- Когда я запускаю Баш скрипт из командной строки, она работает слишком
я понял, что это может иметь что-то делать с различными средами между моей командной строкой и когда хроны работают, поэтому я изменил мой Баш скрипт на источник моего .profile следующим образом:
#/bin/bash
. /full/path/to/my/home/directory/.profile
python script_to_run.py
Это то, что моя запись cronjob кронтаб выглядит следующим образом:
0,55 14-22 * * 1-5 /path/to/script.sh >> $(date "+/path/to/logs/\%Y\%m\%d.mydownload.log")
Кстати, я знаю, что работа бежится (я могу видеть записи в/вар/Журнал/системный журнал, и сценарий также записывает в лог-файл - где я получаю сообщение об ошибке ниже):
Во всех случаях, я получил следующее сообщение об ошибке:
не удалось подключиться к серверу X. Попробуйте позвонить dryscrape.start_xvfb() перед созданием сеанса
Я установил предпосылки, на моей машине (очевидно - так как она работает в командной строке). На данный момент у меня заканчиваются идеи.
Что заставляет сценарий работать нормально на консоли, а затем сбой при запуске cron?
[[Соответствующие подробности]]
- ОС: Linux 16.0.4 LTS
- Баш: версия 4.3.46 (1)
- хрон пользователя: сам (то есть тот же пользователь на командная строка)
- dryscrape: версия 1.0.1
Вы используете cronjob переменную 'DISPLAY' (или вы это делаете? .profile)? –
Нет, я так не думаю. Пожалуйста, дополните ...Это похоже на проблему, с которой я раньше сталкивался с аналогичным проектом. Мне нужно добавить 'export DISPLAY =: 0' в мою запись crontab, прежде чем запускать команду? –
Можете ли вы запустить его с терминала, который не находится в сеансе X окон? (ctrl + alt + 1, ctrl + alt + 6 или ctrl + alt + 7, чтобы вернуться в xwindows). Может быть, для сухой кожи нужна xsession). – ymmyk