crontab経由でシェルスクリプトを実行する方法


22

私が持っているnotify.shルックスが好きなことをするスクリプトを:

notify-send "hi welcome"

午後2時のcrontab通知:

0 14 * * * home/hacks/notify.sh

ただし、これは機能しません。何が問題ですか?

回答:


39

スクリプトに#がありません!開始時の行。これは、どのコマンドインタープリターをスクリプトに使用するかを示すためにカーネルによって解釈される魔法です。

次のようにします。

#!/bin/sh
notify-send "hi welcome"

スクリプトが実行可能であることを確認してください:

ls -l home/hacks/notify.sh
chmod +x home/hacks/notify.sh
ls -l home/hacks/notify.sh

また、これを1日に1回だけ実行するように求めているので、crontabのタイムゾーンは自分のタイムゾーンと同じですか?これは、GMTの午後2時に発生する場合があります。


+1この答えは素晴らしいです。特に、スクリプトが実行可能である必要があるという点に注意してください。ありがとう!
FXQuantTrader

非常に微妙な説明。私の
賛成票

18

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

2
「* / 1 * * * * sh /home/hacks/notify.sh」も機能しませんか?
user1179459

5

4仮説:

  • cronデーモンが実行されていません(ps axfww | grep cron確認してください)

  • notify-sendは出力を端末またはXセッションに送信しようとしていますが、cron環境内から実行され、「誰と話すか」、いわばわかりません。

  • スクリプトは実行できません

  • home/crontabのスクリプトのパスは、スクリプトとして実行されますユーザーに相対的です。フルパスを使用してみてください


1

export DISPLAY=:0スクリプトのnotify-send行の上に追加します。これはlornezogの2番目のポイントに対処します。


0

次のコマンドでcrontabを開く必要があります。

crontab -u username -e (to edit) -l(to list) -r(to remove) 10(minutes) 8-15(hours) *(Day of month) *(month) 1,3,5(days of week) /path/to/script/script_name.sh

これにより、毎週月曜日、水曜日、金曜日の午前8時から午後3時まで1時間ごとにスクリプトが実行されます。


0

まず、コマンドを使用してcrontabを編集し、crontab -eこの中Crontabに実行可能スクリプトのパスを追加する必要があります * 14 * * * home/hacks/notify.sh >/dev/null 2>&1

cronサービスの開始/停止/再起動

  • /etc/init.d/crond start /stop / restart
  • service crond start /stop /restart
  • systemctl stop crond.service

systemctl stop crond.service


-2

非常に簡単な方法で、crontabファイルの最後に次の行を追加します。 sudo nano /etc/crontab

@reboot root cd /home/pi/node-sonos-http-api && npm start &


これは質問に対する答えではないようです。
Ljm Dullaart
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.