Saya menjalankan program di terminal yang tidak dapat saya hindari Ctrl-C dan bahwa saya ingin membunuh. Bagaimana SAYA bisa menemukan PID-nya?
Buka terminal lain dan jalankan ps ax | grep foo
di mana foo adalah nama program yang tidak responsif. Ini harus mengembalikan garis output yang terlihat seperti ini:
$ ps ax | grep firefox2222 ? S 0:00 /bin/sh /usr/lib/firefox-3.6.9/firefox2231 ? Sl 514:36 /usr/lib/firefox-3.6.9/firefox-bin30290 pts/2 S+ 0:00 grep --color=auto firefox
Bidang pertama dari setiap baris output adalah angka yang mewakili Id proses program yang dicocokkan dengan grep
(Anda dapat dengan aman mengabaikan yang terakhir, yang mewakili grep
sendiri.
Untuk menghentikan proses pelanggaran, lakukan:kill pid
di mana pid adalah Id proses program. Anda mungkin harus menggunakan penilaian anda untuk Yang pertandingan perlu kill
ed, atau Anda bisa menggunakan top
sebagai gantinya. Menggunakan kill
dengan sendirinya mengirimkan SIGTERM, yang harus anda coba pertama karena memungkinkan program untuk benar membersihkan setelah itu sendiri. Jika SIGTERM gagal, coba SIGHUP, yang merupakan obat yang lebih kuat: kill -HUP pid
. Jika semuanya gagal, kirim SIGKILL. Namun, Anda hanya boleh melakukannya sebagai upaya terakhir, karena SIGKILL menyebabkan kernel segera menghentikan proses tanpa kemungkinan pembersihan. Hal ini kadang-kadang dapat mengakibatkan korupsi data atau masalah lainnya. Jadi sekali lagi, hanya mengirim SIGKILL sebagai upaya terakhir. Untuk melakukannya, lakukan kill -KILL pid
atau kill -9 pid
.
Jika Anda menjalankan antarmuka grafis, tentu saja, Anda tidak perlu menipu dengan hal-hal baris perintah gila ini untuk menyelesaikan pekerjaan. Cukup buka "Monitor Sistem", navigasikan ke tab Proses, pilih proses yang ingin Anda hentikan (Hm, Mungkinkah yang menggunakan 90% CPU?) dan klik kanan. Karena prosesnya sudah dihentikan, (itu masalahnya, bukan?) pilih proses akhir atau proses Membunuh dari menu yang dihasilkan.
Kredit untuk koanhead
Saya tidak berpikir ada kebutuhan perintah yang begitu panjang ketika Anda dapat menyelesaikan perintah yang sama dengan pgrep, pkill, pidof dll...
- Untuk mendapatkan pid dari program yang sedang berjalan
pgrep:
pgrep [options] pattern
Deskripsi : pgrep melihat melalui proses yang sedang berjalan dan Daftar Id proses yang cocok dengan kriteria seleksi untuk stdout. Semua kriteria harus sesuai. Misalnya,
-
Untuk menemukan proses bernama sshd yang dimiliki oleh root.
$ pgrep -u root sshd
-
Buat daftar proses yang dimiliki oleh root atau daemon.
$ pgrep -u root,daemon
pidof:
Deskripsi:
Pidof menemukan ID proses (PID) dari program bernama. Ini mencetak id tersebut pada output standar.
syntax: nama program pidof
-
Untuk mematikan program dengan pid gunakan pkillexample:
pkill pid pkill -f process_name pkill -o process_name pkill -n process_name pkill -l process_name
-f
bendera: mencari process_name (melihat pria pkill)-o
bendera: pilih hanya proses pencocokan terlama.-n
bendera: pilih hanya yang terbaru dari proses pencocokan.-l
bendera: Daftar nama proses serta ID proses.
Cara termudah untuk mengetahui pid dari program yang sedang berjalan adalah dengan menggunakan:
pidof <application name>
Misalnya, jika Anda memulai vim dan ingin mengetahui pid-nya:
pidof vim
Ingatlah bahwa Anda harus memberikan nama program yang tepat yang telah dimulai.
Misalnya, jika Anda menjalankan vi dan mengeksekusi pidof vim
Anda tidak akan mendapatkan hasil yang benar.
Mengacu pada pidof
halaman manual untuk info lebih lanjut.
Saya merasa senang menggunakan pencarian case insensitive dengan menambahkan "- i "dan menggunakan "aux" alih-alih " ax " untuk mendapatkan output yang lebih deskriptif:
ps aux | grep -i firefox
Jika Anda ingin membunuh semua proses yang dapat Anda gunakan:
ps aux | grep -i firefox | awk {'print $2'} | xargs kill -9
Itu adalah pembunuhan yang kuat. Jatuhkan " -9 " jika Anda ingin membunuh lembut.
Jika Anda hanya menginginkan pid (berguna untuk skrip autokill, dll...)
pgrep -f desired_program_name
Bagi mereka yang menjalankan Ubuntu 16.04 LTS, Anda harus gunakan ps ax
dan bukan hanya ps
pada baris perintah, jika tidak, Anda hanya akan mendapatkan proses pemijahan dari instance terminal tertentu tempat Anda berada. (biasanya hanya ' bash '[shell Anda berada di] dan ' ps '[ apa yang baru saja Anda berlari])
Anda juga dapat membuka terminal lain (atau beralih ke tty lain) dan menjalankan top
, yang pada dasarnya adalah versi teks dari Monitor Sistem. Kolom pertama mencantumkan PID dari setiap proses yang berjalan, yang dapat Anda bunuh dengan menekan K, memasuki PID dan kemudian memasukkan sinyal numerik untuk mengirim.
Anda bisa melakukan:
ps ax | grep firefox | cut -f2 -d" " - | xargs kill -9
pertama dua pipa mendapatkan info proses, selanjutnya kita mencoba untuk mendapatkan kolom PID dengan menggunakan cut tua-sekolah dan kemudian kita memberikan PID yang dihasilkan untuk membunuh.
top
atau
screen -list|ls
daftar semua pid dengan proses yang sesuai
kill -[pid]
Ini adalah cabang dari [apa yang harus saya lakukan ketika Ubuntu membeku?] (performance - What should I do when Ubuntu freezes? - Ask Ubuntu) sebagai referensi untuk mencegah detail dalam pertanyaan itu menjadi terlalu teknis.
Ada perintah * pidof*.