2017-10-20 30 views
0

デスクトップの背景をランダムに変更する方法を作成しようとしています。私は10分ごとにcrontabを使って変更を処理しています。cronのコマンドを実行してもエラーが発生しない

のcrontab

*/10 * * * * /usr/bin/feh --recursive --randomize --bg-fill 
/home/aaron/Pictures/wallpapers/minimalist 2>&1 

をsyslog

syslog:Oct 20 09:20:01 skull-nuc CRON[19895]: (aaron) CMD (/usr/bin/feh --recursive --randomize --bg-fill /home/aaron/Pictures/wallpapers/minimalist 2>&1) 
syslog:Oct 20 09:30:01 skull-nuc CRON[20449]: (aaron) CMD (/usr/bin/feh --recursive --randomize --bg-fill /home/aaron/Pictures/wallpapers/minimalist 2>&1) 

トラブルシューティング -

まず私は、SHに私のシェルを変更し、コマンドをテストしました。できます。私はbashでコマンドをテストしました。できます。私はそれがcronから実行することを許可し、何も起こらず、エラーは生成されません。それはちょうど10分ごとに実行され、私はバックグラウンドを手動で変更するだけです。

私は他にわからない何だ

  1. スクリプトだけでは
  2. スクリプトが動作するのshから
  3. cronサービスが
  4. のcronが識別可能な出力
  5. でコマンドを実行している実行している作品を確認しました行うべきこと
+0

'/ bin/sh/usr/bin/feh --recursive ...'また、出力があるかどうかをどのようにして知ることができますか?おそらく、ファイル '2>&1/some/file.log'にリダイレクトする必要があります。 – JNevill

+0

ああ。 nmである。私はそれが自分のプログラムだと思う。シェルは重要ではありません。 'feh'に精通していない。出力するファイルを指定する必要がありますか? cronを実行しているときに出力がないことをどのように知っていますか? – JNevill

+0

'feh'は、正しいXセッションに接続して背景を変更するためにDISPLAY環境変数を設定する必要がありますか? DISPLAYはおそらくcron環境では設定されていません。 –

答えて

2

cron環境通常、対話シェルで使用している環境とは異なります。この場合、DISPLAY環境変数をチェックする必要があります。多くのXユーティリティは、どのセッションに接続するかを把握しています。 これが設定されていないと、fehはあなたが説明した方法でおそらく失敗します。

存在しない環境変数は、crontabで使用しているコマンドラインで直接設定することも、環境を設定するラッパースクリプトを作成してfehを呼び出してから、cronからラッパーを呼び出すこともできます。

関連する問題