Kaçak bir kedi nasıl öldürülür?


128

Çoğu zaman yanlışlıkla catbirkaç bin satıra kadar içeriğe sahip dosyalarda bu komutu yanlışlıkla çalıştırıyorum .

catKomutu Ctrl+ Cveya Ctrl+ ile öldürmeye çalışıyorum Z, ancak her ikisi de yalnızca catterminalde toplam çıktının görüntülenmesinden sonra etkili olur , bu yüzden cattamamen çalışana kadar beklemem gerekir .

Beklemekten kaçınan daha iyi bir çözüm var mı? Çünkü bazen dosyalar 100 MB boyutundadır ve onu beklemek rahatsız edicidir.

Ben kullanıyorum tcsh.


14
Daha çok, daha az, kuyruk gibi baş komutları kullanmak, kedinin ilginç bir alternatifi olabilir. (tabii ki bu bir cevap değil ...)
tonioc 11

25
Bu şimdiye kadar okuduğum en büyük soru başlığıydı. Sorunun bağlantısının UL için olduğunu görene kadar, kaçınılmaz bir kediyi öldürmek için yardıma ihtiyacınız olduğunu düşündüm.
Lenz

5
Başka bir SE sitesinden kenar çubuğu sorusunda çifte alım mı Sorunun yanında "UL" logosunu görmek çok rahatladı . Boş ver, devam et. (genellikle, bağlam dışı soru başlıklarına
benzeyen görünüme sahip olan Arquade'dir

12
Bu curiosityemri
denerdim

4
alias curiosity='sudo killall cat'
Cas

Yanıtlar:


76

Söz konusu dosya (lar) gerçekten çok fazla veri içeriyorsa, sinyal göndermeden catönce bu sinyali alabilir . Gerçekten gözlemlediğiniz şey terminalinizin sonlu hızı - catverileri terminale gönderir ve terminalin hepsini görüntülemesi biraz zaman alır.

Unutmayın, genellikle her çıkış satırı için tüm çıkış penceresinin bir şekilde yeniden çizilmesi gerekir (örn. Pencerenin içeriğini bir satır yukarı kaydırın ve alt satırdaki bir sonraki satırı yazdırın). Bunu daha kolay yapmak için daha hızlı yapmak için teknikler ve algoritmalar olsa da, biraz zaman alıyor.

Bu nedenle, çıkıştan olabildiğince çabuk kurtulmak istiyorsanız , terminal penceresini gizleyin , çünkü genellikle gerçek bir yeniden çizim gerçekleştirilmez. Grafiksel ortamda bu, pencereyi küçültmek veya farklı bir sanal masaüstüne geçmek anlamına gelebilir, Linux sanal konsolunda başka bir pencereye (( Ctrl+) Alt+ ) geçin .Fx

Ayrıca, bunu yavaş bir ağ bağlantısı (örneğin bir GSM bağlantısı üzerinden SSH) üzerinden geçirirseniz cat, sinyalin ölümüne neden olmadan önce çok daha az çıktı göreceğinizi , çünkü terminalin hızının artık darboğaz olmayacağını unutmayın. .


6
Verilerin yavaş bir SSH borusundan aşağı inmesini bekliyorsanız, bağlantıyı kapatmak için OpenSSH çıkış sırasını kullanabilirsiniz. Yeni bir satıra, ~?kullanılabilir seçenekleri görmek için yazın ( ~.kapanır).
RJHunter

11
Ayrıca gönderilen Ctrl + S ile çıkışı durdurmayı deneyin tty-stop-output. Daha sonra Ctrl + C gönderebilirsiniz. Çıkışı devam ettirmek için, Ctrl + Q ... tuşlarına basın
Martin Tournoij

1
@Carpetsmoker Ubuntu 14.04 + terminatör + zsh üzerindeki metin akışını durdurmadığımı test etti.
muru

@muru Teşekkürler. Test etmeye çalıştım, ancak sorunu yeniden oluşturamadım (sistemim çok hızlı, öyle görünüyordu veya belki de yeterince denemedim).
Martin Tournoij

4
@Carpetsmoker Korkarım yazılım akış kontrolü (ki bu Ctrl + S'dir) bu durumda (hızlı bir terminal bağlantısının) bu kadar yardımcı olmaz - veriler zaten terminal tampon belleğindedir ve terminalin işlenmesini bekler. Bu nedenle, Ctrl + S, uygulamaya daha fazla veri göndermeyi durdurmasını söyleyecektir , ancak daha önce gönderilenlerin görüntülenmesi gerekir.
Peterph

4

Terminal Kurulumu

Bunun, herhangi bir tamponlama sorunundan ziyade, terminalin kurulma yöntemiyle ilgili olduğunu düşünüyorum. Çıktısını kontrol stty -a | grep intrEğer olması gereken, intr = ^C;eğer çıkış hattı üzerinde Ctrl- Cetkinleştirilir tty/ ' pty. Değilse, stty intr ^Cetkinleştirmek için kullanabilirsiniz . Çizgiyi kendinize ekleyin .tcshrcveya .loginkalıcı hale getirmek için (veya ilk etapta değiştiren çizgiyi silin!).

Başarısız Ctrl- C, ayrıca - SIGQUITile göndermeyi de deneyebilirsiniz . Bu işe yaramazsa, düzgün kurulup kurulmadığını tekrar kontrol edin .Ctrl\stty -a | grep quit

Terminal Emulator Kurulumu

Ayrıca terminal emülatörünüzün ayarlarını da kontrol edin (eğer kullanıyorsanız), bu seviyede ayarlanmış bir kısayol olabilir (belki kopya için veya başka bir şey için) ve Ctrl- seviyeye Culaşmaz pty. Masaüstü ortamınızda veya Pencere sisteminizde başka bir yere de kısayol ayarlanmış olabilir.

Bir terminal emülatörü kullanıyorsanız Linux'ta iyi bir test yapmak, bir Linux konsoluna ( Ctrl- Alt- F1) geçmek , oraya giriş yapmak ve aynı davranışın olup olmadığını görmek. Öyleyse, bu problemin Windows sisteminizde veya terminal emülatörünüzde bulunduğunu gösterir.

Bu veriler arasında gecikme ile ilgili bir sorun okunurken olabilir ptyönerdiği gibi cihaz peterph . Bu durumda ve aslında veri görüntülenmesi için dakika beklemek zorunda yoksa, o zaman mutlaka terminal emülatörü tamponlamadır yolu çok fazla veri (ya da PC çok yavaş). Cevap, terminal emülatör ayarlarınızda bu tampon boyutunu azaltmanın bir yolunu bulmak veya farklı bir tane kullanmak olacaktır.

Ekstra İpucu

Eklemeye değer başka bir şey; catYanlışlıkla catikili bir dosya oluşturduğumda genellikle kaçak durumda olurum . Bunun diğer bir etkisi de terminal ayarlarınızı bozmak olabilir (eğer ikili veri çoğu zaman yaptığı çeşitli terminal kaçış kodlarıyla eşleşirse). Eğer tput(genellikle varsayılan olarak) yüklenir, aşağıdaki komutla yeniden başlatmak zorunda önleyebilirsiniz:

tput reset

3

Bu ne için tmuxseçenek c0-change-intervalve c0-change-triggertasarlanmış. Yine de devam ettirilebilir oturum için bir ekran yöneticisi kullanmanız gerekir.


1

Ctrl- Oseçenek 110 baud günlerden beri Unix olmuştur. Kaçak cat komutları, yavaş çıkış cihazına uzun bir ASCII dosyası atıldığında ve dosyanın tamamı cihaz sürücüsü çıkış tamponuna yerleştirildiğinde her zaman bir sorun olmuştur. Ctrl- Otampon floş başlayacak ve bir takip Ctrl- Okedi normal hızda okunabilir böylece floş açıp kapatmak olacaktır. Ctrl- Ogirildi ve tüm dosya temizlendi ve hemen bir komut istemi döndürdü.

Linux aygıt sürücüsü kodlayıcılarının bu özelliği eklemeye devam etme gereği duyup duymadığı bilinmemektedir. Bu özellik, Ctrl- Sve Ctrl- Qyalnızca uygulanabileceği aygıt sürücüsü düzeyinde eklenmiştir . Bunu, çok sayıda kontrol baskısı ile büyük hata ayıklama işlemleri yapmak için kullandım ve sonra görmem gereken yere kaydırdım.


Ctrl-O, en azından RHEL veya Ubuntu sunucusunda değil, modern Linux'larda uygulanacak gibi görünmüyor.
dotancohen

-1

Bash kullanırken, Ctrl+ işaretini kullanarak işi askıya alabilir Zve sonra PID'yi kullanarak veya https://stackoverflow.com/questions/1624691/linux-kill-background-task (ör. Kill -9 %%)


3
ama kullanıyorum tcshve Ctrl + Z çalışmıyor ... zaten söz konusu olduğunu belirtti.
JigarGandhi

evet, üzgünüm, gönderinizde Ctrl + Z'yi denediğinizi okumadım ve yanlış bir şekilde Ctrl + Z'nin uygulama tarafından kullanılan Ctrl + C'nin aksine kabuk tarafından ele alındığını varsaydım. Bu yüzden Ctrl + Z'nin anında çalıştığını ve Ctrl + C'nin çalışmadığını düşündüm.
Jannis,

-1

Yeni bir konsolu açmak, örneğin konsol simgesine tıklayarak veya Ctrl+ Alt+ tuşlarına basarak F2. Gir, gir

killall -9 cat

ve eski bir NFS kilidi veya "kesintisiz uyku" durumu yoksa (kedi zaman aşımı ayarı olmayan kötü bir sektörde okuyorsanız) kedi öldürülecektir.


10
Sorun, ölmeden önce terminale catne catyazdığı ve henüz terminal emülatörü tarafından henüz işlenmemiş veya görüntülenmemiş olması (ve pty sürücüsünün içinde (Linux'ta büyük bir 64kiB civarında) tamponda oturuyor) ile ilgili değil. .
Stéphane Chazelas

Ardından, çok fazla tampon bırakacak olan echo 3> / proc / sys / vm / drop_caches komutunu deneyin.
Thorsten Staerk

7
Hayır, bu yalnızca önbelleğe alınmış verileri düşürür ve asla işlevselliği etkileyeceği gibi şeyler olmaz!
Stéphane Chazelas

4
@ThorstenStaerk drop_caches, çekirdek tarafından önbellek olarak kullanılan sayfaları kontrol eder (genellikle bir dosya sistemi için), terminallerin iç arabellekleri, ağ sürücüleri vb. .
Peterph

1
Olmaz killall -9 catda yine de diğer süreç konuda iyi şeyler yapıyor olabilir başka kedi örneklerini öldürmek?
Joe,

-7

Bununla deneyebilirsin

Ekran kullanımını sıfırla -ctrlj

Eğer kedi hala çalışıyorsa, o zaman yeni bir terminal aç ve bunu çalıştır pkill -9 -f cat"Bu, tüm kedi işlemlerini öldürür."


Ctrl + J çalışmıyor
JigarGandhi

26
'-f cat' ile pkill oldukça tehlikelidir, çünkü -f tüm komut satırlarında 'cat' modelini arayacaktır, bu da muhtemeldir ve istenmeyen sonuçlara yol
açacaktır

2
Örneğin, pkill -f catmasaüstümde Xfce4'ün görev çubuğunun sistem tepsisi alanını öldürür.
Mark
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.