Rumah >Operasi dan penyelenggaraan >operasi dan penyelenggaraan linux >Bagaimana untuk mematikan proses dalam linux

Bagaimana untuk mematikan proses dalam linux

WBOY
WBOYke hadapan
2023-05-21 19:28:101398semak imbas

Biasa:

Pertama, gunakan ps untuk menyemak prosesnya adalah seperti berikut:

Salin kod seperti berikut:

$ ps -ef

$ ps -ef

……
smx 1822 1 0 11:38 00:00:49 gnome-terminal
smx 1823 1822 0 1 38 00:00:00 gnome -pty-helper
smx 1824 1822 0 11:38 pts/0 00:00:02 bash
smx 1827 1 4 11:38 ? /firefox- 3.6.18/ firefox-bin
smx 1857 1822 0 11:38 pts/1 00:00:00 bash
smx 1880 1619 0 11:38 .……
smx 11946 1824 0 21:41 pts/0 00:00:00 ps -ef

atau:


Salin kod Kod adalah sebagai berikut:

$ ps -aux

……

smx 1822 0.1 0.8 58484 18152 ? 1988 712? ? sl 11:38 26:13 /usr/lib/firefox-3.6 .18/Firefox-Bin

SMX 1857 0.0 0.1 6688 3644 pts/1 ss 11:38 0:00 Bash
Smx 1880 0.0 0.6 41536 1262 0? :38 0:00 update-notifier
… …
smx 11953 0.0 0.0 2716 1064 pts/0 r+ 21:42 0:00 ps -aux


Pada masa ini, jika saya ingin mematikan proses Firefox, taip sahaja terminal:

Salin kod Kod adalah seperti berikut:


$ kill -s 9 1827

di mana -s 9 menyatakan bahawa isyarat yang dihantar kepada proses adalah 9, iaitu, dipaksa dan secepat mungkin Tamatkan proses. Lihat lampiran untuk setiap isyarat penamatan dan fungsinya.


1827 ialah pid Firefox yang ditemui oleh PS di atas.

Memang mudah, tapi ada masalah kalau proses lebih sikit, tak apa kalau banyak proses, sama ada ps -ef atau ps -aux. ia akan berada dalam senarai besar maklumat proses setiap kali saya mendapati proses itu akan dibunuh dan mata saya terpesona.

Lanjutan:

Penambahbaikan 1:

Paipkan hasil pertanyaan ps ke grep untuk mencari proses yang mengandungi rentetan tertentu. Aksara paip "|" digunakan untuk memisahkan dua arahan Keluaran arahan di sebelah kiri aksara paip akan digunakan sebagai input arahan di sebelah kanan aksara paip.

Salin kod Kod adalah seperti berikut:


$ ps -ef | grep firefox

smx 1827 1 4 11:38 ? /firefox- 3.6.18/firefox-bin

smx 12029 1824 0 21:54 pts/0 00:00:00 grep --color=auto firefox


Kali ini menyegarkan. Kemudian

Salin kod Kod adalah seperti berikut:


$kill -s 9 1827

Penambahbaikan 2 - Gunakan pgrep:

Sebagai sebaik sahaja anda melihatnya Apakah perkara pertama yang terlintas di fikiran dengan pgrep? Betul, grep! P pgrep menunjukkan bahawa arahan ini adalah grep khusus untuk pertanyaan proses.

Salin kod Kod adalah seperti berikut:


$ pgrep firefox

1827

Apa yang anda nampak? Betul, pid Firefox, anda perlu menaipnya semula:

$kill -s 9 1827

Penambahbaikan 3 - Gunakan pidof:

Apakah yang anda fikirkan apabila anda nampak pidof? Betul, pid xx, diterjemahkan secara literal ialah pid xx.

Salin kod Kod adalah seperti berikut:


$ pidof firefox-bin

1827

Sedikit kelemahan berbanding dengan pgrep ialah pidof itu mesti Memberi nama penuh proses. Kemudian terdapat klise:

Salin kod tersebut adalah seperti berikut:


$kill -s 9 1827

Sama ada anda menggunakan ps. dan kemudian perlahan-lahan mencari pid proses atau menggunakan Ia adalah sedikit menyusahkan untuk grep untuk mencari proses yang mengandungi rentetan yang sepadan, atau menggunakan pgrep untuk mencari terus pid proses yang mengandungi rentetan yang sepadan, dan kemudian memasukkannya secara manual untuk membunuh untuk membunuh. Adakah terdapat cara yang lebih mudah? mempunyai!


Peningkatan 4:

Salin kod adalah seperti berikut:


$ps -ef |. 15 |. xargs kill -s 9

Arahan:

Output "grep firefox" ialah semua proses yang mengandungi kata kunci "firefox".

"grep -v grep" adalah untuk mengalih keluar proses yang mengandungi kata kunci "grep" daripada proses yang disenaraikan.

"cut -c 9-15" memintas aksara ke-9 hingga ke-15 baris input, yang kebetulan merupakan nombor proses pid.

Arahan xargs dalam "xargs kill -s 9" digunakan untuk menggunakan hasil output (pid) arahan sebelumnya sebagai parameter perintah "kill -s 9" dan laksanakan arahan itu. "kill -s 9" akan secara paksa membunuh proses yang ditentukan.

Tidakkah anda mahu mengadu tentang sesuatu? Ya, ia terlalu panjang

Penambahbaikan 5:

Anda tahu perintah pgrep dan pidof, mengapa anda perlu menaip rentetan yang begitu panjang!

Salin kod Kod adalah seperti berikut:

$ pgrep firefox | awk '{print $2}' |. xargs kill -9
kill: tiada proses sedemikian


Ada satu Apa yang lebih menyedihkan ialah proses itu telah ditemui dan ditamatkan dengan betul, tetapi selepas pelaksanaan , ia menggesa bahawa proses itu tidak dapat ditemui.

Fungsi awk '{print $2}' adalah untuk mencetak kandungan lajur kedua. Menurut artikel umum, anda boleh tahu bahawa output lajur kedua oleh ps adalah betul-betul pid. Lulus pid proses yang sepadan untuk membunuh sebagai parameter melalui xargs, dan bunuh proses yang sepadan.

Peningkatan 7:

Adakah anda perlu memanggil xargs setiap kali untuk lulus pid untuk membunuh? Jawapannya tidak:

Salin kod Kod adalah seperti berikut:

$kill -s 9 `ps -aux | awk '{print $2}'

Penambahbaikan 8:

Ya, arahan masih agak panjang, gantikan dengan pgrep.

Salin kod Kod adalah seperti berikut:

$kill -s 9 `pgrep firefox`

Penambahbaikan 9 - pkill:

Apa yang anda fikirkan apabila anda melihat pkill? Betul pgrep dan bunuh! pkill=pgrep+kill.

Salin kod Kod adalah seperti berikut:

$pkill -9 firefox

Penjelasan: "-9" bermaksud isyarat yang dihantar ialah 9, pkill dan kill Perbezaan pada ketika ini ialah: pkill tidak memerlukan "s", dan tahap isyarat penamatan terus mengikuti "-". Saya selalu fikir ia adalah "-s 9" sebelum ini, tetapi proses itu gagal ditamatkan setiap kali saya menjalankannya.

Penambahbaikan 10 - killall:

killall adalah serupa dengan pkill, tetapi jika nama proses yang diberikan tidak lengkap, killall akan melaporkan ralat. pkill atau pgrep boleh menamatkan proses hanya dengan memberikan sebahagian daripada nama proses.


Salin kod Kod adalah seperti berikut:

$killall -9 firefox

Atas ialah kandungan terperinci Bagaimana untuk mematikan proses dalam linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam