В AIX, как я могу получить полный путь к программе, связанной с портом?


14

Под Linux я могу использовать netstat -tulpnwи ps, вот так:

# netstat -tulpnw | grep :53
tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      1482/named          
udp        0      0 127.0.0.1:53                0.0.0.0:*                               1482/named          

# ps aux | fgrep 1482
named     1482  0.0  1.0  93656 44900 ?        Ssl  Sep06   3:17 /usr/sbin/named -u named
root     20221  0.0  0.0   4144   552 pts/0    R+   21:09   0:00 fgrep --color=auto 1482
# 

Как я могу получить полный путь к программе, связанной с портом при использовании kshв AIX 6?

Ответы:


10

В соответствии с рекомендациями IBM : используйте lsof -i -nи ищите порт XY. Если вы хотите разобрать вывод из lsof, используйте -Fфлаг и проанализируйте вывод с помощью awk.

Вы можете получить предварительно скомпилированные двоичные файлы для AIX V5 . Я не знаю, есть ли предварительно скомпилированные двоичные файлы для V6; если нет, найдите исходный код и скомпилируйте его.


lsof не всегда доступен в AIX: P
LanceBaynes,


на машинах не всегда есть "lsof" ... но я могу принять это как хороший ответ (другие тоже "хорошие"!)
LanceBaynes,

4

Попробуйте использовать netstatс rmsock.

port=$1
addr=`netstat -Aan | grep $port | awk '{print $1}`
pid=`rmsock $addr tcpcb | awk '{print $9}'`
ps -ef | grep $pid

Например netstat, -Aпоказывает адрес всех блоков управления протоколом, связанных с сокетами, -aопция показывает состояние всех сокетов, включая серверные процессы, а -nопция выдает выходные данные в числовой форме, поэтому вы не тратите время на попытки разрешить адреса. ,

rmsockИспользуя адрес, указанный в столбце output1 netstat, и используя tcpcbбазу данных, вы получите информацию о процессе, содержащем этот сокет, включая pid и name.

Затем вы можете использовать ps -ef | grep $pidдля получения информации о процессе.

Вы можете увидеть эту статью в журнале IBM Systems для получения дополнительной информации об этом.


это событие не выполняется правильно на моем AIX
Kiwy

1

Один из самых быстрых способов найти порт блокировки приложения - использовать lsof или lsof64 :

lsof64 -nP | grep $PortNumber

или

lsof -nP | grep $PortNumber

Выше будет возвращаться идентификатор процесса блокировки / использования данного номера порта. Как только вы это сделаете, запустите ниже, чтобы найти работающее приложение / процесс

proctree $pid

0

Я не знаком с AIX, но вы пробовали wили eформатировали аргументы ps?

ps uwx | grep 1482
# or 
ps uex | grep 1482

Вы можете проверить руководство онлайн. AIX psподдерживает традиционные флаги BSD, но как помогают указанные флаги?
Жиль "ТАК - прекрати быть злым"

Хм, похоже, они делают разные вещи в AIX. Хотя в документации, на которую вы ссылались, есть опция l, которая печатает поля «USER, PID,% CPU,% MEM, SZ, RSS, TTY, STAT, STIME, TIME и COMMAND»
frogstarr78

0
netstat -ape | grep $PortNumber

Не могли бы вы объяснить, что делает команда? Вставка кода без обоснования не очень полезна.
n0pe
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.