Crontabを使用してsh
スクリプトを毎分実行しようとしていますが、動作していません。
スクリプトを手動で実行すると、正しく実行されますが、crontabでは実行できません。
crontab -e
を使用してジョブを作成しましたが、pgrep cron
と入力するとPIDが返されるため、cronが実行されていることがわかります。
また、私はそれをテストしたので私の時間形式が正しいことを知っています このオンラインテスターで 。
wallpaperSlider.sh:
#!/bin/bash
feh --randomize --bg-fill /home/username/Pictures/wallpapers/*
crontabジョブ:
Shell=/bin/bash
* * * * * username /home/username/.crons/wallpaperSlider.sh
私はAskUbuntuで最も一般的なエラーを読んだことがありますが、私は何も経験していないと思います。
おそらくいくつかの環境変数が欠落していることを理解していますが、それを確認する方法がわかりません。
crontab -e
がtmpファイルを変更/作成することも知っています。私の場合は/tmp/crontab.wCajAu/crontab
です。
crontab -e
がtmp
フォルダー内のファイルを変更することに留意して、再起動するとすべての変更が失われますか?Cron形式が間違っています。あなたが欲しい:
* * * * * /home/username/.crons/wallpaperSlider.sh
ユーザーのcrontabにはusername
フィールドがありません。これは、/etc/crontab
などのシステム全体のcrontabにのみ使用されます。また、デフォルトのシェルがbash(Ubuntuではdash
)でなくても、スクリプト自体にShebang行(Shell=/bin/bash
)があるため、#!/bin/bash
は必要ありません。 Shell cronの起動に関係なく、bash
によって実行されます。
ただし、cronからXサーバーと通信するアプリケーションを実行しようとしているので、おそらく他の問題もあるでしょう。その場合、使用する必要があります:
DISPLAY=":0.0"
XAUTHORITY="/home/YOURUSERNAME/.Xauthority"
XDG_RUNTIME_DIR="/run/user/1000"
* * * * * /home/username/.crons/wallpaperSlider.sh