У меня есть сервер RHEL с несколькими приложениями, и я пытаюсь выяснить, какое из них выполняет вызовы внешней веб-службы. У меня есть дампы TCP, которые показывают выполняемые вызовы, и с помощью различных инструментов я могу определить, какой эфемерный порт выполняет эти вызовы. Однако я не могу понять, как сопоставить этот эфемерный порт с pid. Я знаю, что могу использовать lsof -i
чтобы сопоставить связанные порты с pid, но это не моя проблема.
Есть ли способ сопоставить используемый эфемерный порт с pid или каким-либо другим индикатором того, какой файл выполняет вызов?
lsof -i $PROTOCOL:$PORT
fuser $PORT/$PROTOCOL
netstat -np | grep $PORT
Любой из них должен работать. Ниже приведен пример выходных данных, показывающих, что мой почтовый клиент использует временный порт 56375 для связи с сервером IMAP для дальнейшего объяснения:
$ sudo netstat -np | grep 56375
tcp 0 0 192.168.1.1:56375 217.70.184.11:993 ESTABLISHED 3256/thunderbird
$ fuser 56375/tcp
56375/tcp: 3256
$ lsof -i tcp:56375
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
thunderbi 3256 me 87u IPv4 510573 0t0 TCP hostname:56375->example.com:imaps (ESTABLISHED)
netstat
перечислит все pid и порт, относящиеся друг к другу. netstat -nlp
предоставит вам порт для сопоставления pid.