如何持续监控连接到本地套接字的PID?

如何持续监控连接到本地套接字的PID?

一些本地进程正在连接和断开到端口 1234 上的 127.0.0.1。

我想记录与此端口(或服务器进程)的所有连接。

我试过了

 ss -tpn | grep 1234 

它显示一个列表,但随后停止;它不会继续记录新连接,因此我无法捕获套接字或所有者的 PID。

我可以使用什么工具来发现连接和断开套接字的PID?

答案1

有一个“监视”工具可以做到这一点,或者您可以
while true; do sleep 2; clear; ss -tulnp | grep 1234 ; done
将代码附加到文件中并跟踪它。这可能会产生CPU使用率,但可能会帮助你找到你想要的东西。
Linux 监视命令

答案2

您可以使用两种工具来监视connectLinux 上的 TCP 事件:

两者之间的区别在于,前者提供了自定义输出的选项(例如,按 PID 或端口号过滤),而后者是一个更简单的工具,不提供花哨的选项。

对于您的用例,最简单的选项是安装 bcc 并运行:

tcpconnect.py -P 1234

如果您使用发行版的包管理器安装这些工具,请记住,某些发行版不会将它们放置tcpconnect/usr/bin其他位置,而是将它们放置在其他位置/usr/share。因此,如果找不到这些文件,请务必检查您的发行版放置这些文件的位置。

答案3

虽然ss仅转储套接字统计信息,并且您需要模拟连续转储(使用watchwhile循环),但netstat具有连续模式(-c)。

netstat -ntcp | grep '  127.0.0.1:1234'

请注意,如果您只需要捕获客户端 pid,则 127... 之前的两个空格不是拼写错误。
示例输出:

$ netstat -ntcp | grep '  127.0.0.1:1234'
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:35720         127.0.0.1:1234          ESTABLISHED 22655/nc            
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:35720         127.0.0.1:1234          ESTABLISHED 22655/nc            
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc

答案4

watch -n 1 -d 'lsof -n -itcp:1234'

不是日志记录,而是强大的实时监控和亮点......

$ man watch

  • -n 1 - 每 1 秒
  • -d - 突出显示差异

$ man lsof

  • -n - 不解析 ip 到域。
  • -itcp:1234 - 任何与 TCP 端口 1234 交互

相关内容