Seorang kolega saya baru-baru ini mengalami masalah di mana proses yang seharusnya mati masih terikat ke port jaringan, mencegah proses lain dari mengikat ke port itu. Secara khusus, netstat -a -b
melaporkan bahwa proses yang dinamai System
dengan PID 4476 memiliki port 60001 terbuka, kecuali tidak ada proses dengan PID 4476 ada, setidaknya sejauh yang saya tahu.
Process Explorer dan Task Manager tidak mencantumkan PID 4476 (meskipun ada proses lain yang dinamai System
dengan PID 4, yang memiliki rangkaian koneksi TCP yang tidak menyertakan 60001). taskkill /PID 4476
juga melaporkan bahwa PID 4476 tidak dapat ditemukan.
Apakah ada cara untuk membunuh proses Sistem misterius ini untuk membebaskan port yang terikat saat ini? Apa yang dapat menyebabkan ini terjadi? Bagaimana mungkin ada proses yang tidak diketahui oleh Task Manager, Process Explorer, dan taskkill? Reboot berhasil memperbaiki masalah, tetapi saya ingin tahu apakah ada cara untuk memperbaikinya tanpa me-reboot.
Jawaban:
Saya tahu ini adalah utas lama, tetapi jika ada orang lain yang memiliki masalah yang sama, saya telah ...
Apa yang mungkin terjadi adalah bahwa proses Anda memiliki port TCP terbuka ketika crash atau keluar tanpa secara eksplisit menutupnya. Biasanya OS membersihkan hal-hal ini, tetapi hanya ketika catatan proses hilang. Meskipun proses tersebut tampaknya tidak berjalan lagi, setidaknya ada satu hal yang dapat menyimpan catatan tentangnya, untuk mencegah penggunaan kembali PID-nya. Ini adalah keberadaan proses anak yang tidak terlepas dari orang tua.
Jika program Anda menghasilkan proses apa pun saat sedang berjalan, coba bunuh mereka. Itu harus menyebabkan catatan prosesnya dibebaskan dan port TCP dibersihkan. Rupanya windows melakukan ini ketika catatan dirilis tidak ketika proses keluar seperti yang saya harapkan.
sumber
Apakah Anda mencoba menggunakan TCPView dan menutup koneksi? Saya tidak tahu apakah itu akan menunjukkan hubungan dalam skenario yang Anda gambarkan, karena saya belum pernah mengalami itu pada saya. Tapi itu satu-satunya hal yang bisa saya pikirkan jika ini terjadi lagi.
Apa prosesnya - apakah itu perangkat lunak komersial, atau sesuatu buatan sendiri? Tampaknya port 60001 digunakan oleh beberapa Trojan - Saya ingin tahu apakah itu bisa menjadi rootkit atau sesuatu yang bisa menyembunyikan diri dari OS? Mungkin ingin memberikan mesin yang baik sekali-dengan AV, mungkin sesuatu dari media bootable.
sumber
Buka command prompt sebagai admin
*** Ulangi langkah 2 sampai tidak ada lagi proses anak
C: \ WINDOWS \ system32> proses wmic di mana (ParentProcessId = 1091) mendapatkan Keterangan, ProcessId
Keterangan TeksId
cmd.exe 1328
2.a. C: \ WINDOWS \ system32> proses wmic di mana (ParentProcessId = 1328) mendapatkan Keterangan, ProcessId
2.b. ulangi ini sampai tidak ada lagi proses anak yang ditemukan
- Lalu bunuh semua proses anak
sumber
Saya telah menghadapi masalah yang sama sebelumnya, perintah netstat -a -n windows memberi saya daftar port terbuka dengan ID proses. Dari itu saya telah mengambil nomor port yang ingin saya tutup koneksi dan kemudian saya menutup koneksi menggunakan perangkat lunak TCPView. Ini berhasil untuk saya.
sumber
Jika Anda pengguna windows maka ikuti langkah-langkah di bawah ini Langkah1: Buka jalur ini: Control Panel \ All Control Panel Items \ Administrative Tools
Langkah2: Klik pada layanan
Langkah 3: Hentikan layanan yang tidak diinginkan yang berjalan di port yang diinginkan.
sumber
ps-id | grep processname
bunuh proses terkait
bunuh -9 pid pid
Bekerja dalam kasus saya
sumber