私のクローンジョブは実行されません。

私のクローンジョブは実行されません。
  1. 1分ごとに通知を送信するように設定しましたが、

    $ crontab -l
    1 * * * * /usr/bin/notify-send -t 0 "hello"
    

    なぜ動作しないのですか? crontabファイルを編集した後、オペレーティングシステムを再起動する必要がありますか?

  2. これは実行中であることを意味しますかcron

    $ ps aux | grep -i cron
    root      1038  0.0  0.0  23660  2420 ?        Ss   Apr20   0:00 cron
    
  3. 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"

少なくとも設定がないことは、何も表示できないことを意味します$DISPLAYnotify-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で」ポップアップが表示されます。

私は必要ではないと確信していますみんなインタラクティブな環境で動作させることができますが、正確にどの環境変数が必要か、その値が何であるかはわかりません。現在のログインセッションの開始時にいくつかの必須変数が設定される可能性が高く、ログアウトしてから再度ログインすると変更されます。詳細は、使用しているデスクトップ環境によって異なります。

これは完全な解決策ではありませんが、開始点を提供する必要があります。他の人が関連する詳細を追加することもできます。

おすすめ記事