Bagaimana menemukan Id proses (PID) dari program terminal yang sedang berjalan?

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 killed, 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 pidofhalaman 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*.