ubuntu 16.04
У меня есть 2 узловых приложения, app-1 и app-2, с именами пользователей, совпадающими с именами их приложений, прослушивающих локально (на портах 8001 и 8002, соответственно) на одном и том же экземпляре. Когда app-1 делает запрос к app-2, я могу найти remoteHost сокета, обрабатывающего запрос от app-2. Затем, когда я пытаюсь найти этот remoteHost через netstat и получить некоторую информацию о пользователе/процессе, я обнаруживаю, что пользователь, связанный с сокетом - uid: 0
или root
. Я ожидал, что пользователь, связанный с этим соединением, будет app-1
, так как это приложение, в котором генерируется запрос. Итак, часть 1 моего вопроса: почему пользователь root
, а не app-1
?
Часть 2: Моя цель - получить идентификатор пользователя удаленного процесса, основываясь только на информации в remoteHost
(например, 127.0.0.1:53900). Мне кажется, что операционная система должна точно знать, какой процесс/идентификатор пользователя использует данную комбинацию хост/порт. Итак, предполагая, что netstat
не работает по причинам, указанным в предыдущем абзаце, какие еще системные вызовы или утилиты я могу использовать для получения этой информации?
К сожалению, я думаю, что проблема в части 1 заключается в том, что я проверял соединение только после того, как оно уже было закрыто на одной стороне (состояние было время ожидания
). В качестве теста я изменил тип подключения на keep-alive, и теперь информация о пользователе отображается должным образом.
Ответом для части 2 будет чтение тех же файлов, что и netstat
(/ proc / net / *), и поиск remoteHost
.