
私は私が指定した順序で毎日2つのタスクを連続して実行したいと思います。このcrontabは私が望むものを安定して実行できますか?
@daily job1
@daily job2
私はそれらが順番に実行されていると仮定していますが、Webを検索したり、次のマンページのいずれかで答えを見つけることができません:cron(1)
、、、。crontab(1)
crontab(5)
@daily
cronがスケジュールされたタスクを並列に実行するか、予測不可能な順序で実行している場合、上記のcrontabは明らかに私が望むタスクを実行しません。
私は単にシェルスクリプトを作成して順番に実行できることを知っています。 cronがどのように機能するのか疑問に思います(そしてテストデータを収集したり、ソースコードを読み取るには怠惰です)。
Cronはソフトウェアパッケージで提供されていますcron
。オペレーティングシステムはUbuntu 10.04 LTS(サーバー)です。
答え1
ソースコードを少し見てみると(同じバージョンであると思われるDebian squeezeでは)、与えられたファイルのエントリが同じタイミングで順次実行されるように見えます。この目的のためにとは@daily
同じ0 0 * * *
です(実際にはこのcronと@daily
同じです0 0 * * *
)。
私は全体的にこれに依存しません。ある日、誰かが32コアCPU(このうち31はアイドル状態)を利用するために、cronがタスクを並列に実行する必要があると判断するかもしれません。クローンソースで見つかった20年前のToDoエントリの実装中にこれを行うことができます。
これらはすべてタグ付けされ、ロードを制限する必要があります。つまり、@hourlyは「0 * * * *」ではなく、「毎時間の前半に近いがシステム負荷が低いまで」を意味しません。 (…)(vix、1990年1月)
ここに書くのはとても簡単です@daily job1; job2
。課題を順番に実行することが重要な場合は、作成した内容の直接的な結果を作成してください。
また、明示的な順序を使用すると、将来の管理者が重要ではないと見なす行の並べ替えのリスクが排除されます。
答え2
http://ss64.com/osx/crontab.html(およびその他を参照)@dailyは次のとおりです。
0 0 * * *
真夜中に運行するそうですね。このタイプの両方のルートは可能な限り深夜に近づくことを期待していますが、どちらのルートが最初に実行されるかは保証できません。私はコメントでjw013の提案に同意します。
過少指定されるという事実は、一般的に実装によって異なることを意味し、通常この動作に依存しないことが最善です。一連の重要なタスクを別々のcrontabエントリとして配置するよりも、独自のスクリプトに配置する方がきちんと整理できます。
答え3
@Gilesは、インポート時に単一のスクリプトを使用して順次実行するのが適切であると述べました。
cron.daily
ファイルは実行時間を指定しません。私の経験では、シリアルで実行されます。多くのバックグラウンドタスクがラップトップや他のシステムで実行できるため、これは意味があります。
指定された時間が経過すると、現在の分にスケジュールされているすべてのジョブが実行されます。さまざまな時間を活用することをお勧めします。
相互に排他的なジョブがある場合は、通常、ロックファイルを使用して他のジョブが実行されていることを確認してください。