それでは、スクリプトを作成し、/etc/cron.hourly
にドロップしてから、chmod 777
ファイルにドロップしましたが、(自動的に)実行されません。手動で実行した場合、正常に機能します。他に何かする必要がありますか?
Crontab(/ etc/crontab)を使用せず、時間フィールドに*/1を使用する理由。私はこれを使用して5分ごとにスクリプトを実行しましたが、うまく機能します:
# m h dom mon dow user command
* */1 * * * user command
cron.hourly
のエントリは、実行パーツメカニズムによって実行されます(詳細については、 man run-parts
)。また、run-parts
は、有効であると見なされるファイル名を選択します。
たとえば、スクリプトに拡張子を付けると、スクリプトが無効になり、ジョブが実行されなくなります。 [a-zA-Z0-9_-]
は有効な文字なので、「。」無効にします。
/etc/cron.hourly
(または.daily
、.weekly
など)にジョブを追加するときは、コマンドを発行してrun-parts
が実際に実行することを常にテストしてください。
run-parts --test /etc/cron.hourly
このコマンドを実行してファイルが表示される場合は、機能していることを意味します。それ以外の場合、何も表示されない場合、ファイル名は無効です。
スクリプトの名前は何でしたか?
あなたの問題はおそらく、誰でもあなたのファイルを編集することを許可する過度に開かれた許可にあります。代わりに755
を試してください。
Syslog出力のcronエントリを確認すると、これが確認できます。
DaithiFの答えは正しい答えであるべきです。
また、私のスクリプトの最初の行には#!/bin/bash
がありませんでした。スクリプトはコマンドラインで実行できますが、run-parts
は「Exec format error」と言って拒否しました。
ファイル名をscriptname.sh
からscriptname
に変更し、#!/bin/bash
を最初の行に追加すると、スクリプトを1時間ごとに実行できるようになりました。
走るとき
crontab -l
このタスクはリストにありますか?
そうでない場合は、追加します
crontab -e
この行を追加
0 * * * * yourScript
このリストにある場合は、プログラミング言語のパスをスクリプトの先頭に追加してみてください
例:
bash: #!/bin/bash
この2つのことで常に問題が解決しました:)