web-dev-qa-db-ja.com

Cron.hourlyは実行されません

それでは、スクリプトを作成し、/etc/cron.hourlyにドロップしてから、chmod 777ファイルにドロップしましたが、(自動的に)実行されません。手動で実行した場合、正常に機能します。他に何かする必要がありますか?

54
Switchkick

Crontab(/ etc/crontab)を使用せず、時間フィールドに*/1を使用する理由。私はこれを使用して5分ごとにスクリプトを実行しましたが、うまく機能します:

# m h dom mon dow user  command
* */1  * * *   user    command
13
oli206

cron.hourlyのエントリは、実行パーツメカニズムによって実行されます(詳細については、 man run-parts )。また、run-partsは、有効であると見なされるファイル名を選択します。

たとえば、スクリプトに拡張子を付けると、スクリプトが無効になり、ジョブが実行されなくなります。 [a-zA-Z0-9_-]は有効な文字なので、「。」無効にします。

/etc/cron.hourly(または.daily.weeklyなど)にジョブを追加するときは、コマンドを発行してrun-partsが実際に実行することを常にテストしてください。

run-parts --test /etc/cron.hourly

このコマンドを実行してファイルが表示される場合は、機能していることを意味します。それ以外の場合、何も表示されない場合、ファイル名は無効です。

スクリプトの名前は何でしたか?

141
DaithiF

あなたの問題はおそらく、誰でもあなたのファイルを編集することを許可する過度に開かれた許可にあります。代わりに755を試してください。

Syslog出力のcronエントリを確認すると、これが確認できます。

5
Cry Havok

DaithiFの答えは正しい答えであるべきです。

また、私のスクリプトの最初の行には#!/bin/bashがありませんでした。スクリプトはコマンドラインで実行できますが、run-partsは「Exec format error」と言って拒否しました。

ファイル名をscriptname.shからscriptnameに変更し、#!/bin/bashを最初の行に追加すると、スクリプトを1時間ごとに実行できるようになりました。

4
Ben Lin

走るとき

crontab -l

このタスクはリストにありますか?

そうでない場合は、追加します

crontab -e

この行を追加

0 * * * * yourScript

このリストにある場合は、プログラミング言語のパスをスクリプトの先頭に追加してみてください

例:

bash: #!/bin/bash

この2つのことで常に問題が解決しました:)

0
Wolfy