it-swarm-tr.com

Ctrl-C çalışan işi öldürmediğinde ne yapmalı?

Bazen, işlemler tarafından gönderilen SIGINT sinyalini yoksayar Ctrl-C Bash Örneğin, man ve vi. Yürütme işleminden nasıl çıkılacağı hakkında google veya kılavuz okumak istemediğinizi varsayarak, her zaman çalışacak (terminalden çıkmadan) çalışacak herhangi bir anahtar sıra var mı?

98
Olivier Lalonde

SIGQUIT sinyalini ile gönder Ctrl+\.

.. $ sleep 10
^\Quit

→ Bu, kill -3 pid ile eşdeğerdir. Kullanıcı alanında çalışan programlar sigquit'i dikkate almaz.

Ayrıca bir dizi Magic SysRq klavye kısayolu var. En ilginç olanlardan biri şudur: Alt+SysRq+k. Geçerli sanal konsoldaki her işlemi öldürür. Tty'lerinizden biri tamamen ve tamamen bozulursa, bu geri gitmek için kullanılabilir. X.org çalışan tty'de, merhamet olmadan X'i öldürmek için kullanılabilir.

SysRq tuşu, çoğu klavyede, Print Key ile aynıdır. Not defterimde Fn tuşunu kullanarak çağrılabilir; Yani Alt → Fn → Yazdır → k bu sırada.

Temel işlem yönetimi kısayollarından bazıları şunlardır:

  • Ctrl+Z: bir işlemi duraklat (arka planda devam etmek için artı bg, ön plana çıkarmak için fg]
  • Ctrl+C: kibarca sürecin şimdi kapanmasını isteyin
  • Ctrl+\: şu anda ön planda olan süreci acımasızca öldürmek
  • Alt+SysRq+s: Diske veri yazın (her zaman önemli bir şeyi öldürmeden önce bunu yapın)
  • Alt+SysRq+sk: verilen sanal konsoldaki tüm mevcut işlemleri acımasızca öldür
  • Alt+SysRq+sb: acımasızca yeniden başlatmadan yeniden başlat,
  • Alt+SysRq+reisub: Güvenli bir şekilde reboot even bensöyle utterly broken,

Not: Ctrl+Z, kıyasla Ctrl+C ve Ctrl+\, ayrıca man, vi, less ve benzerleri için de geçerlidir.

Şüphe edildiğinde, kuşatma prosedürü hemen hemen her zaman işe yarar:

~$ 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 tabii ki gösterir Ctrl+Z basıldı.


Kabuklar ve Terminallere daha ayrıntılı bir bakış için yanıtlarıma bakın:

139
Stefano Palazzo

Deneyebilirsin Ctrl+\

13
Benjamin

Bazen CTRL+C yanlış programa veya giriş kanalına gönderiliyor. Bu özellikle vi gibi editörlerde, boru çıkışlı komutlarda, döngü içeren karmaşık bash komutlarında vs.

İşi askıya almak için basit ve hızlı bir çözüm CTRL+Z ve sonra iş numarasına göre öldürün: kill %1 veya kill -9 %1, vb.

8
tylerl
  • Bunlardan birini deneyin:

    Ctrl+4

    Ctrl+\


  • Veya:

    Ctrl+Z ve sonra çalıştırın:

    kill %1

%1, basıldığında döndürülen işin sayısıdır. Control-Z. Öldürmeye zorlamak için -9 ekleyin.


Metin konsolundayken şunları da deneyebilirsiniz: Ctrl-SysRq. Çekirdek süreci öldürmelidir.

Veya SysRq-k, geçerli sanal konsoldaki tüm işlemleri sonlandırın (X ve svgalib programlarını da öldürebilir).

Not: Sihirli SysRq tuşları, donmuş bir grafik programını öldürmek için kullanıldığında, programın metin modunu geri yükleme şansı yoktur. Bu her şeyi okunamaz hale getirebilir.

Bakınız: Magic SysRq tuşu ve komut kombinasyonları.

6
kenorb

Çıkmak için adam, q kullanın. Çıkmak için vi kullanın :q

3
antivirtel

Kopya kısayolunu şu konumdan değiştirmiş olabilirsiniz:

CTRL+SHIFT+C

Için

CTRL+C

Bu şekilde, bir süreci öldürmeye çalıştığınızda, CTRL+C çalışmıyor.

Kopyala kısayolunu değiştirmeyi deneyin. CTRL+SHIFT+C.

0
Minter