
現在、.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 を正常に実行するために次に何をすればよいでしょうか?
これまでの手順:
- ターミナルアプリケーションを開き、と入力します
crontab-e
。 - これにより、新しい nano ファイルが開き、次のコマンドを入力します。
* * * * * /Users/navania/Desktop/notify.sh
- 次に、control + o を押して保存し、control + x を押して CrontabTest という名前で保存します。
- 終了すると、crontab に変更が加えられていないと表示されますが、これは意味がありません。
- 次に、ログファイルを開いて、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のテキスト出力がターミナルに表示されることを期待すべきではない。
そして、次のような問題があります:
- 次に、control + o を押して保存し、control + x を押して という名前で保存します
CrontabTest
。- 終了すると、crontab に変更が加えられていないと表示されますが、これは意味がありません。
新しいファイルではなく、開かれた一時ファイルを保存する必要があると思います。保存中に名前を変更しないでください。