Paksa berhenti melakukan proses salah laku menggunakan arahan Linux ini
Untuk menerangkan maksud 'Proses' dalam perkataan yang paling mudah ialah ia adalah contoh berjalan bagi mana-mana aplikasi atau program pada sistem anda. Anda mungkin menjalankan berbilang aplikasi secara serentak seperti menyemak imbas, mendengar muzik yang berfungsi pada terminal anda, dsb. Terdapat banyak proses latar belakang yang dikaitkan dengan aplikasi ini yang dijalankan oleh pengguna.
Setiap aplikasi atau program yang berjalan pada sistem anda mencipta berbilang proses yang dikaitkan dengan aplikasi tunggal anda. Kadangkala ini mungkin menjadi masalah dan menyingkirkan proses ini adalah satu-satunya pilihan yang anda ada.
'Membunuh' proses ialah satu pilihan berguna yang diberikan Linux kepada anda untuk menghentikan proses yang sedang berjalan, sama ada proses latar depan atau proses latar belakang. Dalam artikel ini, kami akan menyemak arahan seperti bunuh
, pkill
dan bunuh semua
untuk memaksa berhenti sebarang proses pada sistem.
Mengapa membunuh Proses?
Memahami konsep membunuh proses adalah penting sebelum meneruskan dalam tutorial ini. Pembunuhan mungkin kelihatan sebagai cara yang sangat kejam untuk menyatakan konsep itu, tetapi maksudnya secara kiasan ialah membatalkan proses secara paksa.
Sekarang, mengapa menggugurkan atau menghentikan proses yang berterusan? Apabila berbilang proses berjalan di latar belakang, semua atau beberapa proses mungkin tidak berfungsi dan boleh menyebabkan sistem anda tidak berfungsi. Ini menangguhkan tugas anda yang sedang berjalan kerana proses yang tidak berfungsi boleh membekukan sistem anda buat seketika.
Kadangkala, berhenti daripada semua proses salah laku nampaknya satu-satunya pilihan untuk memulihkan keadaan normal pada sistem anda. Linux membenarkan anda untuk mematikan proses menggunakan pid
atau nama proses.
Menggunakan pgrep
perintah
Kebanyakan pengguna Linux biasa dengan grep
perintah. The pgrep
arahan boleh digunakan pada baris yang sama grep
.
pgrep
arahan apabila digunakan, memaparkan pid
proses berjalan seperti yang dinyatakan dalam arahan. Perintah ini akan terbukti sangat membantu semasa menggunakan pkill
perintah.
Sintaks Umum:
pgrep [pilihan] [corak]
Pilihan penting tersedia dengan pgrep
perintah
Pilihan | Penerangan |
-u | id proses senarai yang dimiliki oleh pengguna tertentu |
-c | mengira bilangan proses padanan |
-saya | senaraikan sahaja nama proses |
-a | senaraikan laluan penuh nama proses |
Mari kita tunjukkan penggunaan pgrep
perintah menggunakan contoh.
pgrep -u gaurav gnome
Di sini, kami ingin melihat pids
gnome proses yang dimiliki oleh pengguna 'gaurav'. Pilihan -u
membolehkan anda menyenaraikan pids
proses yang dimiliki oleh pengguna tertentu. Dalam kes ini, pengguna gaurav.
Pengeluaran:
gaurav@ubuntu:~$ pgrep -u gaurav gnome 1752 1755 1909 1922 2021 2576 4279 gaurav@ubuntu:~$
Semasa kami meneruskan tutorial ini, pgrep
arahan akan membantu kami dalam mengesahkan sama ada proses telah dimatikan atau masih berjalan.
Marilah kita sekarang beralih ke pkill
perintah dan pelaksanaannya.
menggunakan pkill
perintah
Anda boleh menggunakan pkill
arahan dalam Linux untuk mematikan proses menggunakan nama proses. Walaupun anda tidak tahu pid
daripada beberapa proses, walaupun begitu anda boleh mematikan proses tertentu itu menggunakan pkill
perintah.
Proses boleh ditentukan dengan nama lengkapnya atau nama separa semasa menggunakan pkill
perintah. Walaupun anda memasukkan nama separa proses, proses pkill
arahan akan memadankan semua proses yang sedang berjalan dengan nama padanan yang telah anda masukkan dalam arahan.
Sintaks:
pkill [options][process_name_pattern]
Contoh:
Mari kita paparkan proses yang sedang berjalan menggunakan atas
perintah. Anda juga boleh menggunakan ps
arahan untuk menyenaraikan proses.
atas
atas - 14:24:02 ke atas 3:12, 1 pengguna, purata beban: 0.29, 0.48, 0.58 Tugasan: 221 jumlah, 1 berlari, 172 tidur, 0 berhenti, 1 zombie %Cpu(s): 5.6 kami, 1.0 sy , 0.0 ni, 92.9 id, 0.4 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem : 3928240 jumlah, 610456 percuma, 2233152 terpakai, 1084632 buff/cache KiB Swap: 40838 percuma, 4878 percuma 1187268 avail Mem PID USER PR NI VIRT RES SHR S% CPU% MEM TIME + COMMAND 4077 gaurav 20 0 3.312.128 673.480 118.360 S 19.6 17.1 15: 13.23 Kandungan Web 3712 gaurav 20 0 3.953.008 453.544 116.476 S 4.0 11.5 9: 28.39 MainThread 2010 gaurav 20 0 4084232 111096 45.024 S 1.7 2.8 3: 14.85 gnome-shell 1197 root 20 0 1.039.612 33704 22988 S 1.0 0.9 3: 04,42 Xorg 1426 couchdb 20 0 3.772.396 16908 2520 S 0.7 0.4 1: 50,83 beam.smp 3288 gaurav 20 0 722.480 25.048 18.272 S 0.7 0.6 0: 06,84 gnome-terminal- 3915 gaurav 20 0 2.804.900 231.524 111.228 S 0.7 5.9 0: 54,42 Kandungan web 4146 gaurav 20 0 3.017.924 245.304 120.604 S 0.7 6.2 2: 01,21 Kandungan web 4417 gaurav 20 0 2.964.208 234.396 119.160 S 0.7 6.0 0 :59.90 Kandungan Web 4860 gaurav 20 0 3066800 372920 132544 S 0.7 9.5 0:48.20 Kandungan Web 16007 gaurav 20 0 41944 3780 3110.2 R 0.0: 01.
menggunakan atas
arahan akan memaparkan berbilang proses pada terminal anda. Mari kita cuba memaparkan proses dengan nama tertentu. Kami akan menggunakan grep
arahan untuk memaparkan proses yang namanya sepadan dengan rentetan 'mongo'.
atas | grep -i mongo
Nota: Di sini, saya telah menggunakan pilihan -i untuk menjadikan carian tidak sensitif huruf besar.
Output arahan ini akan memaparkan proses yang sepadan dengan nama 'mongo'
1158 MongoDB 20 0 288.564 4848 1320 S 0.7 0.1 1: 03,22 mongod 1158 MongoDB 20 0 288.564 4848 1320 S 1.0 0.1 1: 03,25 mongod 1158 MongoDB 20 0 288.564 4848 1320 S 0.7 0.1 1: 03,27 mongod 1158 MongoDB 20 0 288.564 4848 1320 S 0.7 0.1 1: 03,29 mongod 1158 MongoDB 20 0 288.564 4848 1320 S 0.7 0.1 1: 03,31 mongod 1158 MongoDB 20 0 288.564 4848 1320 S 0.7 0.1 1: 03,33 mongod 1158 MongoDB 20 0 288.564 4848 1320 S 1.0 0.1 1: 03,36 mongod 1158 MongoDB 20 0 288.564 4848 1320 S 0.7 0.1 1: 03,38 mongod 1158 MongoDB 20 0 288.564 4848 1320 S 0.7 0.1 1: 03,40 mongod 1158 MongoDB 20 0 288.564 4848 1320 S 1.0 0.1 1: 03,43 mongod 1158 MongoDB 20 0 288.564 4848 1320 S 0.7 0.1 1: 03.45 mongod 1158 MongoDB 20 0 288.564 4848 1320 S 1.0 0.1 1: 03,48 mongod 1158 MongoDB 20 0 288.564 4848 1320 S 0.3 0.1 1: 03,49 mongod 1158 MongoDB 20 0 288.564 4848 1320 S 1.0 0.1 1: 03,52 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0.7 0.1 1:03.54 mongod 1158 mongodb 20 0 288564 4848 1320 S 1.0 0.1 1:03.57 mongod
Sekarang, kita akan menggunakan pkill
perintah untuk membunuh proses yang dinamakan 'mongo'.
pkill mongo
Perintah ini kini akan membunuh proses mongo. Kami boleh mengesahkan jika proses telah dipaksa untuk berhenti dengan menggunakan pgrep
arahan yang memaparkan pid
proses berjalan mengikut kriteria yang ditentukan oleh pengguna.
gaurav@ubuntu:~$ pgrep mongo gaurav@ubuntu:~$
Perintah ini tidak akan mengembalikan nilai. Ini mengesahkan bahawa proses 'mongo' kini dibunuh menggunakan pkill
perintah.
Pilihan yang kerap digunakan dengan pkill
perintah
Semasa menggunakan pkill
arahan kami akan memerlukan pilihan yang disebutkan untuk penggunaan yang betul dan mudah pkill
perintah.
Pilihan | Penerangan |
-f | padankan dengan hujah penuh termasuk ruang, petikan, aksara khas |
-u | untuk memaklumkan proses pkill agar sepadan dengan proses yang dijalankan oleh pengguna yang ditentukan |
-1 | memuatkan semula proses |
-9 | membunuh proses |
-15 | dengan anggun membatalkan proses |
Mari kita lihat satu lagi contoh pkill
arahan menggunakan -f
pilihan.
Terdapat dua arahan yang sedang dilaksanakan pada terminal seperti yang ditunjukkan di bawah.
ping bbc.com ping youtube.com
Kedua-dua proses dimulakan oleh ping
perintah. Sekarang, katakan kita ingin menamatkan hanya satu proses "ping youtube.com" maka kita perlu menggunakan -f
pilihan dengan pkill
arahan yang membunuh proses dengan nama tertentu termasuk ruang dan petikan daripada nama proses.
Perintah:
gaurav@ubuntu:~$ pkill -f "ping youtube.com" gaurav@ubuntu:~$
Keputusan:
gaurav@ubuntu:~$ ping youtube.com PING youtube.com (142.250.67.206) 56(84) bait data. 64 bait daripada bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 masa=30.9 ms 64 bait daripada bom12s08-in-f14.1e100.net (142.250.net) =117 masa=121 ms 64 bait daripada bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=206 ttl=117 masa=86.5 ms 64 bait daripada bom12s08-in-f10.206.208-in-f14.206 ): icmp_seq=207 ttl=117 masa=105 ms Ditamatkan gaurav@ubuntu:~$
Di sini, "ping youtube.com
"proses kini dibunuh dan "ping bbc.com
” masih berjalan di terminal.
Dalam kes, jika kita telah menggunakan pkill ping
perintah, ia akan membunuh kedua-duanya ping
proses, yang tidak diingini.
Isyarat digunakan dengan pkill
perintah
pkill
memaksa sesuatu proses untuk berhenti dengan menghantar isyarat khusus kepada proses itu. Terdapat tiga isyarat yang mungkin pkill
arahan boleh dihantar ke proses bergantung pada arahan yang diberikan pengguna.
Berikut ialah senarai isyarat yang ada.
Isyarat | Spesifikasi |
1 (HUP ) | memuatkan semula proses yang ditentukan |
9 (BUNUH ) | membunuh proses yang ditentukan |
15 (JANGKA ) | perlahan-lahan menghentikan atau membatalkan proses yang ditentukan |
Untuk tutorial ini, kami akan sangat bergantung pada BUNUH
isyarat. Mari kita lihat beberapa contoh untuk memahaminya dengan lebih baik.
Menggunakan pgrep
perintah untuk mendapatkan pid
sepadan dengan nama apache.
gaurav@ubuntu:~$ pgrep apache 1218 10402 10403 gaurav@ubuntu:~$
pkill -KIll apache
ATAU anda juga boleh menggunakan arahan dengan nombor (cth. 1, 9, 15)
pkill -9 apache
Kedua-dua arahan yang ditunjukkan di atas akan membunuh proses apache. Mengesahkan dengan pgrep
perintah lagi.
gaurav@ubuntu:~$ pgrep apache gaurav@ubuntu:~$
sebagai pgrep
arahan tidak mengembalikan output, membuktikan bahawa proses apache telah dibunuh.
Kesimpulan
Dalam tutorial ini, kami belajar tentang pkill
arahan dan cara ia digunakan untuk mematikan proses menggunakan nama proses secara langsung. Kami juga belajar tentang pgrep
arahan yang digunakan untuk mengambil id proses proses yang dijalankan oleh mana-mana pengguna tertentu. The pgrep
arahan membolehkan kami menyemak silang sama ada proses itu terbunuh.