回答:
Control+ Zは、シグナルを送信してプロセスを中断するために使用されます。シグナルSIGSTOP
は、プログラムによってインターセプトできません。一方でControl+はCシグナルでプロセスを殺すために使用されSIGINT
、それが終了する前に自己をクリーンアップすることができるようにプログラムによって傍受することができ、あるいは全く出ていません。
プロセスを中断すると、シェルに表示され、中断されたことを通知します。
[1]+ Stopped yes
ただし、強制終了すると、シェルプロンプトにドロップされる以外の確認は表示されません。プロセスを中断すると、それを使って派手なこともできます。たとえば、これを実行します:
fg
プログラムを一時停止すると、フォアグラウンドに戻ります。
そして、コマンドを実行する
bg
プログラムを一時停止すると、バックグラウンドで実行できます(ただし、プログラムの出力は引き続きTTYに送られます)。
中断されたプログラムを強制終了する場合、fg
最初に戻す必要はありません。次のコマンドを実行するだけです。
kill %1
複数の中断されたコマンドがある場合、実行中
jobs
次のようにそれらをリストします。
[1]- Stopped pianobar
[2]+ Stopped yes
使用して%#
、ここで、#
ジョブ番号(から角括弧内の1つであるjobs
出力)でbg
、fg
またはkill
、そのジョブにアクションを実行するために使用することができます。
amarok
run killall amarok
、または実行ps aux
可能ファイル名の横にあるプロセスIDを実行して検索し、実行しますkill {process id}
。
Ctrl + Zは、SIGTSTPを使用してプロセスを中断します。後で再開できます。Ctrl + Cは、SIGINTでプロセスを強制終了します。SIGINTは、ターゲットによって処理/無視されない限りプロセスを終了するため、再開できません。SIGSTOPもあります。SIGSTOPは送信kill()
でき、プロセスはインターセプトできません。SIGCONTは、プロセスを一時停止解除するSIGSTOPとSIGTSTPの両方に対応しています。
kill()
使用するSIGSTOP
と、グループに問題なく送信できます。
Ctrl + Zは、ジョブを停止(一時停止)します
Ctrl + Cはジョブを終了します
Ctrl + Cではプロセスを再開できませんが、Ctrl + Zではコマンドpromtで入力するだけでジョブを再開できます。
fg %1
複数のプロセスが一時停止している場合は、実行する必要があります
jobs
出力を確認し、適切な番号を選択して再開する
fg %3
リストの3番目のジョブを再開します。また、バックグラウンドでジョブを実行することもできます
bg %n
ここで、nはジョブ番号です。
stty
コマンドを使用して、どのキーがどのジョブを実行するかを変更できます。たとえばstty susp ^Z
またはstty intr ^C
。