1

run.shというシェルスクリプトがあります。その中で、私は次のような他のシェルスクリプトを呼び出すことがあります。

./run_1.sh
./run_2.sh
.........

./run.shでスクリプトを呼び出すと、実際には、スクリプト内でさまざまなPIDを使用してさまざまなタスクが順番に呼び出されることがわかりました(つまり、run_1.shがタスクになり、run_2.shが別のタスクになります)。これにより、1つの「kill」コマンドを使用してタスクのグループ全体を強制終了したり、「。/ run.sh&」を実行してタスクのグループ全体をバックグラウンドで実行したりできなくなります。では、スクリプトを1つのタスク全体として実行する方法はありますか?

4

1 に答える 1

4
  • pkillオプションを使用して、プロセスの子を強制終了するために使用-Pできます。

    pkill -P $PID
    

    ここで、$PIDは親プロセスのPIDです。

  • 同じシェルで実行されるようsourceにコマンドを実行できます(これにより、すべてのスクリプトが同じスコープを共有するため、副作用が発生する可能性があります)run_1.sh

    source run_1.sh
    source run_2.sh
    
于 2013-02-24T22:31:07.467 に答える