Saya menginstal hadoop pada sistem Ubuntu saya. Ketika saya memulainya, ia melaporkan bahwa port 9000 sedang sibuk.
Saya menggunakan:
netstat -nlp|grep 9000
untuk melihat apakah port tersebut ada dan saya mendapatkan ini:
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
Tetapi bagaimana saya bisa mendapatkan PID dari proses yang menahannya?
netstat
perintah mungkin bekerja di banyak sistem operasi untuk memungkinkan Anda mendapatkannya, Anda hanya perlu menemukan argumen yang akan memastikan itu akan menunjukkan pids di sepanjang setiap port yang dikenal terbuka.Jawaban:
Di Linux, Anda harus menjadi root atau pemilik proses untuk mendapatkan informasi yang Anda inginkan. Dengan demikian, untuk proses yang berjalan sebagai pengguna lain, prapembuatan
sudo
adalah yang paling Anda butuhkan. Selain itu, pada sistem Linux modern,ss
adalah alat yang digunakan untuk melakukan ini:Anda juga dapat menggunakan doa yang sama dengan yang Anda gunakan saat ini, tetapi ingat untuk
sudo
:Anda juga dapat menggunakan lsof:
sumber
-p
opsinya adalah untuk protokol daripada proses. Lihat pertanyaan iniFinding the PID of the process using a specific port
sudo
di atas.lsof -ti tcp:80
Anda juga dapat menggunakan
lsof
utilitas. Perlu di-root.sumber
established
koneksi, bukan hanya proses yang adalistening
.lsof -i :25 -Fp
, yang menghasilkan output sepertip1234
.Saya menggunakan "CentOS 7 minimal" yang tidak memiliki
netstat
keduanyalsof
. Tetapi banyak distribusi linux memiliki perintah statistik socket (yaituss
).Berikut ini contoh eksekusi:
sumber
ss -pntl 'sport = :6379'
Menjalankan perintah dengan
sudo
akan memberi AndaPID
. Di mesin pengembangan saya, saya mendapatkan:Dan seperti yang disebutkan dalam jawaban lain Anda juga dapat menggunakan perintah
ss
ataulsof
.sumber
sudo
ID proses tampilansudo netstat -nlp | grep 34157
masih menampilkan-
bukan PID?Anda juga dapat menggunakan
fuser
:Hasil :
sumber
sudo
jika proses pelanggaran juga dimulai dengansudo