如何通过unix域套接字查找附加进程?


2

我使用netstat获取RefCnt列。通过/var/run/mysqld/mysqld.sock有2个附加进程。如何找到他们的PID?

# netstat -a -p -A unix

Proto RefCnt Flags       Type       State         I-Node   PID/Program name    Path
...
unix  2      [ ACC ]     STREAM     LISTENING     1432153  7517/mysqld         /var/run/mysqld/mysqld.sock
...

Answers:


1

我认为这是一个技巧问题:)

在专栏下 PID /程序名称 7517 / mysqld的 。该 7517 是PID。那是你在找什么?

你也可以做一个

ps -auxww | grep 7517

只是为了验证

编辑:

您可以使用

pgrep -P pid 获得其他进程的pid。您可以使用这个简短的Bash脚本为您提供更多详细信息,将“YOUR_PID”替换为netstat中的pid:

for x in pgrep -P YOUR_PID ; do ps auxwww | grep $x; done


我正在寻找使用此套接字的进程。根据RefCnt专栏(正如我在原始问题中提到的那样),它必须是两个pid,而不是一个,如你所建议的那样。我不是在寻找打开socket的进程,我正在寻找使用它的所有进程。
tengreencolors

更新后的答案是否能满足您的需求?
sdproto

1
不,你完全错了,你根本不理解我原来的问题和我的评论。
tengreencolors

我很确定我明白你在问什么。来自netstat的PID是附加进程的父PID,将其放在pgrep -P之后,它将返回那些子/附加进程的pid。如果您随后使用ps查找这些pid,您可以查看详细信息。我已经是Unix网络管理员超过35年了。
sdproto

谢谢你的详细解答,我的不好,我没有让你对父母的pid说得对。不幸的是,在ubuntu 16.04上,它不起作用 - 7517 PID没有孩子。我试图验证其他进程子进程计数与他们的RefCnt列 - 它们不匹配(通常处理子计数少于RefCnt)。不确定RefCnt是打开套接字的子进程计数。在netstat(8)中,RefCnt被称为“引用计数(即通过此套接字附加的进程)。” - 看起来不像“参考”意味着儿童过程。
tengreencolors
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.