Ctrl-Cで実行中のジョブが強制終了されない場合の対処方法


98

時々、プロセスはCtrl- によって送信されたSIGINTシグナルCをBashで無視します。例えば、manそしてvi。実行中のプロセスを終了する方法についてグーグルやマニュアルを読みたくないと仮定すると、(端末を離れることなく)常に機能するキーシーケンスはありますか?

回答:


141

+でSIGQUITシグナルを送信します。Ctrl\

.. $ sleep 10
^\Quit

→これはと同等kill -3 pidです。ユーザー空間で実行されるプログラムは、sigquitを無視しません。

Magic SysRqキーボードショートカットのセットもあります。より興味深いものの1つはAlt+ SysRq+ kです。現在の仮想コンソール上のすべてのプロセスを強制終了します。ttyの1つが完全に完全に壊れている場合、これを使用して戻ることができます。X.orgを実行しているttyでは、容赦なくXを殺すために使用できます。

SysRqキーは、ほとんどのキーボードで、Printキーと同じです。私のノートブックでは、Fnキーを使用して呼び出すことができます。すなわち、Alt→Fn→Print→kの順になります。

基本的なプロセス管理のショートカットの一部を次に示します。

  • Ctrl+ Z:プロセスを一時停止します(さらにbg、バックグラウンドで再開し、fgフォアグラウンドに上げます)
  • Ctrl+ C:プロセスを今すぐシャットダウンするよう丁寧に依頼する
  • Ctrl+ \:現在フォアグラウンドにあるプロセスを容赦なく殺す
  • Alt+ SysRq+ s:データをディスクに書き込みます(重要なものを殺す前に常にこれを行います)
  • Alt+ SysRq+ sk:容赦なく特定の仮想コンソール上で現在のすべてのプロセスを強制終了
  • Alt+ SysRq+ sb:容赦なくアンマウントせずに再起動し、
  • Alt+ SysRq+ reisub:安全rは EBOOTのEの VEN iは、F Sの ystemでuは tterly Bの rokenは、

注意:Ctrl+ Z、とは対照的に、Ctrl+ CCtrl+ \、またのために働くmanviless、などが挙げられます。

疑わしい場合は、次の手順がほぼ常に機能します。

~$ sleep 10
^Z
[5]+  Stopped              sleep 10
~$ ps
  PID TTY          TIME CMD
 4804 pts/0    00:00:00 bash
 6207 pts/0    00:00:00 sleep
 6208 pts/0    00:00:00 ps
~$ kill -9 6207
[5]+  Killed                  sleep 10
~$ 

^ Zは、もちろんCtrl+ Zが押されたことを示します。


シェルとターミナルの詳細については、次の回答も参照してください。


3
「sleep 10」では動作しますが、「man」または「vi」では動作しません。明らかに、「kill -9 pid」は両方のプロセスを強制終了します。何か不足していますか?
オリビエラロンド

3
Ctrl + Zは、less、man、viなどと連携します。その後ps、を実行してプロセスIDを確認しkill pid、プログラムのその他のインスタンスを気にしない場合は、を使用してそれらを強制終了できますkillall vi。いずれにしても、Ctrl-Zは常に機能するようです。
ステファノパラッツォ

5
kill %%最後のジョブを強制終了することもできますkill %5。5は、に表示されているジョブ番号jobsです。
オリビエラロンド

2
Ctrl- \ は、SIGKILLではなくSIGQUITを送信します。SIGQUITとSIGKILLにはいくつかの重要な違いがあります。en.wikipedia.org/wiki/SIGQUIT
ジュリアーノ

4
キーボードレイアウトにキーがないときにCtrl+ を押すにはどうすればよいですか?\ \
フォービン


8

時々、CTRL+C間違ったプログラムまたは入力チャンネルに送信されます。これはvi、パイプ出力を伴うコマンド、ループを含む複雑なbashコマンドなど、などのエディターで特に一般的です。

簡単で迅速な解決策は、ジョブを一時停止し、CTRL+Zジョブ番号でジョブを強制終了することです:kill %1またはkill -9 %1など。


6
  • 次のいずれかを試してください。

    Ctrl+4

    Ctrl+\


  • または:

    Ctrl+ Zその後、実行します:

    kill %1

どこ%1を押したときに返されたジョブの数はControl- Zです。追加-9して強制終了します。


:あなたがテキストコンソールにいるとき、あなたはまた、試みることができますCtrl- SysRq。カーネルはプロセスを強制終了します。

またはSysRq- k、現在の仮想コンソール上のすべてのプロセスを強制終了します(Xおよびsvgalibプログラムも強制終了できます)。

注:マジックSysRqキーを使用して、フリーズされたグラフィカルプログラムを強制終了すると、プログラムにテキストモードを復元する機会がなくなります。これにより、すべてが読めなくなる可能性があります。

参照:Magic SysRqキーとそのコマンドの組み合わせ。


3

終了するには男性、使用q のままにするにはviを使用します:q


0

コピーのショートカットを次から変更した可能性があります。

CTRL+ SHIFT+C

CTRL+C

そのため、プロセスを強制終了しようとすると、CTRL+ Cは機能しません。

コピーショートカットをCTRL+ SHIFT+ に置き換えてみてくださいC


1
コピーのショートカットを変更することは、プロセスを強制終了することとは無関係です!
SUB

少し答えを広げていただけますか?ステップバイステップが理想的であり、主にOPがあなたの提案に沿って従うことができます。:)
ThatGuy

これは実際に私を助けました。MacOSでCTRL + Cを使用していましたが、UbuntuコマンドがCTRL + SHIFT + Cであることに気付きませんでした
ラットスキン

-1

試してくださいCtrl+ Alt+Backspace

ubuntu 10.04を使用している場合、このキーを有効にしたいです。

有効にするにはControl- Alt-Backspace

システムに移動->設定->キーボード

[ レイアウト]タブを選択し、[ レイアウトオプション]をクリックします。

キーシーケンスを選択してXサーバーを強制終了し、Control+ Alt+Backspaceを有効にします

注意:

押すと、Ctrl- Alt- BackspaceあなたのXサーバを再起動します。


質問を編集して、端末内からプロセスを強制終了することを明確にしました。
オリビエラロンド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.