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


98

Bazen, süreçler tarafından gönderilen SIGINT sinyali görmezden Ctrl- CBash. Mesela manve vi. Yürütme işleminden nasıl çıkılacağı hakkında google veya kılavuz okumak istemediğinizi varsayarsak, (terminalden çıkmadan) her zaman çalışacak herhangi bir anahtar sıra var mı?

Yanıtlar:


141

SIGQUIT sinyalini Ctrl+ ile gönderin \.

.. $ sleep 10
^\Quit

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

Ayrıca bir grup 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 kırılmışsa, geri dönmek için bu 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, sırasıyla → Fn → Yazdır → k.

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

  • Ctrl+ Z: Bir işlemi duraklatır (artı bgarka planda devam fgetmek, ön plana çıkarmak için)
  • Ctrl+ C: kibarca sürecin şimdi kapatılmasını isteyin
  • Ctrl+ \: şu anda ön planda olan işlemi acımasızca öldürmek
  • Alt+ SysRq+ s: Diske veri yaz (her zaman önemli bir şeyi öldürmeden önce bunu yap)
  • Alt+ SysRq+ s, k: Acımasızca verili bir sanal konsol üzerindeki tüm güncel süreçleri öldürmek
  • Alt+ SysRq+ s, b: Acımasızca unmounting olmadan yeniden başlatın
  • Alt+ SysRq+ r, e, i, s, u, b: Güvenli r eboot e ven i f s istem olduğu u tterly b roken,

Not: Ctrl+ Z, aksine Ctrl+ Cve Ctrl+ \, aynı zamanda çalışır man, vi, lessve benzeri.

Şü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 elbette Ctrl+ tuşlarına Zbasıldığını gösterir.


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


3
"Uyku 10" için çalışıyor ama yine de "insan" veya "vi" için çalışmıyor. Açıkçası "öldür -9 pid" her iki işlemi de öldürmek için çalışıyor. Bir şey mi eksik?
Olivier Lalonde

3
Ctrl + Z daha az, insan, vi gibi şeylerle çalışır. Daha sonra ps, işlem kimliklerini görmek ve bunları kullanarak kill pidprogramın diğer örneklerini umursamıyorsanız öldürerek onları öldürebilirsiniz killall vi. Her durumda, Ctrl-Z her zaman iş gibi görünüyor.
Stefano Palazzo

5
Ayrıca kill %%son işi ve kill %5burada gösterilen iş numarasının 5 olduğu yeri öldürmek için de yapabilirsiniz jobs.
Olivier Lalonde

2
Ctrl- \ bir SIGKIT gönderir , SIGKILL göndermez. SIGQUIT ve SIGKILL arasında bazı önemli farklılıklar vardır. en.wikipedia.org/wiki/SIGQUIT
Juliano

4
Klavye düzenimde tuş olmadığında Ctrl+ 'ya nasıl basabilirim ? \ \
Forivin


8

Bazen CTRL+Cyanlış programa veya giriş kanalına gönderiliyor. Bu özellikle vi, boru çıkışlı komutlarda, döngü içeren karmaşık bash komutlarında vb. Editörlerde yaygındır .

Basit ve hızlı bir çözüm, işi askıya almak CTRL+Zve daha sonra iş numarasına göre öldürmektir: kill %1veya kill -9 %1, vb.


6
  • Bunlardan birini deneyin:

    Ctrl+4

    Ctrl+\


  • Veya:

    Ctrl+ Zve sonra çalıştır:

    kill %1

Nerede %1Eğer basıldığında iade edildi işin sayısıdır Control- Z. -9Öldürmeye zorlamak için ekleyin .


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

Veya SysRq- kgeçerli sanal konsoldaki tüm işlemleri sonlandır (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ı.


3

Dan çıkmak için adam kullanmak q çıkmak için vi kullanımını:q


0

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.

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


1
Kopyalama kısayolunu değiştirmek, bir işlemi sonlandırmaya zorlamak için anlamsızdır!
SuB

Lütfen cevabınızı biraz genişletebilir misiniz? Adım adım ideal olacaktır, öncelikle OP öneriyle birlikte takip edebilir. :)
ThatGuy

Bu aslında bana yardımcı oldu.
MacOS'ta

-1

Ctrl+ Alt+ ' Yı deneBackspace

Eğer ubuntu 10.04 kullanıyorsanız, bu anahtarın çalışmasını sağlamak istersiniz.

Etkinleştirmek için Control- Alt-Backspace

Goto System -> Tercihler -> Klavye

Düzenler sekmesini seçin ve Düzen Seçeneklerine tıklayın .

X sunucusunu öldürmek ve Control+ Alt+ tuşlarınıBackspace etkinleştirmek için Anahtar sırası'nı seçin .

Not:

Ctrl- Alt- tuşuna basılması BackspaceX sunucunuzu yeniden başlatır.


Sorunu açıklığa kavuşturmak için düzenlediğim işlemi terminalin içinden öldürmek istiyorum.
Olivier Lalonde
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.