crontab経由でシェルスクリプトを実行するには?
notify.sh
のスクリプトは次のようになっています。
notify-send "hi welcome"
午後2時の私のcrontab通知。
0 14 * * * home/hacks/notify.sh
しかし、これがうまくいきません。何か問題があるのでしょうか?
notify.sh
のスクリプトは次のようになっています。
notify-send "hi welcome"
午後2時の私のcrontab通知。
0 14 * * * home/hacks/notify.sh
しかし、これがうまくいきません。何か問題があるのでしょうか?
これはカーネルがどのコマンドインタプリタがスクリプトに使用されるかを示すために解釈する魔法です。
以下のようにしてください。
#!/bin/sh
notify-send "hi welcome"
のようにして、スクリプトが実行可能であることを確認してください。
ls -l home/hacks/notify.sh
chmod +x home/hacks/notify.sh
ls -l home/hacks/notify.sh
また、これを一日に一度だけ発生させたいとのことですが、crontabのタイムゾーンはあなたのタイムゾーンと同じですか?これはグリニッジ標準時の午後2時に発生しているかもしれません。
crontabを動作させるのは簡単だが、ここではcrontabのジョブの動かし方を説明する。crontabに行き詰っている人には参考になると思います。
*/1 * * * * cd /home/hacks && sh notify.sh
chmod +x home/hacks/notify.sh
ここでは、このスクリプトを1分ごとに実行しています。以下のスクリプトを実行することで、ログファイルに書き込んで動作しているかどうかを確認することができます
ログの書き込み
*/1 * * * * cd /home/hacks && sh notify.sh>>test.log
メールの送信
*/1 * * * * cd /home/hacks && sh notify.sh>>test.log | mail -s "Hi this is example" user@domain.com
まず、crontabをコマンドcrontab -e
で編集し、このCrontab
の中に実行スクリプトのパスを追加します。 * 14 * * * home/hacks/notify.sh >/dev/null 2>&1
.
Start /Stop / restart cron service
/etc/init.d/crond start /stop / restart
service crond start /stop /restart
systemctl stop crond.service
systemctl stop crond.service