1分ごとに通知を送信するように設定しましたが、
$ crontab -l 1 * * * * /usr/bin/notify-send -t 0 "hello"
なぜ動作しないのですか? crontabファイルを編集した後、オペレーティングシステムを再起動する必要がありますか?
これは実行中であることを意味しますか
cron
?$ ps aux | grep -i cron root 1038 0.0 0.0 23660 2420 ? Ss Apr20 0:00 cron
30秒ほど頻繁にスケジュールを指定できますか?時間を素数で指定できますか?
0.5 * * * * /usr/bin/notify-send -t 0 "hello"
ベストアンサー1
最初の問題は、毎分ジョブを実行する構文が間違っていることです。
1 * * * * /usr/bin/notify-send -t 0 "hello"
最初のフィールドの1
意味は、ジョブが1時間ごとに1分間だけ実行されることを意味します。以下1
から変更してください*
。
* * * * * /usr/bin/notify-send -t 0 "hello"
2番目の問題は、cronジョブが非常に制限された環境で実行されることです。マイシステム(Linux Mint)で設定された唯一の環境変数は、、、、$HOME
および$LOGNAME
-通常$PATH
に設定されます。$LANG
$SHELL
$PWD
$PATH
"/usr/bin/:/bin"
少なくとも設定がないことは、何も表示できないことを意味します$DISPLAY
。notify-send
クイック実験:
* * * * * DISPLAY=:0.0 notify-send "hello from crontab"
これにより、次のエラーが発生しました。
(notify-send:18831): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
(私はGnomeデスクトップを実行しています。)
別の実験では、対話型環境全体をスクリプトにコピーし、すべての環境変数を明示的に設定し、を呼び出すようにスクリプトを編集しましたnotify-send
。毎分、「crontabで」ポップアップが表示されます。
私は必要ではないと確信していますみんなインタラクティブな環境で動作させることができますが、正確にどの環境変数が必要か、その値が何であるかはわかりません。現在のログインセッションの開始時にいくつかの必須変数が設定される可能性が高く、ログアウトしてから再度ログインすると変更されます。詳細は、使用しているデスクトップ環境によって異なります。
これは完全な解決策ではありませんが、開始点を提供する必要があります。他の人が関連する詳細を追加することもできます。