Linux'ta Bir İşlem Nasıl Öldürülür

How Kill Process Linux



Her Linux işletim sistemi kill komutuyla birlikte gelir. Bu aracın tek amacı, bir hedef süreci sonlandırmaktır. Özellikle büyük bir değişikliğin/güncellemenin tüm makineyi yeniden başlatmadan etkili olabileceği sunucu ve kurumsal alanlarda Linux'u oldukça çok yönlü yapan güçlü bir araçtır. Bu makalede, kullanarak bir işlemin nasıl öldürüleceğini göstereceğim. öldürmek , pkill ve hepsini öldür .

Bir süreci öldürmek

Bir süreci öldürmek için bir avuç araç kullanacağız: öldürmek , pkill , ve hepsini öldür . Hepsi temelde aynı şekilde çalışır.







Bu araçlar süreci kendileri sonlandırmaz. Bunun yerine, hedef sürece veya süreç gruplarına belirlenmiş bir sinyal gönderirler. Belirli bir sinyal belirtmediyseniz, varsayılan sinyal olarak SIGTERM gönderilir. Ancak, SIGKILL, SIGHUP vb. gibi bir dizi desteklenen sinyal vardır.



İşte temel komut yapısı öldürmek , pkill ve hepsini öldür .



$öldürmek <sinyal_veya_seçenekler> <PID(s)>
$ pkill<sinyal_veya_seçenekler> <İşlem adı>
$hepsini öldür <seçenek> <İşlem adı>

Mümkün olduğunda kullanılması önerilir öldürmek .





Öldürmek , pkill ve hepsini öldür konumlar

Kill, bir işlemi sonlandırmak için varsayılan komuttur.



$öldürmek --Yardım

/usr/bin dizininden çalıştırılır.

$Hangi öldürmek

Avantajı, aynı zamanda, ismine göre işlemi sonlandırmaya izin veren, kill'e benzer başka bir komut olan pkill'e erişime izin vermesidir.

$pkill--Yardım

$Hangipkill

Bazı uygulamalar aynı yürütülebilir dosyanın birden çok işlemini çalıştırır. Aynı ada sahip bir dizi işlemi sonlandırmak istiyorsanız, killall aracını kullanın.

$hepsini öldür --Yardım

$Hangi hepsini öldür

Çalışan tüm süreçleri listeleme

İlk görev, sonlandırmak istediğiniz PID'yi (işlem kimlik numarası) ve/veya işlem adını belirlemektir. Bu örnekte, sonlandırmak için hedef süreç olarak Firefox'u kullanacağım. Sistemde çalışan tüm işlemleri listelemek için aşağıdaki komutu çalıştırın.

$ps -İLE

Görevlerin çoğu için hedef sürecin PID'sini bilmemiz gerekir. Ancak bazı durumlarda süreç adını kullanmak daha uygundur.

Hedef sürecin tam adını biliyorsanız, PID'yi kullanarak doğrudan alabilirsiniz. pidof .

$pidof <İşlem adı>

Hedef süreç hakkında bilgi almak için bir başka ilginç araç da pgrep'tir. Bu amaç için özel olarak tasarlanmıştır.

$pgrep<seçenek> <İşlem adı>

Sinyalleri öldür

Şimdi öldürme araçlarının desteklediği sinyallere bir göz atalım. Bu çok büyük bir liste. Tabii ki, hepsi her durum için gerekli değildir. Aslında, durumların çoğu yalnızca bir avuç sinyal gerektirir.

Öncelikle kill destekleri listesine bir göz atalım.

$öldürmek -NS

Hangi sinyali göndermek istediğinizi tanımlamanın 2 yolu vardır. Tam sinyal adını veya eşdeğer değerini kullanabilirsiniz.

$öldürmek-<sinyal> <PID>

Veya,

$öldürmek-<sinyal_değeri> <PID>

En popüler sinyaller SIGHUP (1), SIGKILL (9) ve SIGTERM (15)'dir. Genel olarak SIGTERM, bir hedef süreci sonlandırmanın varsayılan ve en güvenli yoludur.

pkill durumunda, desteklenen sinyal kill ile aynıdır. Ancak killall durumunda, desteklenen sinyallerin sayısı ve sinyal adları farklıdır.

$hepsini öldür -NS

Bir süreci öldürmek

Bir süreci öldürmek için o hedef sürecin PID'sine ihtiyacımız var. PID'ye sahip olduğunuzu varsayarak, onu öldürmek için aşağıdaki komutu çalıştırın.

$öldürmek <seçenek> <PID>

Burada kill, varsayılan SIGTERM sinyalini PID'lere gönderecektir. Birden çok işlemi sonlandırmak istiyorsanız, boşlukla ayrılmış tüm PID'lerden bahsedin.

$öldürmek <seçenek> <PID_1> <PID_2>

Hedefe hangi sinyali göndermek istediğinizi belirtelim.

Bir işlemi yalnızca adını kullanarak sonlandırmak mı istiyorsunuz? pkill'i kullanın.

$pkill<seçenek> <İşlem adı>

Bazı durumlarda, belirli bir uygulamada çalışan çok fazla işlem olabilir. Tüm bu PID'leri yazmak zaman alıcı ve yorucudur. Bu tür senaryolarda killall aracını kullanacağız. Kill'e oldukça benzer, ancak işlem adıyla çalışır.

$hepsini öldür <seçenek> <İşlem adı>

Örneğin, Firefox'u çalıştırırken bir avuç işlem başlatır. Hepsini bir kerede öldürmek için bu komutu çalıştırın.

$hepsini öldürfirefox

Belirli bir kullanıcı altında çalışan tüm işlemleri sonlandırmak mı istiyorsunuz? Killall bu işi yapabilir, sorun değil. Sistemi bozabileceği ve başka sorunlar yaratabileceği için bunu çalıştırırken dikkatli olun. Daha yüksek ayrıcalığa sahip farklı bir kullanıcı altında çalışan işlemleri sonlandırmaya çalışıyorsanız çalışmaz.

$hepsini öldür -u <kullanıcı>

izin çakışması

Linux kullanıcı hiyerarşisinin doğal özellikleri, bir uygulamayı sonlandırmak üzereyken de geçerlidir. Kullanıcı, daha yüksek ayrıcalıkla çalışan işlemleri sonlandıramaz, yalnızca eşit/düşük ayrıcalığa sahip işlemleri sonlandırabilir. Ayrıca, bir kullanıcı, farklı bir kullanıcı altında çalışan işlemleri değiştiremez.

Örneğin yes komutunu ele alalım. Geçerli kullanıcı olarak adlandırılırsa, kill kullanılarak kolayca sonlandırılabilir.

$öldürmek Evet

Şimdi, eğer Evet altında koşuyordu kök ? Geçerli kullanıcı olarak kill çağrısı çalışmaz.

Benzer şekilde, bir işlem başka bir kullanıcı altında çalışıyorsa, onu farklı bir kullanıcı hesabından sonlandıramazsınız.

Son düşünceler

Bu makalede, bu komutların yalnızca temelleri ve yaygın kullanımları sergilendi. Bu öldürme araçları bundan daha fazlasını yapabilir. Herhangi bir aracın yetenekleri hakkında derinlemesine bilgi sahibi olmak için kılavuz sayfasına göz atmanızı tavsiye ederim.

$adam öldürmek

$adampkill

Eğlence!