Seperti judulnya, saya menjalankan beberapa server game, dan masing-masing memiliki server yang sama name
tetapi berbeda PID
dan port
jumlahnya. Saya ingin mencocokkan PID
server yang mendengarkan pada port tertentu, dan kemudian saya ingin menghentikan proses ini. Saya membutuhkannya untuk menyelesaikan skrip bash saya.
Apakah itu mungkin? Karena belum menemukan solusi apa pun di web.
netstat: 80: unknown or uninstrumented protocol
menggunakan80
port (nginx) untuk menguji purpoes. Tidak bekerja.netstat -nlp | grep :80
sebagai gantinyanetstat: option requires an argument -- p
netstat
dipanggil. Ini memiliki sintaks lainnya.Versi singkat yang dapat Anda lewati untuk membunuh perintah:
sumber
lsof -i4TCP:80 -sTCP:LISTEN -t
mungkin itulah yang Anda inginkan.kill -9 `lsof -i:80 -t`
untuk kemudahan menyalinnetstat -p -l | grep $PORT
danlsof -i :$PORT
solusinya bagus tetapi saya lebih sukafuser $PORT/tcp
sintaks ekstensi ke POSIX (yang berfungsi untukcoreutils
) seperti pipa:itu mencetak pid murni sehingga Anda bisa melepaskan
sed
sihir.Satu hal yang membuat
fuser
alat kekasih saya adalah kemampuan untuk mengirim sinyal ke proses itu secara langsung (sintaks ini juga ekstensi ke POSIX):Juga -k didukung oleh FreeBSD: http://www.freebsd.org/cgi/man.cgi?query=fuser
sumber
netstat -nlp
harus memberi tahu Anda PID dari apa yang mendengarkan di port mana.sumber
netstat: 80: unknown or uninstrumented protocol
menggunakan80
port (nginx) untuk menguji purpoes. Tidak bekerja.Karena sockstat tidak diinstal secara asli di komputer saya, saya meretas jawaban stanwise untuk menggunakan netstat sebagai gantinya ..
sumber
Saya ingin secara terprogram - hanya menggunakan Bash - menghentikan proses mendengarkan pada port tertentu.
Katakanlah port-nya adalah 8089, maka inilah cara saya melakukannya:
Saya harap ini membantu orang lain! Saya tahu ini akan membantu tim saya.
sumber
function kill-listener { lsof -i:$1 -t | xargs kill -9 }
Menggunakan contoh port 8089:kill-listener 8089
Sintaksis:
Contoh: Untuk menghentikan proses yang berjalan di port 4200, jalankan perintah berikut
Diuji di Ubuntu.
sumber
di windows, opsi netstat untuk mendapatkan pid's adalah -o dan -p memilih filter protokol, mis .: netstat -a -p tcp -o
sumber