チェックポイントを使用してコマンドリストを実行しますか?

チェックポイントを使用してコマンドリストを実行しますか?

複雑なシャットダウンと回復プロセスを実行するスクリプトがあります。いくつかの長期実行コマンドを実行します。いくつかは約10分かかり、他の人はより速くかかります。

これらすべてのコマンドをファイルに保存し、チェックポイントで実行できるソフトウェアはありますか?たとえば、1 つずつ実行し、どちらが最後に実行されたかを覚えておくか、すべて実行し、そのうちの 1 つが中断されたら、その時点からやり直すことができます。

ベストアンサー1

各長期実行コマンドを実行した後は、そのコマンドが実行されたことを覚えておく必要があります。何が起こったのかを覚える方法は、情報をファイルに保存することです。

これらのコマンドのいずれかがファイルを生成すると、ファイルが存在するかどうかをテストできます。参考にするいくつかの点があります。

  • コマンドが出力ファイルを生成し、複数のステップにわたって入力し、途中で失敗すると、最終的に部分ファイルが生成されます。回避策は、コマンドが一時ファイルに書き込むようにし、コマンドが正常に完了した後に一時ファイルの名前を最終名に変更することです。
  • コマンドが実行される前に出力ファイルがすでに存在する場合は、出力ファイルが最新であることを確認する方法が必要です。この問題は通常、入力ファイルと出力ファイルの修正時間を比較することで解決できます。出力ファイルが入力ファイルより最新の場合は再生成されたことを示します。

これは基本的な作業です。自動化ツールの構築。伝統的なツールを使用できます。作る。これは、「ファイルBがファイルAから構築され、AがBより最新であるか、Bが存在しない場合にAからBを生成するコマンドを実行します」という概念に基づいて構築されました。構文は次のとおりです。

B: A
        command-to-generate-B-from-A

2 行目は、空白ではなくタブ文字で始まります。

コマンドが出力ファイルを自動的に生成しない場合は、それを一時ファイルに書き込みます。

B: A
        mycommand <A >B.tmp
        mv B.tmp B

失敗した場合、mycommandmakeは2番目のコマンドを実行しないため、Bコマンドは生成されません。

Bを生成するにはコマンドを実行しますmake B。 Bがすでに存在し、Aよりも最新の場合、makeはmycommand再実行されません。

チェーンルールを自動的に定式化します。 AからBをビルドするルールとBからCをビルドするルールがあり、Aのみが存在する場合はmake C自動的にBをビルドしてからCをビルドします。

コマンドが実行されたことを示すファイルがない場合は、記憶する空のファイルを作成できます。

command1.timestamp:
        command1
        touch command1.timestamp
command2.timestamp:
        command2
        touch command2.timestamp

すでに存在する場合、実行してもmake command2.timestamp何も起こりません。command2.timestampそれ以外の場合は、最初に実行してからcommand1command1.timestampすでに存在しない限り)実行しますcommand2

おすすめ記事