Linux

使用特定埠查找程序的 PID?

  • May 4, 2021

我正在我的 Ubuntu 系統上安裝 hadoop。當我啟動它時,它報告埠 9000 正忙。

我用了:

netstat -nlp|grep 9000

看看是否存在這樣的埠,我得到了這個:

  tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN

但是我怎樣才能得到持有它的程序的PID呢?

您現有的命令不起作用,因為 Linux 要求您是 root 或程序的所有者才能獲得所需的資訊。

在現代系統上,ss是用於獲取此資訊的適當工具:

$ sudo ss -lptn 'sport = :80'
State   Local Address:Port  Peer Address:Port              
LISTEN  127.0.0.1:80        *:*                users:(("nginx",pid=125004,fd=12))
LISTEN  ::1:80              :::*               users:(("nginx",pid=125004,fd=11))

您也可以使用目前正在使用的相同呼叫,但您必須首先使用以下命令進行提升sudo

$ sudo netstat -nlp | grep :80
tcp  0  0  0.0.0.0:80  0.0.0.0:*  LISTEN  125004/nginx

您還可以使用 lsof:

$ sudo lsof -n -i :80 | grep LISTEN
nginx   125004 nginx    3u  IPv4   6645      0t0  TCP 0.0.0.0:80 (LISTEN)

引用自:https://unix.stackexchange.com/questions/106561