Crontab スクリプトを毎分実行

Crontab スクリプトを毎分実行

現在、.sh スクリプト ファイルを 1 分ごとに実行する cronjob をスケジュールしようとしています。

これは私の簡単なスクリプトです:

#!/bin/sh
echo "Hello World" >> /Users/navania/crontab-scrip.log

これをデスクトップに保存し、notify.sh という名前を付けました。次に、新しいターミナル ウィンドウを開いて と入力しましたcrontab-e。これにより、新しい nano ファイルが開き、次のように入力しました。

* * * * * /Users/navania/Desktop/notify.sh

この nano ファイルを保存して存在させました。cronjob を正常に実行するために次に何をすればよいでしょうか?

これまでの手順:

  1. ターミナルアプリケーションを開き、と入力しますcrontab-e
  2. これにより、新しい nano ファイルが開き、次のコマンドを入力します。* * * * * /Users/navania/Desktop/notify.sh
  3. 次に、control + o を押して保存し、control + x を押して CrontabTest という名前で保存します。
  4. 終了すると、crontab に変更が加えられていないと表示されますが、これは意味がありません。
  5. 次に、ログファイルを開いて、1 分ごとに Hello World が印刷されるかどうかを確認しましたが、印刷されませんでした。

ご協力いただければ幸いです。ありがとうございます!

答え1

スクリプトはおそらく毎分実行しようとしているのでしょう。

Kamilの手順に従って、crontabの行に/bin/shを追加します。

コマンドはターミナルでは実行されないため、画面に書き込むのではなく、ファイルに出力するようにスクリプトを少し変更します。代わりに、コマンドは独自のプロセスで実行されるため、出力は表示されません。

たとえば、スクリプトを次のように変更します。

#!/bin/sh
echo "Hello World" >> /Users/navania/crontab-scrip.log

.log ファイルを調べて、新しい行が書き込まれているかどうかを確認します。

答え2

スクリプトを実行可能にする必要があります:

chmod +x /Users/navania/Desktop/notify.sh

そして、スクリプトを保持するファイルシステムが でマウントされていないことを確認してくださいnoexec。次に、コマンド

/Users/navania/Desktop/notify.sh

動作するはずなので、cronjob も動作するはずです。


あるいはcrontabのコマンドは

/bin/sh /Users/navania/Desktop/notify.sh

この場合、実行権限は関係ありません (スクリプト内のシバンも関係ありません)。


ご注意くださいcronjobのテキスト出力がターミナルに表示されることを期待すべきではない


そして、次のような問題があります:

  1. 次に、control + o を押して保存し、control + x を押して という名前で保存しますCrontabTest
  2. 終了すると、crontab に変更が加えられていないと表示されますが、これは意味がありません。

新しいファイルではなく、開かれた一時ファイルを保存する必要があると思います。保存中に名前を変更しないでください。

関連情報