私は次を読んだ単一のクローンジョブで複数のコマンドを実行する2つの方法:
同じcronジョブで複数のコマンドを実行し、セミコロン(;)で区切ることができます。
* * * * * /path/to/command-1; /path/to/command-2
実行するコマンドが互いに依存している場合は、コマンド間にデュアルアンパサンド(&&)を使用できます。したがって、最初のコマンドが失敗した場合、2番目のコマンドは実行されません。
* * * * * /path/to/command-1 && /path/to/command-2
私の要件は次のとおりです
- コマンドは順番に実行する必要があります(次のコマンドを実行する前に現在のコマンドが完了するのを待ちます)。
- コマンドは与えられた順序で実行する必要があります
- ただし、すべてのコマンドを実行する必要があります。前作が失敗しても
したがって、上記のリンクで言わない内容は次のとおりです。
セミコロン;
アプローチは、命令が与えられた順序で順次実行されることを依然として保証しますか?
答え1
はい、コマンド間で使用すると、;
すべてのコマンドが順番に実行されます。コマンドの実行は、前のコマンドの終了状態に依存しません。
Paul_Pedantが指摘したように、コメントから、crontabで単一のコマンドを実行するよりも複雑なタスクを実行するには、別のスクリプトからタスクを収集してそのスクリプトをスケジュールするのが最善です。これにより、cronとは無関係にスクリプトをテストしてデバッグできます。 cronは通常のログインシェル環境とはわずかに異なる環境を提供しているため、まだ環境要因(現在の作業ディレクトリが何であるか、$PATH
他の値が何であるかなど)があります。 )変数など)を覚えておく必要があります。