毎日特定の時間に URL を自動的に開く方法

毎日特定の時間に URL を自動的に開く方法

私は 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ターミナルに入力すると、スクリプトが動作します。

次に、キックオフ アプリケーション ランチャーを使用して、システム設定 > タスク スケジューラ > 新しいタスクをクリックし、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 から呼び出されると、現在のグラフィック環境へのフックなしで新しいセッションで実行されるため、ブラウザーを起動する場所がありません。スクリプトが実行中であることは、現在のタイムスタンプを含むファイルを作成するか、現在のタイムスタンプをどこかのログに書き込むことで確認できます。

最終的な目標が 1 日に 1 回ページを更新することである場合は、それを実現するためのブラウザ プラグインを検討してください。それ以外の場合は、環境の問題を解決する必要があります。

答え2

問題は、cron がログイン セッションを認識しないことです。

スクリプトがシステム コンソール ( ctrl-alt-f1) から動作しない場合は、cron からは確実に動作します。

GUI 関連の作業を自動化したい場合は、cron ではなく GUI ベースのスケジューラを使用するのがおそらく最善です。

答え3

アンドリューが言ったように、あなたの仕事は失敗しているかもしれません。Xセッションexport DISPLAY=:0;ウェブブラウザを開こうとしているからです。cronジョブのスケジュールの後に置く必要があります。

21 21 * * * export DISPLAY=:0; /home/craig/openurl.py

これが機能しない場合は、グラフィカル端末で:0の出力に置き換えてみてください。echo $DISPLAY

関連情報