バックグラウンドでコマンドを複数回実行する(bashスクリプト)

imll

3つのコマンドを実行する必要があるbashスクリプトを書いています。

  • コマンド1は、バックグラウンドで10秒ごとに実行する必要があります
  • コマンド23は、バックグラウンドで1回実行する必要があります。
  • また、コマンド1、最後の2つが適切に機能するために必要なファイルを生成/更新するため、コマンド23実行する前に、少なくとも1回は正常に実行する必要があります。

ただし、1これらの条件でコマンドを実行する方法がわかりません...コマンドとに到達できないためwhile(1)sleep 10またはそのようなものを使用することはできません23

どのbashスクリプトの概念が欠けていますか?スレッド、多分?

編集:コマンド1は、.txtファイル内の整数をインクリメントするような単純なものにすることができ、このファイルはコマンド23。で使用されます

111 ---

どのbashスクリプトの概念が欠けていますか?スレッド、多分?

ジョブ制御。プロセスをバックグラウンドで開始し、プロセスIDと終了ステータスを知ることで、プロセスをかなりきめ細かく制御できます。

バックグラウンドコマンドのPIDを取得するには、$!変数を使用します。

バックグラウンドコマンドの終了ステータスを取得するwait()には、そのPIDを使用して提供します。コマンドがまだ終了していない場合、への呼び出しwait()はブロックれることに注意してくださいこのブロッキングが問題である場合(あなたの場合)、ps呼び出す前に(または他の方法で)チェックを実行してwait()、プロセスが刈り取られる準備ができているかどうかを確認できます。タスクの実行時間に制限を設定する方法。

次のサイクルベースのボイラープレートを検討してください。

complete=0
cycles=0
# Task 1
sleep 200 &
pid=$!
while [[ complete -eq 0 ]]; then
    ps -o pid= -p $pid > /dev/null
    if [[ $? -ne 0 ]]; then
        # Signal complete to logic below
        complete=1
        break;
    fi
    # Perform some timeout / cycle check to give up on this task
    cycles=$((cycles + 1))
    if [[ $cycles -gt 100 ]]; then # whatever, this is just a simple watchdog example
        break;
    fi
    # Optional sleep
    sleep 1
done
if [[ $complete -eq 1 ]]; then
    # Process the command's exit status
    wait $pid
    if [[ $? -ne 0 ]]; then
        : # handle command failed perhaps
    else
        : # do other things, assuming exit of 0 is a good thing
    fi
else
    # Process a command watchdog failure
    kill -9 $pid # come what may
fi

より複雑なジョブ制御の場合は、コマンドチェックとサイクル管理をbash関数に移動して、このコードを大幅にクリーンアップできます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

同じコマンドをバックグラウンドで複数回実行する

分類Dev

バックグラウンドタスクを実行するスクリプトでのbashコマンド置換

分類Dev

Bashで複数のコマンドを実行する方法(一部はバックグラウンドで)

分類Dev

デフォルトでバックグラウンドでbashスクリプトを実行する

分類Dev

PHPスクリプトをバックグラウンドで実行する

分類Dev

Pythonスクリプトをバックグラウンドで実行する

分類Dev

パイプされたbashスクリプトをバックグラウンドで実行する

分類Dev

バックグラウンドでプロセスを実行し、同じコマンドラインでディレクトリを変更する方法

分類Dev

バックグラウンドで一定数のジョブを実行するbashスクリプト

分類Dev

バックグラウンドでbashスクリプトを自動的に実行する方法は?

分類Dev

バックグラウンドでBashスクリプトを実行する方法

分類Dev

コマンドライン引数を使用してAnsibleプレイブックでPythonスクリプトを複数回実行する

分類Dev

バックグラウンドでコマンドを実行すると、シェルスクリプトでファイルに書き込めません

分類Dev

バックグラウンドでコマンドを実行すると、シェルスクリプトでファイルに書き込めません

分類Dev

xshellでscreenコマンドを使用してバックグラウンドプロセスを実行する

分類Dev

xshellでscreenコマンドを使用してバックグラウンドプロセスを実行する

分類Dev

PowerShellでバックグラウンドプロセスとしてMavenコマンドを実行する方法

分類Dev

bashスクリプトで複雑なコマンドを実行する

分類Dev

コマンドラインからPHPスクリプトをバックグラウンドプロセスとして実行する

分類Dev

PHPスクリプトを複数回同時に実行するLinuxコマンドライン

分類Dev

特定のテキストで「ダミー」のバックグラウンドコマンドを実行する

分類Dev

bashスクリプトでランダムコマンドを実行する

分類Dev

コマンドをバックグラウンドで実行する

分類Dev

バックグラウンドでコマンドを実行する

分類Dev

bashのcaseステートメントを使用してバックグラウンドでコマンドを実行する方法は?

分類Dev

PHP:バックグラウンドでバッチスクリプトを実行する方法[Windows]

分類Dev

引数を受け入れてバックグラウンドで実行するbashシェルスクリプトを実行する

分類Dev

バックグラウンドプロセスでsshスクリプトを実行する

分類Dev

単一行のbashで複数のバックグラウンドコマンドを実行するにはどうすればよいですか?

Related 関連記事

  1. 1

    同じコマンドをバックグラウンドで複数回実行する

  2. 2

    バックグラウンドタスクを実行するスクリプトでのbashコマンド置換

  3. 3

    Bashで複数のコマンドを実行する方法(一部はバックグラウンドで)

  4. 4

    デフォルトでバックグラウンドでbashスクリプトを実行する

  5. 5

    PHPスクリプトをバックグラウンドで実行する

  6. 6

    Pythonスクリプトをバックグラウンドで実行する

  7. 7

    パイプされたbashスクリプトをバックグラウンドで実行する

  8. 8

    バックグラウンドでプロセスを実行し、同じコマンドラインでディレクトリを変更する方法

  9. 9

    バックグラウンドで一定数のジョブを実行するbashスクリプト

  10. 10

    バックグラウンドでbashスクリプトを自動的に実行する方法は?

  11. 11

    バックグラウンドでBashスクリプトを実行する方法

  12. 12

    コマンドライン引数を使用してAnsibleプレイブックでPythonスクリプトを複数回実行する

  13. 13

    バックグラウンドでコマンドを実行すると、シェルスクリプトでファイルに書き込めません

  14. 14

    バックグラウンドでコマンドを実行すると、シェルスクリプトでファイルに書き込めません

  15. 15

    xshellでscreenコマンドを使用してバックグラウンドプロセスを実行する

  16. 16

    xshellでscreenコマンドを使用してバックグラウンドプロセスを実行する

  17. 17

    PowerShellでバックグラウンドプロセスとしてMavenコマンドを実行する方法

  18. 18

    bashスクリプトで複雑なコマンドを実行する

  19. 19

    コマンドラインからPHPスクリプトをバックグラウンドプロセスとして実行する

  20. 20

    PHPスクリプトを複数回同時に実行するLinuxコマンドライン

  21. 21

    特定のテキストで「ダミー」のバックグラウンドコマンドを実行する

  22. 22

    bashスクリプトでランダムコマンドを実行する

  23. 23

    コマンドをバックグラウンドで実行する

  24. 24

    バックグラウンドでコマンドを実行する

  25. 25

    bashのcaseステートメントを使用してバックグラウンドでコマンドを実行する方法は?

  26. 26

    PHP:バックグラウンドでバッチスクリプトを実行する方法[Windows]

  27. 27

    引数を受け入れてバックグラウンドで実行するbashシェルスクリプトを実行する

  28. 28

    バックグラウンドプロセスでsshスクリプトを実行する

  29. 29

    単一行のbashで複数のバックグラウンドコマンドを実行するにはどうすればよいですか?

ホットタグ

アーカイブ