Как автоматически открывать URL-адрес в определенное время каждый день

Как автоматически открывать URL-адрес в определенное время каждый день

Я использую 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в графическом терминале.

Связанный контент