実行中の ; で区切られた複合 bash コマンドの一部を変更したり、事前に強制終了したりできますか?

実行中の ; で区切られた複合 bash コマンドの一部を変更したり、事前に強制終了したりできますか?

セミコロンで区切られた複数の bash コマンドを実行しています:

% long-running-command-I-want ; another-command-I-dont

はまだ実行中です。当然ながら、まだ はlong-running-command-I-wantありません。しばらく待機していた を強制終了せずに、 を事前に強制終了/キャンセル/実行を防止したいと思います。それは可能ですか? できる場合、どのようにすればよいですか?pidanother-command-I-dontanother-command-I-dontlong-running-command-I-want

答え1

bash別のシェルを実行すると、続行するプログラムを実行している のPID を見つけることができます。これが の場合bashPID、次のコマンドで割り込み信号を送信します。

kill -2 bashPID

これにより、コマンド ラインの残りの部分の実行が停止します。

オプションとして、元のシェルでCtrl-と入力してz、実行中のプログラムを一時的にバックグラウンドで停止することができます。これにより、コマンド ラインの残りの部分が続行され、割り込み信号によってフラッシュされます。その後、フォアグラウンドで続行するかバックグラウンドで続行するかに応じて、fgまたは を使用して実行中のプログラムを再開できますbg

関連情報