轻松确认进程监听的端口,并方便地输出使用的端口和服务
你好,我是无能。
哎呀,标题里用的短语好像在哪里听过...
我至今偶尔还会觉得那是个不错的网站名,最近体检时血压完美地测出了低血压60-100。
第二次测的值是严重的低血压,果然还是用了第一次的数值。
前言
突然
“我想清晰地输出正在使用的端口及其服务是什么”
我这样想了。
原因如下
- 在个人运营中,无需服务器架构图,就能轻松查看和输出
- 想以md格式或文本文件输出
- 确认使用端口
说实话,自己运行的东西越来越多,渐渐地会忘记用了哪些端口?
这样的情况也越来越多,如果能将自己想要的信息整理出来,就可以将其脚本化,然后以.md格式的文件轻松查看。
顺便说一下,为什么我坚持使用文本文件,是因为
数据处理起来更方便
这一点我将在后面详细说明。
简单地只需输入这一行
lsof -i -P -n | grep "LISTEN" | awk '{print $1 "," $3 "," $9}' | sort | uniq
结果如下
$ lsof -i -P -n | grep "LISTEN" | awk '{print $1 "," $3 "," $9}' | sort | uniq
pulseaudi,haturatu,*:38169
pulseaudi,haturatu,*:44409
pulseaudi,haturatu,*:4713
它会像这样输出。
顺便说一下,即使没有lsof选项,输出结果也是一样的,但由于BSD版本似乎有所不同,所以我完整地添加了所有选项。
转换为CSV
虽然文件格式有很多种说法,但我个人喜欢CSV格式。
说实话,在处理CSV文件时,我觉得CSV还不错。唯一显而易见的问题是,如果用sed替换逗号,那么如果字符串中也使用了逗号,它也会被替换掉。
TSV我还不熟悉,所以CSV更好。(说实话,如果用sed替换,逗号和制表符哪个更不容易出错呢...)
话题好像跑偏了,但如果能轻松转换为CSV格式,就可以直接复制粘贴到Excel,或者直接打开,可读性也很高。
简单地将标准输出重定向为.csv文件,用LibreOffice等工具也能轻松打开。接下来,我们添加TCP和UDP的信息。
$ lsof -i -P -n | grep "LISTEN" | awk '{print $1 "," $3 "," $9 "/" $8}' | sort | uniq > test.csv

会变成这样
这样一来
可能更容易可视化。
说实话,一开始我没有用printf %10s之类的来添加空格,而是笨拙地用print " "来输出,但作为转换为CSV格式的前提命令,最终通过管道传递给column命令,感觉命令本身会更清晰易读...
如果转换为Markdown格式
最初我想按照md格式做成表格...但md格式的表格我不太喜欢,所以觉得用“```”来方便复制粘贴就可以了...
如果需要,就用awk打印输出。
我想以md格式输出的目的是,如果将其作为cron定期推送到GitHub等私有仓库,就可以随时轻松查看。
考虑其他所需内容
此外,作为磁盘容量确认,可以使用df -h、vmstat、free等命令,但这有点像是对整个系统进行资源监控,所以可能需要从/proc/cpuinfo、/proc/meminfo等地方提取信息...
如果能让数据库表信息更容易可视化就更好了,如果能通过which *执行一些数据库相关命令,只输出返回状态码为0的指定数据库信息,那就更完善了。但这一点做起来有点麻烦。
架构图因人而异,详细的中间件产品设计文档当然也是必需的,但我发现如果系统全貌没有统一整理,查看起来会很麻烦,所以我在想有没有什么个人更容易管理的方法。
像draw.io那样轻松绘图也很方便,但我也想降低绘图前的确认成本。
附录 Wireguard的沉默
顺便说一下,我在操作时想到,Wireguard作为UDP51820运行,为什么lsof不显示呢?后来找到了答案。
the wireguard not listening on port after started
Raspberry Pi で WireGuard + VPS
看来是因为它作为内核模块运行。根据我自己的理解,Wireguard在第三层运行,而“显示进程打开的文件”的工具不输出它,是这样吗?
顺便说一下,Red Hat的日文文档非常易懂。
第8章 WireGuard VPN の設定
今天的分享就到这里。如果我想到其他好点子,可能会继续写,也可能不会。
再次感谢大家。