私はMac OS X Terminalを使っています。そして私は使う Ctrl+Z または Ctrl+C いくつかのプログラムを停止します。しかし、私は彼らが正確に何をしているのかわからないことに気づきました。彼らとは何ですか、そしてそれらの違いは何ですか?
この質問は今週のスーパーユーザー質問でした。
詳しくは、2011年3月13日ブログ記事またはをお読みください。 ) 自分で送信してください今週の質問。
Control+Z プロセスにシグナルSIGSTOP
を送ることによってプロセスを中断するために使用されます。これはプログラムによってインターセプトすることはできません。しながら Control+C シグナルSIGINT
でプロセスを強制終了するために使用され、終了する前に自分自身をクリーンアップできるように、またはまったく終了しないようにプログラムによってインターセプトされる可能性があります。
プロセスを中断すると、シェルに表示され、中断されたことがわかります。
[1]+ Stopped yes
ただし、1つを殺しても、シェルプロンプトにドロップされる以外に確認は表示されません。プロセスを中断すると、それを使って空想のことをやることができます。例えば、これを実行する:
fg
プログラムが中断されていると、最前面に戻ります。
そしてコマンドを実行する
bg
プログラムを中断すると、バックグラウンドで実行することができます(ただし、プログラムの出力はTTYに送られます)。
中断しているプログラムを強制終了したい場合は、最初にfg
を付けて戻す必要はありません。次のコマンドを実行するだけです。
kill %1
中断されたコマンドが複数ある場合は、
jobs
このようにそれらをリストします:
[1]- Stopped pianobar
[2]+ Stopped yes
%#
をjobs
、bg
、またはfg
とともに使用する#
は、ジョブ番号(kill
の出力からの角括弧内の番号)で、そのジョブに対してアクションを実行するために使用できます。
Ctrl + ZはSIGTSTPでプロセスを中断します、後で再開することができます。 Ctrl + CはSIGINTでプロセスを強制終了します。これは、ターゲットによって処理または無視されない限りプロセスを終了させるため、再開することはできません。 kill()
によって送信することができ、プロセスが傍受することができないSIGSTOPもあります。 SIGCONTはSIGSTOPとSIGTSTPの両方に対応するもので、プロセスを中断しません。
Ctrl + Zでジョブを停止(一時停止)する
Ctrl + Cでジョブを終了する
ctrl + Cキーを押すとプロセスを再開できませんが、Ctrlキーを押しながらZキーを押すと、コマンドpromtを入力してジョブを再開できます。
fg %1
複数のプロセスを一時停止している場合は、やるべきです
jobs
出力を確認し、再開する適切な番号を選択します。
fg %3
リストの3番目のジョブを再開します。また、バックグラウンドでジョブを実行することもできます。
bg %n
nはジョブ番号です。
Cntrl + Z pause the currently running process.
そして
Cntrl + C simply terminates the running process.
Ctrl + Cキーを押すとプロセスを再開できません。 Cntrl + Zを使用している場合は、プロセスを再開できます
プロセスを再開するには、fg%1を使用してください。
CTRL+Z ジョブを停止(一時停止)します
CTRL+C ジョブを終了する
と CTRL+C プロセスを再開することはできませんが、 CTRL+Z プロンプトでコマンドを入力するだけでジョブを再開できます。
fg%1
複数のプロセスを一時停止している場合は、やるべきです
仕事
出力を見るために。
前の答えは正しいですが、何らかの理由でCtrl-Zはすべての子プロセスも中断しますが、killall -SIGSTOP ...は最前面(親)プロセスのみを中断し、子を好きなように実行します。