3P => Program, Pid, Port
在 Linux 下有好几种工具来做 program(程序名), pid(进程号), port(端口) 之间的对应
1. ps 做了 pid 和 program 之间的对应
2. netstat 做了 port 和 pid/program 之间的对应
3. pgrep 做了 program 和 pid 之间的对应
...
ps 和 netstat 很强大,但是参数多而且很多输出列其实无关紧要,pgrep 默认不是 exact match, 比如 pgrep ss 会把 sshd 的 pid 也输出出来。
更重要的是,对于普通用户来说,很多只关心 3 个核心参数: program, pid 和 port
今天我用 bash 实现了三者互查:
1. 给 port 会输出对应的 pid 和 program name;
2. 给 pid 会输出 program name 和 port(s) (如果没有会是 none, 如果有多个会以空格为间隔输出)
3. 给 program 会输出所有对应进程的 pid, 以及每个 pid 对应的 port(s)
当然如果输入的参数无效,回给提示并返回一个非 0 的状态码
这是地址: https://github.com/librz/shell_scripts/blob/main/3p.sh
我是在 .zshrc 里写了一个 alias:
alias 3p="bash <(curl -sL https://raw.githubusercontent.com/librz/shell_scripts/main/3p.sh)"
这样就能直接用了, 以下是一些例子:
# who's listening on port 9000?
3p --port 9000
# I have pid 1234, what kind of program is it? is it using any port?
3p --pid 1234
# I want to see all process and ports related to node
3p --program node
我知道很多前辈肯定已经写过这种程序,但自己还是要写一遍,哈哈
1
yuananf 2021-01-29 00:21:46 +08:00 via Android 8
看标题准备举报了,进来一看,打扰了
|
2
jinliming2 2021-01-29 00:37:58 +08:00 8
emmmm,alias 里写个 curl 真的不觉得慢吗……要是网突然断了怎么办……
我是习惯于直接 lsof 。 比如端口 lsof -i:9000 、lsof -iTCP:9000 、lsof -iUDP:9000 查 PID 的端口:lsof -i -ap1234 、lsof -iTCP -ap1234 、lsof -iUDP -ap1234 查进程名的端口:lsof -i -ac node 、lsof -i:TCP -ac node 、lsof -i:UDP -ac node 。并且支持正则:lsof -i -ac '/Node$/i' |
3
sleepm 2021-01-29 01:17:20 +08:00 via Android
ss -antpl
netstat -luntap lsof 最方便,不用装默认就有 |
4
Pastsong 2021-01-29 01:22:44 +08:00 via Android
上来就跑一个网络地址的未知脚本也太不安全了吧。。
|
5
felixcode 2021-01-29 02:07:26 +08:00 via Android
ls 命令参数太多输出列太多也做个 curl 脚本?
|
6
fzinfz 2021-01-29 02:29:26 +08:00 1
代码有点长。。。我写了个一行版本:
netstat_keyword(){ netstat -lntup | grep --color -P "\b$1\b"; } 感觉也能实现楼主需求? |
7
ihwbunny 2021-01-29 04:30:20 +08:00
👍 鼓励楼主
|
8
df4VW 2021-01-29 04:53:15 +08:00 1
确实不是我想的 3p
|
9
blogfeng 2021-01-29 07:57:54 +08:00 via Android
进来前想举报,进来后更想举报。
|
10
css3 2021-01-29 08:17:54 +08:00 via iPhone
@jinliming2 学习了,老哥
|
12
masker 2021-01-29 08:35:16 +08:00 via Android
这。。。。。。。
|
14
DevAlex 2021-01-29 09:19:59 +08:00
略感失望 0.0
|
15
Tumblr 2021-01-29 09:34:51 +08:00
抱着猎奇的心情来😍,带着失望的心情走😌
|
16
40EaE5uJO3Xt1VVa 2021-01-29 09:37:27 +08:00
centos 好像没有默认张 lsof
|
17
0ZXYDDu796nVCFxq 2021-01-29 09:41:14 +08:00 via Android
Shell 配置里直接写个远程脚本……
|
19
ScotGu 2021-01-29 10:17:49 +08:00
哎哟~ 额, 学习了!谢谢 LZ 分享。
转头骂骂咧咧走开了。 |
20
Aynamic 2021-01-29 10:25:20 +08:00 via iPhone
嫌弃列多用 awk 选择需要的列不就好了?
|
21
IceMimosa 2021-01-29 10:39:33 +08:00
奇怪的词语又增加了。。
|
22
dimlau 2021-01-29 10:40:50 +08:00
不是我理解的那种使用场景诶……
|
23
piecezzz 2021-01-29 10:51:44 +08:00
啊这
|
24
vision1900 OP @jinliming2 原来 lsof 这么强大,之前有遇见过,list open files, 看来是把 sockets 也看成文件了,回头再看看,学习了
|
25
tikazyq 2021-01-29 11:03:07 +08:00
我 xx 都拖了,就给看这
|
26
someonedeng 2021-01-29 11:11:52 +08:00
没点进来还以为什么敏感的查询网站呢
|
27
Thresh 2021-01-29 11:27:51 +08:00
确实不是我想想中的 3p,差评。
|