Я использую kubuntu 14.04. Я установил cron с помощью sudo apt-get install cron, а затем создал этот файл в IDLE, назвав его openurl.py
.
#!/usr/bin/env python
import webbrowser
webbrowser.open('http://eample.com')
Затем я ввел chmod +x openurl.py
в терминал, чтобы сделать файл .py исполняемым. Если я введу ./openurl.py
в терминал, скрипт заработает.
затем, используя средство запуска приложений Kickoff, я нажал «Параметры системы» > «Планировщик задач» > «Новая задача» > затем я нашел файл openurl.py и выбрал время его запуска.
Если я введу команду crontab -e
в терминал, то отобразится следующее:
#openurl
21 21 * * * /home/craig/openurl.py
# File generated by KCron the Thursday 29 Jan 2015 21:20.
А потом жду, и ничего не происходит. Что я делаю не так?
решение1
Я думаю, что ваша конфигурация cron правильная. Я не совсем знаком с функцией python webbrower.open(), но предполагаю, что вы ожидаете, что скрипт python откроет вашу страницу в видимом окне браузера.
Я думаю, что здесь происходит следующее: когда вы вызываете скрипт из командной строки, он работает, потому что он работает в вашем графическом сеансе. Когда он вызывается из cron, он запускается в новом сеансе без хуков в вашей текущей графической среде, поэтому ему негде запустить браузер. Вы можете проверить, что скрипт работает, заставив его создать файл с текущей временной меткой или записать текущую временную метку в журнал где-нибудь.
Если ваша конечная цель — обновлять страницу раз в день, вы можете рассмотреть плагин для браузера, чтобы добиться этого, в противном случае вам придется разобраться с проблемой среды.
решение2
Проблема в том, что cron не знает о вашем сеансе входа в систему.
Если скрипт не работает из системной консоли ( ctrl-alt-f1
), он определенно не будет работать из cron.
Если вы хотите автоматизировать работу с графическим интерфейсом, то, вероятно, лучше использовать графический планировщик dscheduler вместо cron.
решение3
Как сказал Эндрю, ваша работа может оказаться неудачной, потому что она требуетX сессия, поскольку вы пытаетесь открыть веб-браузер. Вы должны поместить export DISPLAY=:0;
после расписания в cronjob, как в
21 21 * * * export DISPLAY=:0; /home/craig/openurl.py
Если это не сработает, попробуйте заменить :0
выводом echo $DISPLAY
в графическом терминале.