lsof的更快替代品


8

我想提取某个进程的进程ID以便将其关闭。进程是使用特定端口(localhost:3000)的本地Web服务器,我目前正在这样做,以提取相关行:

lsof|grep localhost:3000

但是lsof命令太慢。有没有更快的方法来提取进程ID?


lsof -i仅列出网络连接。
Hanan N.

@HananN。我试过了,但是还是很慢。按照答案中的建议使用netstat更快。
sawa

2
lsof不是最慢的部分,使用所有名称解析和ip解析是。将其全部设为数字,它将快速进行。
Marcin

@Marcin您的信息实际上和给出的答案一样有帮助。谢谢。
sawa

是否有任何理由可以t use killall` pgreppkill
尼尔斯

Answers:


7

尝试netstat,但是我不能说它是更快还是更慢。

netstat -tanp | awk '$4 ~ /:8443$/ {sub(/\/.*/, "", $7); print $7}' | sort -u

1
我了解使用-p选项,Linux要求您成为root用户。
Nikhil Mulley

1
绝对更快,因为netstat仅列出网络连接(而不是所有打开的文件)
Matteo

感谢您快速准确的答复。我帮了我很多
sawa

11

您可以在lsof中添加-n选项,然后删除DNS解析,这可以加快显示速度


是的,这似乎可以解决问题,并且很有帮助。这是Marcin在对我的回答的评论中提出的部分建议。
sawa

1
报告的lsof时间为10秒,与n选项无关。
user1133275 '18

2
sudo ss -p -l '( sport = :3000 )'|awk -F"," 'NR!=1{print $2}'

这将打印监听3000的进程的PID

time 报告此操作已在0m0.018s内完成。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.