Bagaimana cara saya membunuh proses di Ubuntu?

149

Bagaimana cara saya membunuh semua proses yang berjalan dengan akun non-root saya sendiri?

Saya memiliki beberapa proses smbd pemintalan yang saya sebabkan dari mesin windows saya dan jadi saya melakukan telnet ke server linux dan saya ingin membunuh proses pemintalan tersebut. Saya tidak punya wewenang untuk me-restart layanan atau me-reboot mesin.

Djangofan
sumber

Jawaban:

172

Untuk membunuh semua proses yang Anda miliki izin untuk membunuh, cukup jalankan perintah

kill -15 -1atau kill -9 -1tergantung pada perilaku yang diinginkan (gunakan man killuntuk perincian)

Untuk membunuh proses tertentu, katakanlah, firefox, jalankan saja

pkill firefoxatau killall firefoxtergantung pada perilaku yang Anda inginkan: Apa perbedaan antara 'killall' dan 'pkill'?

Jika Anda ingin melihat proses apa yang sedang berjalan gunakan perintah

ps -ef

Jika Anda ingin mencari semua proses oleh pengguna bob, ini mungkin membantu

pgrep -l -u bob

atau

ps -ef | grep bob
ste_kwr
sumber
4
Saya akan mulai dengan kill -15 -1, dan hanya beralih ke kill -9 -1jika ada proses keras kepala dan saya tahu apa yang saya lakukan . Secara acak membunuh proses yang mungkin ada di tengah-tengah transaksi basis data bukanlah sesuatu yang harus dilakukan sesantai yang Anda sarankan.
Simon Richter
Juga, proses Firefox dinamai firefox-bin.
Simon Richter
Tidak, Anda dapat mencoba berjalan killall firefoxdan killall firefox-bindan melihat apa yang bekerja. Saya setuju dengan komentar pertama Anda.
ste_kwr
Terima kasih @ste_kwr, bekerja dengan instruksi Anda, setelah berjuang selama dua hari ...
Java.beginner
Keuntungan tidak membutuhkan PID adalah dalam pekerjaan cron. Menggunakan nama berhasil dengan baik.
SDsolar
56

Gunakan sudo kill <pid>atausudo killall <process-name>

Chris Wayne
sumber
3
Saya tidak berpikir ini relevan dengan pertanyaan ini, Anda menggunakan sudo - OP tidak memiliki hak seperti itu, seperti yang disebutkan dalam pertanyaan.
pl1nk
OP tidak memiliki hak istimewa, silakan edit jawaban Anda atau mungkin dihapus atau diubah menjadi komentar sebagai "bukan jawaban".
ish
Jika dia tidak memiliki hak istimewa dia hanya perlu melakukan kill <pid> atau killall <process-name> Saya hanya menggunakannya di akun non root saya, saya tidak akan bisa melakukannya jika bukan karena Jawaban ini .
Shailyn Ortiz
20

Mari kita coba sesuatu yang lebih:

sudo apt-get install htop 

The topperintah adalah cara tradisional untuk melihat penggunaan sumber daya sistem Anda dan melihat proses yang mengambil sumber daya yang paling sistem. Top menampilkan daftar proses, dengan yang menggunakan CPU terbanyak di atas.

htopmenampilkan informasi yang sama dengan tata letak yang lebih mudah dipahami. Ini juga memungkinkan Anda memilih proses dengan tombol panah dan melakukan tindakan, seperti membunuh mereka atau mengubah prioritas mereka, dengan Ftombol.

Fantoma
sumber
16

Anda dapat gunakan

ps -ax | grep application name 

Jika Anda mencari jenis firefox di terminal suka ps -ax | grep firefox, itu menunjukkan id proses aplikasi yang sesuai. Anda dapat menghentikan aplikasi itu dengan killperintah jika proses id = 1317,

kill -9 1317
Xman Klasik
sumber
13

Saya akan menggunakan xkill. Masukkan xkillterminal dan klik di jendela, atau masukkan xkilldan ID proses dan itu akan dihentikan.

Temukan lebih banyak tentang xkilldi x.org.

Alvar
sumber
1
Gunakan frekuensi kedua setelah pkill dan menyukainya. +1
Sergiy Kolodyazhnyy
xkill tidak berfungsi dalam kasus ini ...
PythoNic
@PythoNic dalam hal apa itu?
Alvar
1
Dia ingin membunuh proses non-jendela yang juga tidak terkait dengan server X seperti yang tampak bagi saya ... (Pokoknya alat yang bagus.)
PythoNic
9

Untuk mencoba membunuh semua proses yang dimiliki oleh pengguna username, jalankan:

pkill -U username
pengguna129146
sumber
7

Saya akan membagi masalah Anda menjadi 2 bagian:

1) Bagaimana saya menemukan proses yang dimulai oleh saya? Jalankan ini:

ps -u `whoami`

The whoamihanya dalam kasus Anda tidak tahu nama akun yang Anda gunakan, jika tidak hanya ketik nama account tanpa tanda kutip kembali.

Ini akan mencantumkan semua proses yang dapat dihapus oleh akun Anda.

2) psPerintah akan mencantumkan nomor proses, TTY, Waktu, dan CMD. ID proses adalah kolom pertama. Gunakan nomor itu untuk menghentikan proses. Hati-hati saat membunuh proses. Anda mungkin merusak sesuatu jika Anda membunuh proses yang salah. Untuk membunuh proses, Anda akan menggunakan killperintah, yang mengirimkan SIGNAL ke proses. Sinyal menunjukkan apa yang harus dilakukan proses . Misalnya, mengirimkan -1ke proses akan memintanya memuat ulang file konfigurasi; mengirimkan -2setara dengan menekan Control + C pada proses itu; -9akan menyebabkan kernel mengabaikan proses, tanpa mengkomunikasikannya ke proses.

Misalkan ps -u whoamimengembalikan sesuatu seperti

  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

Dan Anda ingin mematikan firefoxproses dengan id prosesnya, maka Anda akan melakukannya:

kill -1 7667

Kemudian Anda akan menjalankan kembali psperintah yang sama dan memeriksa apakah prosesnya masih berjalan. Jika masih berjalan, maka lakukan a

kill -2 7667

cara kerja Anda hingga -9.

Untuk membunuh semua proses yang dimulai oleh akun Anda, masukkan kill <level> -1. Sama seperti sebelumnya: lanjutkan dengan cara Anda -9.

Jika Anda tahu nama prosesnya, Anda bisa pergi ke killall <processname>tempat yang ingin Anda bunuh. Misalnya: killall fish(ikan, dalam pengertian ini, adalah Friendly Interactive Shell).

Dokumentasi untuk killalldapat ditemukan di sini: http://manpages.ubuntu.com/manpages/hardy/man1/killall.1.html

Alexandre Santos
sumber
3

Dengan aplikasi ini Anda dapat melihat daftar program

instal htop

sudo apt-get install htop

untuk melihat proses dan mematikan proses, Anda dapat menginstalnya dan cukup menghapus

masukkan deskripsi gambar di sini

Reza Bojnordi
sumber
2

... Semua proses di Linux merespons sinyal. Sinyal adalah cara os-level untuk memberitahu program untuk menghentikan atau mengubah perilaku mereka.

Cara Mengirim Sinyal Proses oleh PID

Cara paling umum menyampaikan sinyal ke suatu program adalah dengan perintah kill.

Seperti yang Anda duga, fungsionalitas default utilitas ini adalah mencoba mematikan proses:

kill PID_of_target_process

Ini mengirimkan sinyal TERM ke proses. Sinyal TERM memberi tahu proses untuk berhenti. Ini memungkinkan program untuk melakukan operasi pembersihan dan keluar dengan lancar.

Jika program mengalami kesalahan fungsi dan tidak keluar ketika diberi sinyal TERM, kami dapat meningkatkan sinyal dengan meneruskan sinyal KILL:

kill -KILL PID_of_target_process

Ini adalah sinyal khusus yang tidak dikirim ke program.

Sebagai gantinya, itu diberikan ke kernel sistem operasi, yang mematikan proses. Ini digunakan untuk memotong program yang mengabaikan sinyal yang dikirim kepada mereka ...

jackal404258
sumber
2

Saya menulis skrip kecil yang saya tulis untuk membunuh (dalam kasus saya) Skype:

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

Tetapi saya menemukan bahwa sebanyak itu berhasil, itu tidak berfungsi pada hari berikutnya karena pid itu panjangnya berbeda dan ada untuk jumlah ruang yang berbeda

Kemudian saya menemukan situs ini dan mencoba

pgrep -l -u justin

yang dengan mudah menampilkan proses dalam format

[pid] [name]

Jadi saya menyesuaikan kode saya dalam skrip ini:

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

Apa yang dilakukan adalah mem-pipe semua proses yang justinsedang berjalan (yang dapat diubah menjadi nama pengguna apa pun) grepyang skypedicari (ini dapat diubah ke proses Anda) dan kemudian mem-pipe garis cutyang kemudian hanya membaca PID dan akhirnya menggunakannya PID dalam killperintah untuk membunuhnya.

justingiffard
sumber
Anda bisa menjatuhkan -l, dan berlari pgrep -u justin skype, dan untuk membunuh: pkill -u justin skype(atau pkill -KILL -u justin skypemengirim SIGKILL).
muru
Ini jelas merupakan Unix Way. Baik dilakukan kalian berdua. Saya akan menggunakan yang ini.
SDsolar
1

Berikut ini adalah skrip python sederhana yang saya tulis, killProcess.py, yang akan menerima apa pun sebagai input dan mematikannya.

Saya menulis skrip ini karena saya memiliki banyak proses python atau simpul yang ingin saya bunuh secara individu dan secara terprogram. Saya tidak dapat menggunakan "killall python" karena itu akan menghentikan proses yang saya butuhkan untuk tetap berjalan.

Harap beri nama file "killProcess.py", lalu tambahkan nama skrip yang ingin Anda hentikan. Contoh: python killProcess.py runnablePoller.py akan membunuh file runnablePoller.py

import os;
import sys;
for arg in sys.argv:
    if(arg!="killProcess.py"):
        process=arg;
        print(process);
processes =os.popen("ps -ef | grep "+process).read();
processes=processes.split("\n");
processes=processes[0].split(" ");
#print(processes);
for p in processes:
    try:
        pid=int(p);
        print(pid); 
        break;
    except:
        continue;

os.system("kill "+str(pid));
nick carraway
sumber
0

Saya menggunakan prosedur berikut untuk mematikan proses di Ubuntu ::

Langkah 1: Dapatkan pid dari proses dengan menggunakan grep atau Anda dapat menggunakan -C juga ::

ps aux | -C 'filename'

atau

ps -ef | -C 'filename'

atau

ps aux | grep 'filename'

atau

ps -ef | grep 'filename' 

Langkah 2: Catat nomor pid.

Langkah 3: Gunakan perintah 'kill' dengan nomor pid sebagai:

kill pidnumber
Akash Kandpal
sumber