Saya menjalankan program di terminal yang tidak dapat saya hindari Ctrl- Cdan saya ingin membunuh. Bagaimana saya bisa menemukan PID-nya?
command-line
process
Jjed
sumber
sumber
Jawaban:
Buka terminal lain dan jalankan di
ps ax | grep foo
mana foo adalah nama dari program yang tidak responsif. Ini akan mengembalikan garis output yang terlihat seperti ini:Bidang pertama dari setiap baris output adalah angka yang mewakili ID Proses dari program yang cocok dengan
grep
(Anda dapat dengan aman mengabaikan yang terakhir, yang mewakiligrep
dirinya sendiri.Untuk menghentikan proses yang menyinggung, lakukan: di
kill pid
mana pid adalah ID Proses program. Anda mungkin harus menggunakan penilaian Anda tentang pertandingan mana yang perlukill
diedit, atau Anda bisa menggunakannyatop
. Menggunakankill
dengan sendirinya mengirimkan SIGTERM, yang harus Anda coba dulu karena memungkinkan program untuk membersihkan dengan benar setelah sendiri. Jika SIGTERM gagal, cobalah SIGHUP, yang merupakan obat stonger:kill -HUP pid
. Jika semuanya gagal, kirim SIGKILL. Tetapi, Anda hanya harus melakukannya sebagai upaya terakhir, karena SIGKILL menyebabkan kernel untuk segera menghentikan proses tanpa kemungkinan pembersihan. Hal ini kadang-kadang dapat menyebabkan kerusakan data atau masalah lainnya. Jadi sekali lagi, hanya mengirim SIGKILL sebagai pilihan terakhir. Untuk melakukannya, lakukankill -KILL pid
ataukill -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 "System Monitor", navigasikan ke tab Processes, pilih proses yang ingin Anda hentikan (Hm, mungkinkah yang menggunakan 90% CPU?) Dan klik kanan itu. Karena proses sudah berhenti, (itu masalahnya, kan?) Pilih End Process atau Kill Process dari menu yang dihasilkan.
sumber
kill -9
merupakan saran buruk. Saya telah mengedit jawaban untuk memperbaikinya.ping
perintah dansleep
. Menurut unix.stackexchange.com/a/275826/72988 , tidak mungkin di Ubuntu tanpamultiplexer
.Saya tidak berpikir ada kebutuhan seperti perintah panjang ketika Anda dapat menyelesaikan perintah yang sama dengan pgrep, pkill, pidof dll ...
pgrep:
DESCRIPTION: pgrep melihat melalui proses yang sedang berjalan dan mencantumkan ID proses yang sesuai dengan kriteria seleksi untuk stdout. Semua kriteria harus sesuai. Sebagai contoh,
Untuk menemukan proses bernama sshd dimiliki oleh root.
Daftar proses yang dimiliki oleh root ATAU daemon.
pidof:
DESKRIPSI :
Pidof menemukan id proses (pers) dari program-program yang disebutkan. Ini mencetak id itu pada output standar.
sintaks: pidof program_name
Untuk mematikan program dengan pid, gunakan contoh pkill:
-f
flag: Mencari flag process_name (lihat man pkill)-o
: Pilih hanya yang tertua dari proses yang cocok.-n
flag: Pilih hanya yang terbaru dari proses pencocokan.-l
flag: Daftar nama proses serta ID proses.sumber
Cara termudah untuk mengetahui pid dari program yang sedang berjalan adalah menggunakan:
Misalnya, jika Anda memulai vim dan ingin tahu pidnya:
Ingatlah bahwa Anda harus memberikan nama program yang tepat yang telah dimulai.
Misalnya, jika Anda menjalankan vi dan menjalankan
pidof vim
Anda tidak akan mendapatkan hasil yang benar.Lihat
pidof
halaman manual untuk info lebih lanjut.sumber
pidof mysqld
mengembalikan PID. Namun, jika saya mengetikpidof Mariadb
tidak ada yang dikembalikan. Apakah PID yang sama untuk MariaDB dan MySQL?Saya merasa senang menggunakan pencarian case yang tidak sensitif dengan menambahkan "-i" dan menggunakan "aux" alih-alih "kapak" untuk mendapatkan hasil yang lebih deskriptif:
Jika Anda ingin mematikan semua proses yang dapat Anda gunakan:
Itu adalah pembunuhan yang kuat. Jatuhkan "-9" jika Anda ingin membunuh dengan lembut.
sumber
ps aux | grep -i firefox...
prosesnya, karena itu mengandung teksfirefox
dalam perintahnya!grep -i firefo[x]
hanya cocok firefox-9
dengankill
, lihat di sini untuk penjelasanJika Anda hanya ingin pid (berguna untuk skrip autokill, dll ...)
sumber
Bagi mereka yang menjalankan Ubuntu 16.04 LTS, Anda harus menggunakan
ps ax
dan tidak hanyaps
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])sumber
ps -e
(menunjukkan semua) danps -ejH
(menunjukkan pohon proses).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 berisi daftar PID dari setiap proses yang berjalan, yang dapat Anda bunuh dengan menekan K, memasukkan PID dan kemudian memasukkan sinyal numerik untuk dikirim.sumber
Anda bisa melakukannya:
dua pipa pertama mendapatkan info proses, selanjutnya kita mencoba untuk mendapatkan kolom PID dengan menggunakan potongan old-school dan kemudian kita memberikan PID yang dihasilkan untuk dimatikan.
sumber
kill -9
adalah senjata terbesar yang harus kamu bunuh dalam suatu proses. Anda harus mencoba sinyal yang lebih lembut pada awalnya sebelum beralih ke SIGKILL untuk memberikan proses kesempatan untuk membersihkan sumber dayanya.atau
daftar semua pid dengan proses yang sesuai
sumber