中断/停止する方法はありますか?~のため-loop bash
、しかし後ろに現在の繰り返しが完了しました。 「サイ」完璧そしてする?
私~のため- 1つのコマンドを使用して複数のディレクトリを繰り返すことは、完了が許可されていない限り破壊的である可能性があります。したがって、あるディレクトリが完了し、次のディレクトリが起動する前にコマンドを停止したいと思います。
sleep
(はい、以前またはread
コマンドを追加できることを知っています。完璧- しかし、私いいえ、ループはすでに実行中です...)
答え1
~のためすでに実行中: コマンドが次のようになるとします。プログラムだから子供の頃に走ったプロセススクリプト(またはその一部)を実行するシェルの下でそしてスクリプトは入力のためにheredocまたはherestringを提供しません。またはその入力を読み込んだり、少なくともバッファリングして停止したりできます。〜の後プロセス終わる通過:
kill -STOP
シェル(だから何もしません。後ろに現在のコマンド)- 子プロセスが完了してゾンビ状態になるまで待ちます。
kill -KILL
シェル
root
(もちろん、すべて同じユーザーまたは別のシェルで実行されます。)プリンシパルが各do ... done
反復で複数のタスクを実行している場合、そのタスクは後でのみキャプチャされます。ㅏそのプログラムが得られるのにリアルタイムで十分に長い時間がかかるプログラム。-STOP
このプログラムは反復の最後のプログラムでも、そうでない場合もあります。
一部(多くの場合)では、kill -KILL
単にシェルを前処理して、シェルが通常どおりサブアイテムをクリーンアップするのを防ぎ、サブアイテムを実行して最終的に収穫するようにしますinit
(またはシステムがそれに対応するアイテム)。しかし、可能子にいくつかのI / Oエラー、環境の違い、エラー、または孫の変更を見させ、回避しようとする「破壊的な」結果を引き起こす可能性があります。
答え2
繰り返しに含まれる内容とビルド方法によっては、実行可能ファイルのリンクを解除してスクリプトを中断することができます。たとえば、スクリプトは次のようになります。
do_first_thing && \
do_second_thing && \
do_third_thing
グローバルにリンクを解除/移動できると仮定するとdo_first_thing
、つまり現在他のスクリプトでこれを必要としない場合は、次のようにします。
- スクリプトが実行されないように接続を解除するか、名前を変更してください。
- 繰り返し
ps
進行状況の観察 - ループがアイドル繰り返しを開始すると、ループを終了できます。
スクリプトの最初のコマンドをsleep
orを含む他のスクリプトにリンクすることもできます。read
これにより、ループを無害に中断する時間と機会が提供されます。