GNU/Linux >> Znalost Linux >  >> Linux

Co dělat, když Ctrl + C nemůže zabít proces?

Abychom pochopili problém, proč Ctrl + C nefunguje, je velmi užitečné pochopit, co se stane, když jej stisknete:

Většina shellů váže Ctrl + C k "odeslání signálu SIGINT do programu, který aktuálně běží v popředí". Můžete si přečíst o různých signálech přes man signál:

 SIGINT        2       Term    Interrupt from keyboard

Programy mohou tento signál ignorovat, stejně jako mohou ignorovat SIGTSTP:

 SIGTSTP   18,20,24    Stop    Stop typed at tty

(Což dělá většina shellů, když stisknete Ctrl + Z , a proto není zaručeno, že bude fungovat.)

Existují některé signály, které proces nemůže ignorovat:SIGKILL, SIGSTOP a některé další. Tyto signály můžete odeslat pomocí příkazu kill. Chcete-li tedy zabít proces zavěšení / zombie, stačí najít ID procesu (PID). Použijte například pgrep nebo ps a poté kill to:

 % kill -9 PID

Pokud Ctrl +C (SIGINT) nefunguje, zkuste Ctrl +\ (SIGQUIT). Pak zkuste Ctrl +Z (SIGTSTP). Pokud vás to vrátí do příkazového řádku, proveďte kill na ID procesu. (Toto je výchozí signál SIGTERM, který můžete zadat pomocí kill -TERM . V některých shellech možná budete moci použít %1 odkazovat na PID.) Pokud to nefunguje, přejděte na jiný terminál nebo relaci SSH a proveďte kill nebo kill -TERM na ID procesu. Pouze jako poslední možnost měli byste udělat kill -KILL , aka kill -9 , protože nedává procesu žádnou šanci na čisté přerušení, synchronizaci otevřených souborů, odstranění dočasných souborů, uzavření síťových připojení atd.


Podívejte se také na tento odkaz.

Ctrl +Z :pozastavení procesu.

Ctrl +C :zdvořile požádejte proces, aby se nyní vypnul.

Ctrl +\ :nemilosrdně zabijte proces, který je aktuálně v popředí


Linux
  1. Co jsou zombie procesy a jak najít a zabít zombie procesy?

  2. Co když ‚kill -9‘ nefunguje?

  3. Procesní potomci?

  1. Co dělá program, když je odeslán signál Sigkill?

  2. Co je nepřerušitelný proces?

  3. Co zabilo můj proces a proč?

  1. Co se stane, když se vlákno rozvětvuje?

  2. Jaký je účinek CTRL + Z na aplikaci unix\Linux

  3. Proč nemohu tento proces v Linuxu zabít?