Как найти присоединенные процессы через сокет домена unix?

1215
tengreencolors

Я использовал netstat для получения столбца RefCnt. И есть 2 прикрепленных процесса через /var/run/mysqld/mysqld.sock. Как найти их 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 ... 
1

1 ответ на вопрос

1
sdproto

Я думаю, что это вопрос с подвохом :)

В столбце Имя PID / Program есть 7517 / туздЫ . 7517 является PID. Это то, что вы искали?

Вы также можете сделать

ps -auxww | grep 7517

Просто чтобы проверить

РЕДАКТИРОВАТЬ:

Ты можешь использовать

pgrep -P pid, чтобы получить pid других процессов. Вы можете использовать этот короткий скрипт Bash, чтобы дать вам больше деталей, замените «YOUR_PID» на pid из netstat:

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

Я ищу процессы, которые используют этот сокет. Согласно столбцу RefCnt (как я уже упоминал в первоначальном вопросе), это должно быть два пруда, а не один, как вы предложили. Я не ищу процесс, который открывает сокет, я ищу весь процесс, который использует его. tengreencolors 7 лет назад 0
Обновленный ответ дает вам то, что вы ищете? sdproto 7 лет назад 0
Нет, вы совершенно не правы, и вы совсем не понимаете мой первоначальный вопрос и мой комментарий. tengreencolors 7 лет назад 0
Я уверен, что понимаю, о чем ты спрашиваешь. Этот PID из netstat является PID PID для прикрепленных процессов, возьмите его и поместите после pgrep -P, и он вернет точно pids этих дочерних / прикрепленных процессов. Если вы посмотрите на эти pids с помощью ps, вы сможете увидеть детали. Я был администратором Unix-сети более 35 лет. sdproto 7 лет назад 0
спасибо за подробный ответ, мой плохой, я не правильно понял насчет родительского pid. К сожалению, в Ubuntu 16.04 это не работает - нет дочерних элементов для 7517 PID. Я попытался проверить число дочерних процессов других по их столбцу RefCnt - они не совпадают (обычно дочерние процессы меньше, чем RefCnt). Не уверен, что RefCnt - это число дочерних процессов, открывших сокет. А в netstat (8) RefCnt называется «Счетчик ссылок (т.е. подключенные процессы через этот сокет)». - не выглядит как «ссылка», предназначенная для дочернего процесса. tengreencolors 7 лет назад 0
до сих пор не нашел решения через netstat и не уверен, что netstat может быть полезен. Но я нашел другое решение `lsof + E -aU | grep mysqld.sock` здесь [ссылка] (https://unix.stackexchange.com/questions/16300/whos-got-the-other-end-of-this-unix-socketpair/190606#190606) вывод в моем case: mysqld 7517 mysql 44u unix 0xffff880034932800 0t0 1432153 /var/run/mysqld/mysqld.sock type = STREAM mysqld 7517 mysql 331u unix 0xffff88000a7a8400 0t0 2001269 /var/run/mysldsock> 2000 = iso> mysqm >m * 19719 **, mysql, 3u Пид ** 19719 ** tengreencolors 7 лет назад 0

Похожие вопросы