Linux: Bir programı komut satırı ile kapatın (öldürmeyin)


21

Bazı uygulamalar yalnızca bir çalışan örneğe izin verir (aynı çalışma alanını kullanmak istiyorsanız eclipse gibi). Başka bir yerden giriş yaparsam, daha önce başka bir yerden giriş yaptığımda açık olan uygulamayı öldürmek / kapatmak zorundayım.

Çalışan işlemi öldürmek için her zaman kill komutunu kullanırım. Ancak, bir işlemi öldürürseniz, ileride kullanım için yararlı olan bazı durumlar kaydedilmeyebilir. Ancak, örneğin, kapat düğmesine tıklayarak düzgün bir şekilde "kapatırsanız", durumları düzgün şekilde kaydeder.

Bir uygulamayı komut satırından düzgün bir şekilde "kapatmanın" bir yolu var mı? Bunun uygulamalardan farklı olabileceğini biliyorum, bu yüzden biraz daha genel olalım: çalışan başka bir uygulamaya nasıl sinyal gönderilir ve bu sinyal tıpkı üst çubuktaki "kapat" düğmesine tıklıyormuş gibi çalışır?


2
Masaüstüne VNC ile uzaktan erişip grafiksel olarak yakın tıklamanın çok fazla yük olduğunu varsaymalıyız.
Brian Swift

Yanıtlar:


33

Varsayılan olarak, kill komutu SIGTERMçalışan işleme (sonlandırma sinyali) gönderir . SIGKILLSüreci zorla yanıt verme şansı olmadan öldürecek olanın aksine , SIGTERMsinyal süreç tarafından kesilebilir ve zarif bir şekilde sonlandırılmasına izin verilir. Aslında olsun ya da olmasın gelmez incelikle sonlandırmak sürecinin kendisi tamamen bağlıdır; kendini kolayca öldürebilir veya sinyali tamamen göz ardı edebilir.

SIGTERMKomut satırında açıkça belirterek başka bir sinyal yerine gönderdiğinizden emin olabilirsiniz :

kill -s TERM <pid>

1
Evet, OP'nin öncülü yanlış. killKomut bir kapama çalışır. Bu durumda uygulama temiz kapanmazsa, bozuktur. (Ve başvuruların büyük çoğunluğu bozulmamıştır.)
David Schwartz

2
Firefox (kırık) gibi görünüyor. Çalıştırırsam kill -s TERM <firefox-pid>, zarif bir şekilde kapanmaz ve tekrar başlattığımda, çökmüş oturumu kurtarmak isteyip istemediğimi sorar. : iç çekiş:
Wilson F

6

TERM belirtmek için kullanmak pkillyerine killsözdiziminin şöyle olduğuna dikkat edin:

pkill -TERM <process-name>

pkill tıpkı kill gibidir, ancak id yerine işlem adını kullanabilirsiniz. man pkill

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.