Ctrl の理由の問題を理解するには + C は機能しません。これを押すと何が起こるかを理解しておくと非常に役立ちます:
ほとんどのシェルは Ctrl をバインドします + C 「現在フォアグラウンドで実行されているプログラムに SIGINT シグナルを送信する」。 man シグナルを介してさまざまなシグナルについて読むことができます:
SIGINT 2 Term Interrupt from keyboard
SIGTSTP も無視できるため、プログラムはそのシグナルを無視できます。
SIGTSTP 18,20,24 Stop Stop typed at tty
(これは、Ctrl を押したときにほとんどのシェルが行うことです) + Z 、これが動作が保証されていない理由です。)
プロセスが無視できないシグナルがいくつかあります:SIGKILL、SIGSTOP などです。これらのシグナルは、kill コマンドを介して送信できます。したがって、ハングアップ/ゾンビ化プロセスを強制終了するには、プロセス ID (PID) を見つけるだけです。たとえば、pgrep
を使用します または ps
そして kill
それ:
% kill -9 PID
Ctrl の場合 +C (SIGINT) が機能しません。Ctrl を試してください +\ (SIGQUIT)。次に Ctrl を試してください +Z (SIGTSTP)。シェル プロンプトに戻る場合は、kill
を実行します。 プロセス ID で。 (これはデフォルトで SIGTERM シグナルになり、kill -TERM
で指定できます .一部のシェルでは、 %1
を使用できる場合があります PID を参照してください。) それが機能しない場合は、別の端末または SSH セッションに移動して kill
を実行します。 または kill -TERM
プロセス ID で。 最後の手段としてのみ kill -KILL
をするべきですか 、別名 kill -9
、プロセスを正常に中止したり、開いているファイルを同期したり、一時ファイルを削除したり、ネットワーク接続を閉じたりする機会が与えられないためです。
こちらのリンクもご覧ください。
Ctrl +Z :プロセスを一時停止します。
Ctrl +C :プロセスを今すぐシャットダウンするよう丁寧に依頼してください。
Ctrl +\ :現在フォアグラウンドにあるプロセスを容赦なく強制終了します