誰でもctrl+ zとctrl+の違いを教えてもらえcますか?
私がターミナルにいるとき、両方の組み合わせは現在のプロセスを停止しますが、両者の違いは正確には何ですか?
誰でもctrl+ zとctrl+の違いを教えてもらえcますか?
私がターミナルにいるとき、両方の組み合わせは現在のプロセスを停止しますが、両者の違いは正確には何ですか?
回答:
エッジケースを片側に残す場合、違いは簡単です。Control+ Cながら、ほとんどすぐにアプリケーションを中断Control+ Z懸濁し、バックグラウンドにシャントにそれを。
シェルは、これらの組み合わせで基になるアプリケーションに異なる信号を送信します。
Control+ C(制御文字intr
)は、アプリケーションを中断するSIGINTを送信します。通常は中止しますが、これは決定するアプリケーション次第です。
Control+ Z(制御文字susp
)は、SIGTSTPをフォアグラウンドアプリケーションに送信し、事実上バックグラウンドに配置して、中断します。これは、必要なデータを取得するためにエディターのようなものから抜け出す必要がある場合に便利です。実行することでアプリケーションに戻ることができますfg
(または%x
にx
示されているジョブ番号はどこにありますかjobs
)。
これをテストするには、実行してnano TEST
からControl+ Zを押してから実行しps aux | grep TEST
ます。これにより、nano
プロセスがまだ実行中であることがわかります。
oli 3278 0.0 0.0 14492 3160 pts/4 T 13:59 0:00 nano TEST
さらに、(ステータス列にあるTから)プロセスが停止したことがわかります。まだ生きていますが、実行されていません...再開できます。
一部のアプリケーションは、スリープ中にタイムアウトする可能性のある進行中の外部プロセス(Web要求など)があるとクラッシュします。
bg
(の代わりにfg
)実行することもできます。アプリケーションを起動したときに使用したかのように、アプリケーションを起動したシェルとアプリケーション自体の両方を効果的に制御できます。これを開始するのを忘れたときに便利なことがよくあります:)&
&
fg
もう一度入力することでそのプロセスに戻ることができます!
ctrl c
またはを実行した後、どのプロセスグループがフォアグラウンドに戻る必要があるかをどのように知るのctrl z
ですか?デフォルトはSID(bash)ですか?
Control+ Zプロセスを中断(SIGTSTP
)およびControl+ Cプロセスを中断(SIGINT
)
http://en.wikipedia.org/wiki/Control-Z
Unixライクなシステムでは、Control + Zはプロセスを一時停止するキーシーケンスの最も一般的なデフォルトのキーボードマッピングです。
http://en.wikipedia.org/wiki/Control-C
POSIXシステムでは、シーケンスにより、アクティブなプログラムがSIGINTシグナルを受信します。プログラムがこの状態の処理方法を指定していない場合、プログラムは終了します。通常、SIGINTを処理するプログラムはそれ自体を終了するか、少なくとも内部で実行中のタスクを終了します。
Ctrl+ Cは、シグナルSIGINT
でプロセスを強制終了するために使用されます。つまり、丁寧な強制終了です。
Ctrl+ Z は、シグナルを送信することによりプロセスを一時停止するために使用されますSIGTSTP
。これはスリープシグナルのようなもので、元に戻すことができ、プロセスを再開できます。
ただし、プロセスが中断されるfg
と、bg
(フォアグラウンドで再開する)および(バックグラウンドで再開する)で再び再開できますが、強制終了されたプロセスを再開することはできません。これはCtrl+ CとCtrl+の使用の違いZです。
中断されたプロセスを表示するにはどうすればよいですか?
jobs
コマンドは、このような出力が得られます。
[1]- Stopped cat
[2]+ Stopped vi
バックグラウンドで一時停止中のプロセスを強制終了する方法は?
kill
コマンドを使用して:
kill %n
ここでn
、jobs
コマンドによって表示される番号です。私は猫を殺したいのであれば:kill %1
。
これは役立つはずです
Ctrl+ Zは、シグナルSIGSTOPを送信してプロセスを中断するために使用されます。シグナルSIGSTOPは、プログラムによってインターセプトできません。一方でCtrl+は、CシグナルSIGINTでプロセスを殺すために使用され、それがすべて終了し、終了する前に自己をクリーンアップ、またはすることはできませんので、プログラムによって傍受することができます。
SIGTSTP
プログラムがキャッチできるを送信します。プログラムを一時停止することができます4つの異なる信号が、ありますSIGSTOP
、SIGTSTP
、SIGTTIN
、SIGTTOU
。それらのうちのみSIGSTOP
をブロックすることはできません。他の3つは、さまざまな条件下でプロセスを停止するために端末によって使用されます。