GUI uygulamalarını terminal üzerinden nasıl yumuşakça öldürürüm?


22

Uygulama ekranına grafiksel olarak erişilemeyen bir GUI uygulamasını " lütfen şimdi kendinizden çıkın " yöntemiyle kapatmanın bir yolu var mı ?

Örneğin, Gnome / X ekranı siyaha çarptığında, tty2'ye geçmek ve firefox gibi uygulamaları yapılandırmalarını kaydetmelerini sağlayacak şekilde kapatmak istiyorum. En iyi kullanıcı sorguları olmadan.

Yanıtlar:


19

Genellikle, bir uygulamayı (grafiksel arayüzlü veya grafiksel olmayan) kapatmak için SIGHUP'ı kullanabilirsiniz.

kill -HUP <application_pid>

EDITED : başka bilgi eklendi

SIGHUP'ın yönetilme şekli uygulamaya bağlıdır, bu nedenle Dave'in belirttiği gibi, bu sinyalin maskelenmiş veya ele alınmış olabilir. Bununla birlikte, tüm etkileşimli uygulamaların tümü bir SIGHUP ile incelikle çıkar.

Diğer taraftan, bu şemayı takip ettiğimi itiraf etmeliyim:

kill -HUP <application_pid>
# check if application is still running
kill -INT <application_pid>
# check if application is still running
kill -KILL <application_pid>

Açıkçası son komut o kadar "dost" değil.


3
Uygulamanın PID'sini bilmiyorsanız, pkillbunun yerine yürütülebilir dosyanın adını belirtmek için kullanabilirsiniz . Örneğin:pkill -HUP firefox-bin
Caleb

@Dave de: İlginç, benzer ama geri döndürülmüş bir düzen öneren bu konuyu buldum : TERM-> INT-> HUP (yaşlılığa dikkat edin). Belki HILL-> INT-> TERM'i aklımda tutacağım, çünkü KILL bana arkadaşça gelmiyor. Herkese teşekkürler.
jfk

@Caleb, orada aynı adı taşıyan birden fazla işlemin olduğu yerlerde dikkatli olun: pkillhepsini öldürür. Örneğin, bazı arka plan işlemlerini yapmak için bu birkaç kez çalıştırın: sed "s/Woo/woo/" < /dev/urandom >> /dev/null &. Öyleyse yap pkill -HUP sed. Başladığınız tüm sed örneklerini ve faydalı işler yapan diğer örnekleri öldüreceksiniz .
ahcox

@Caleb dahası, pkillsen varsa örneğin: Ayrıca beklemeyin bazı uygulamalar öldürecek chromiumçalışan ve adlı bir program öldürmek istiyorum rom, pkillmutlulukla çekeceğiz chromiumaşağı. killallYalnızca tam adla eşleşecek olan daha iyi kullanım (Solaris'te değil, tüm işlemleri tam anlamıyla öldürdüğü yerlerde ).
Ruslan

@Ruslan Veya pkill -xkısmi bir eşleşme yerine tam bir eşleşme elde etmek için kullanın . Şahsen yazarak tasarruf için kısmi eşleştirmeden faydalanıyorum, ancak aracın ne yaptığını bilmek zorundasınız. Evet, varsayılan olarak kısmi dizelerle eşleşir. Bir başka kullanışlı seçenek ise -fsadece komut satırı yerine tam komut satırı ile eşleşmektir $0.
Caleb

5

Denemek isteyebilirsiniz:

kill -TERM <pid>

veya

kill -TERM `pidof <application_name>`

En azından bazı sistemlerde, sistem kapatılırken, tüm işlemlere KILL (9) sinyali gönderilmeden önce TERM (15) sinyali gönderilir. HUP, genellikle uygulamanın yapılandırmalarını yeniden yüklemesine neden olur, ancak süreç bazında farklı olabilir.


2

Bir uygulamaya, konfigürasyonundan çıkmasını ve kaydetmesini söylemenin genel bir yolu yoktur. Belirli bir çerçeve kullanarak uygulamaları bildirmenin yolları olabilir, örneğin dcop kfoo MainApplication-Interface quitbazı KDE 3 uygulamaları için. Uygulamanın sizden onay isteyen bir iletişim kutusu gösterebileceğini unutmayın.

X ekranı kullanılamaz hale gelirse, X sunucusunu öldürün. Ctrl+ Alt+ BackSpaceTuşlarına basın ; Bu işe yaramazsa, X sunucu işlemini ile birlikte kaldırın sudo pkill -x Xorg. X sunucusu öldüğünde, tüm X uygulamalarına bildirilir ve incelikle çıkmaya çalışırlar (her şeyi kurtarabileceklerinin garantisi yoktur, ancak bu sizin en iyi bahsinizdir).


Uygulamalar bildirilecek mi, yoksa sadece öldürülecek mi bilmiyordum; ve anahtar combo Fedora'da varsayılan olarak etkin değildir ..... Şimdi komut satırından nasıl öldüreceğimi biliyorum!
jfk

1

@ Andcoz'ın cevabına benzer, uygulamanın PID'sini bilmiyorsanız (bunu kalpten bilmediğinizi farzediyorum), şunu deneyin:

kill -HUP `pidof [application_name]`

2
Bir adım öteye git ve dene pkill -HUP [application_name]:)
Caleb

Az önce pkill ve pgrep öğrendim: D
jfk

1

Düşünmek isteyebileceğiniz diğer iki komut wmctrl -cve xdotool windowkill. windowkillSonunda tam olarak neyin peşinde olup olmadığından emin değilim , eğer windowdeleteyama ile ilgilenmiyorsanız .

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.