Panduan ini memperincikan bagaimana untuk mengenal pasti dan menamatkan proses Linux terikat kepada port rangkaian tertentu. Ini adalah penting untuk menyelesaikan masalah aplikasi yang tidak bertindak balas atau membebaskan pelabuhan untuk perkhidmatan lain. Kami akan meneroka beberapa alat baris arahan untuk mencapai tugas ini dengan cekap.
Pengenalan
Proses berganda boleh menggunakan port rangkaian secara serentak. Proses yang tidak bertindak balas boleh mengganggu fungsi aplikasi atau ketersediaan perkhidmatan, yang memerlukan penamatan untuk melepaskan pelabuhan yang diduduki. Sebagai contoh, pelayan web Apache yang tidak responsif (biasanya menggunakan port 80 atau 443) memerlukan penamatan dan memulakan semula untuk memulihkan kebolehcapaian laman web. Tutorial ini meliputi menggunakan perintah fuser
, lsof
, netstat
, dan ss
untuk mencari dan menamatkan proses ini.
Mengenal pasti dan menamatkan proses dengan fuser
Perintah fuser
mengenal pasti proses menggunakan fail atau soket tertentu. Ia adalah sebahagian daripada pakej psmisc
; Pasangnya jika diperlukan menggunakan Pengurus Pakej Pengedaran anda (misalnya, sudo apt install psmisc
pada Debian/Ubuntu, sudo pacman -S psmisc
pada Arch Linux).
Kenal pasti proses: Gunakan fuser<port_number> /tcp</port_number>
(atau /udp
untuk UDP). Sebagai contoh, fuser 8080/tcp
menunjukkan proses menggunakan port TCP 8080.
Menamatkan proses: fuser -k 8080/tcp
menamatkan proses menggunakan port TCP 8080. Perhatikan bahawa port mungkin kekal dalam keadaan TIME_WAIT
secara ringkas selepas penamatan.
Menggunakan lsof
untuk mengenal pasti dan membunuh proses
lsof
(senarai fail terbuka) menyediakan maklumat terperinci mengenai fail terbuka dan proses yang berkaitan.
Cari ID Proses (PID): sudo lsof -i :<port_number></port_number>
Senarai proses menggunakan port yang ditentukan. Sebagai contoh, sudo lsof -i :8080
menunjukkan proses menggunakan port 8080. Cari PID.
Menamatkan proses: Gunakan sudo kill -9<pid></pid>
, menggantikan<pid></pid>
dengan ID proses. -9
menghantar isyarat SIGKILL
yang kuat.
Perintah lsof
satu-liner untuk penamatan:
Satu -liner ringkas menggabungkan pengenalan dan penamatan proses: kill -9 $(lsof -t -i:8080 -sTCP:LISTEN)
. Ini membunuh proses mendengar di port TCP 8080. Gunakan dengan berhati -hati; SIGKILL
kuat.
netstat
dan ss
untuk penamatan perkhidmatan
netstat
dan ss
(Socket Statistik) memaparkan butiran sambungan rangkaian. ss
biasanya lebih disukai untuk kecekapannya dan output yang lebih jelas.
Kenal pasti perkhidmatan: Gunakan sudo netstat -tnlp | grep<service_name></service_name>
atau sudo ss -tnlp | grep<service_name></service_name>
Untuk mencari PID perkhidmatan (contohnya, grep apache
).
Tamatkan Perkhidmatan: Gunakan sudo kill<pid></pid>
atau sudo kill -9<pid></pid>
untuk menamatkan proses.
Soalan Lazim (Soalan Lazim)
(Bahagian ini kekal tidak berubah dari yang asal, kerana ia memberikan maklumat yang berharga.)
Kesimpulan
fuser
, lsof
, netstat
, dan ss
menawarkan kaedah yang mantap untuk menguruskan proses dan pelabuhan. Pilih alat yang paling sesuai untuk keperluan anda dan sentiasa berhati -hati apabila proses menamatkan dengan kuat. Ingat potensi untuk tidak dapat dilihat oleh pelabuhan ringkas kerana keadaan TIME_WAIT
.
Atas ialah kandungan terperinci Cara Membunuh Proses Berjalan di Pelabuhan Khusus di Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!