私はKubuntu 14.04を使用しています。 sudo apt-get install cronを使用してcronをインストールし、IDLEにこのファイルを作成しましたopenurl.py
。
#!/usr/bin/env python
import webbrowser
webbrowser.open('http://eample.com')
その後、chmod +x openurl.py
端末に入力して.pyファイルを実行可能にしました。./openurl.py
端末にこれを入力すると、スクリプトは機能します。
次に、Launcher Application Launcherを使用して、システム設定>タスクスケジューラ>新しいタスクをクリックし、openurl.pyファイルを検索して実行する時間を選択しました。
crontab -e
端末に入力すると、次のように表示されます。
#openurl
21 21 * * * /home/craig/openurl.py
# File generated by KCron the Thursday 29 Jan 2015 21:20.
その後、待つと何も起こりません。私は何が間違っていましたか?
答え1
クローン構成が正しいようです。私はpython webbrower.open()関数について完全に慣れていませんが、Pythonスクリプトが見えるブラウザウィンドウでページを開くことを望んでいるとします。
私の考えでは、ここで何が起こるのかは、コマンドラインからスクリプトを呼び出すとグラフィカルセッションで実行されるために機能することです。 cronから呼び出すと、現在のグラフィック環境に接続されず、新しいセッションで実行されるため、ブラウザを起動できません。現在のタイムスタンプを含むファイルを作成するか、現在のタイムスタンプをログのどこかに記録して、スクリプトが実行されていることを確認できます。
最終目標が1日に1回ページを更新することである場合は、これを達成するためにブラウザプラグインを使用することをお勧めします。それ以外の場合は、環境問題を特定する必要があります。
答え2
問題は、cronがログインセッションを知らないことです。
システムコンソール()でスクリプトをctrl-alt-f1
実行できない場合は、必ずcronで実行されます。
GUI操作を自動化するには、cronの代わりにGUIベースのdschedulerを使用できます。
答え3
Andrewが言ったように、操作は失敗する可能性があります。Xセッション、Webブラウザを開こうとしているからです。export DISPLAY=:0;
以下のようにcronjobのスケジュールの後に置く必要があります。
21 21 * * * export DISPLAY=:0; /home/craig/openurl.py
それでも機能しない場合は、:0
グラフィック端末で出力を交換してみてください。echo $DISPLAY