Ubuntu'daki süreçleri nasıl öldürebilirim?

Kendi root olmayan hesabım tarafından çalıştırılan tüm işlemleri nasıl öldürebilirim?

Windows makinemden neden olduğum bazı eğirme smbd işlemlerim var ve bu yüzden linux sunucusuna bağlandım ve bu eğirme işlemlerini öldürmek istiyorum. Hizmetleri yeniden başlatma veya makineyi yeniden başlatma yetkim yok.

Öldürme izniniz olan tüm işlemleri öldürmek için komutu çalıştırmanız yeterlidir

kill -15 -1 veya kill -9 -1 istenen davranışa bağlı olarak (kullanım man kill ayrıntılar için)

Belirli bir işlemi öldürmek için firefox'u çalıştırmanız yeterlidir

pkill firefox veya killall firefox istediğiniz davranışa bağlı olarak: 'killall' ve 'pkill' arasındaki fark nedir?

Hangi işlemlerin çalıştığını görmek istiyorsanız komutu kullanın

ps -ef

Tüm işlemleri kullanıcı bob tarafından aramak istiyorsanız, bu yardımcı olabilir

pgrep -l -u bob

veya

ps -ef | grep bob

Kullanmak sudo kill <pid> veya sudo killall <process-name>

Kullanabilirsiniz

ps -ax | grep application name 

Firefox'u arıyorsanız, terminalde aşağıdaki gibi yazın ps -ax | grep firefox, ilgili uygulamanın işlem kimliğini gösterir. Bu uygulamayı şu şekilde durdurabilirsiniz kill işlem kimliği = 1317 ise komutu,

kill -9 1317

Daha fazlasını deneyelim.:

sudo apt-get install htop 

Bu top komut, sisteminizin kaynak kullanımını görüntülemenin ve en fazla sistem kaynağını alan işlemleri görmenin geleneksel yoludur. En üstte, en çok CPU kullanan işlemlerin bir listesini görüntüler.

htop aynı bilgileri anlaşılması daha kolay bir düzende görüntüler. Ayrıca, ok tuşlarını kullanarak işlemleri seçmenize ve bunları öldürmek veya önceliklerini değiştirmek gibi eylemleri gerçekleştirmenize olanak tanır. F anahtarlar.

Kullanırdım xkill. Giriş xkill bir terminalde ve pencereye tıklayın veya girin xkill ve işlem kimliği ve sonlandırılacak.

Hakkında daha fazla öğrendim xkill üzerinde x.org .

Bir kullanıcının sahip olduğu tüm işlemleri öldürmeye çalışmak username, çalıştırmak:

pkill -U username

Problemini 2 parçaya ayırırdım.:

1) Başlattığım süreçleri nasıl bulabilirim? Bunu çalıştır:

ps -u `whoami`

Bu whoami kullandığınız hesabın adını bilmiyorsanız, aksi takdirde hesabın adını arka tırnak işaretleri olmadan yazmanız yeterlidir.

Bu, hesabınız tarafından silinebilecek tüm işlemleri listeler.

2) ps komut işlem numarasını, tty'yi, Saati ve cmd'yi listeler. İşlem kimliği ilk sütundur. İşlemi öldürmek için bu numarayı kullanın. Süreci öldürürken dikkatli olun. Yanlışı öldürürsen bir şeyi kırabilirsin. process.To kullanacağınız bir işlemi öldürün kill işleme bir sinyal gönderen komut. Sinyal, işlemin ne olduğunu gösterir malı yapmak. Örneğin, bir gönderme -1 işleme, yapılandırma dosyasını yeniden yüklemesini isteyecektir; -2 bu işlemde Control + C tuşlarına basmaya eşdeğerdir; -9 çekirdeğin sürece iletmeden işlemi terk etmesine neden olur.

Ps -u olduğunu varsayalım whoami gibi bir şey döndürdü

  PID TTY          TIME CMD 4333 pts/1    00:00:00 fish 4335 ?        00:00:00 fishd 4816 ?        00:00:00 intellij 4868 ?        00:50:42 java 4939 ?        00:00:19 fsnotifier64 7667 ?        02:49:08 firefox 7698 ?        00:00:00 unity-webapps-s

Ve sen öldürmek istedin firefox onun süreç kimliği süreç, sonra ne yaptınız:

kill -1 7667

Daha sonra ... ... tekrar aynı çalıştırın ps komut verin ve işlemin hala çalışıp çalışmadığını kontrol edin. Hala çalışıyorsa, o zaman bir

kill -2 7667

kadar yol çalışma -9.

Hesabınız tarafından başlatılan tüm işlemleri öldürmek için şunu girin: kill <level> -1. Daha önce olduğu gibi aynı: kadar inin -9.

Sürecin adını biliyorsanız, sadece gidebilirsiniz killall <processname> öldürmeye çalıştığın şeyin olduğu yerde. Örneğin: killall fish (balık, bu anlamda, Dostça Etkileşimli kabuktur).

İçin belgeler killall burada bulunabilir: http://manpages.ubuntu.com/manpages/hardy/man1/killall.1.html

Bu uygulama ile program listelerini görüntüleyebilirsiniz

htop'u yükle

sudo apt-get install htop

bkz. işlem ve öldürme işlemi için yükleyebilir ve silebilirsiniz

enter image description here

Skype'ı öldürmek için yazdığım küçük bir senaryo yazdım (benim durumumda):

kill -s 9 `ps aux | grep skype | head -n 1 | cut -f4 -d" "`

Ama o zaman işe yaradığı kadar ertesi gün işe yaramadığını buldum çünkü pıd farklı bir uzunluktaydı ve boşluk miktarı farklıydı

Sonra bu siteye rastladım ve denedim

pgrep -l -u justin

hangi formatta süreçleri uygun şekilde çıkarır

[pid] [name]

Bu yüzden komut dosyasındaki kodumu buna göre ayarladım:

kill -s 9 `pgrep -l -u justin | grep skype | cut -f1 -d" "`

Bunun yaptığı, tüm süreçleri borulamaktır justin çalışıyor (herhangi bir kullanıcı adına değiştirilebilir) grep hangi arar skype (bu, işleminize değiştirilebilir) ve ardından bu satırı şu şekilde borulayın: cut daha sonra sadece pıd'yi okur ve sonunda bu pıd'yi kullanır. kill komut öldürmek için.

...Linux'taki tüm işlemler sinyallere yanıt verir. Sinyaller, programlara davranışlarını sonlandırmalarını veya değiştirmelerini söylemenin işletim sistemi düzeyinde bir yoludur.

PID ile İşlem Sinyalleri Nasıl Gönderilir

Bir programa sinyal iletmenin en yaygın yolu kill komutudur.

Tahmin edebileceğiniz gibi, bu yardımcı programın varsayılan işlevi bir işlemi öldürmeye çalışmaktır:

kill PID_of_target_process

Bu, sürece TERİM sinyali gönderir. Sinyal terimi, işlemin lütfen sonlandırılmasını söyler. Bu program temizleme işlemleri gerçekleştirmek için ve sorunsuz çıkmak için izin verir.

Program yaramazlık yapıyorsa ve sinyal terimi verildiğinde çıkmazsa, öldürme sinyalini geçerek sinyali yükseltebiliriz:

kill -KILL PID_of_target_process

Bu, programa gönderilmeyen özel bir sinyaldir.

Bunun yerine, işlemi kapatan işletim sistemi çekirdeğine verilir. Bu, kendilerine gönderilen sinyalleri yoksayan programları atlamak için kullanılır...