2011-09-26 5 views
5

crontabのmanページから取得しました。シャットダウン時にcronジョブはどうなりますか?

 string   meaning 
     ------   ------- 
     @daily   Run once a day, "0 0 * * *". 
     @midnight  (same as @daily) 

システムは常に真夜中にシャットダウンしているのであればジョブは@daily実行されることはありませんか?このジョブを毎日1回実行するように指定する適切な方法はありますが、それが1日に実行されるときは気にしません。

+4

http://upverfault.com/questions/52335/job-scheduling-using-コンピュータがシャットダウン中に何が起きるのか – jman

+1

サーバは一晩中シャットダウンするつもりはない。なぜなら、サーバをオンラインにしておき、週に一度シャットダウンするのはなぜですか?あるいは、少なくともcronジョブを先に実行するように変更しますか? –

答えて

2

ジョブは実行される可能性がありますが、完了しない可能性があります。 cronはデーモンを介して実装されているため、常に実行されています。システムのシャットダウンの順序によっては、シャットダウンプロセスのかなり遅れて実際にシャットダウンシグナルが送られることがあるため、シャットダウンが開始された瞬間にスケジュールされたジョブは引き続き実行されることがあります。

シャットダウンが00:00:00に正確に開始され、00:00:05(真夜中(5秒後))までcronにkillシグナルが送信されない場合、短時間実行されている2秒のジョブにはまだ完了までの時間があるかもしれません。

しかし、ジョブが依存しているサービスが既にシャットダウンされている場合やシャットダウン中の場合、終了することはできません。例えば、スクリプトはmysqlサーバに小さなピースしかし、mysqlは00:00:01にシャットダウンし、スクリプトはmysql部分に00:00:02まで到達しませんでした。

tl; dr:競合状態で、あなたの仕事は実行されるかもしれませんおそらくそうではありません。

+1

+1先生、良い答え! – chown