В 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?

LanceBaynes
источник

Ответы:

10

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

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

Жиль "ТАК - перестань быть злым"
источник
lsof не всегда доступен в AIX: P
LanceBaynes,
2
Поэтому скачайте его или скомпилируйте из исходного кода , это рекомендовано IBM .
Жиль "ТАК - перестать быть злым"
на машинах не всегда есть "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
Saumil
источник
0

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

ps uwx | grep 1482
# or 
ps uex | grep 1482
frogstarr78
источник
Вы можете проверить руководство онлайн. AIX psподдерживает традиционные флаги BSD, но как помогают указанные флаги?
Жиль "ТАК - прекрати быть злым"
Хм, похоже, они делают разные вещи в AIX. Хотя в документации, на которую вы ссылались, есть опция l, которая печатает поля «USER, PID,% CPU,% MEM, SZ, RSS, TTY, STAT, STIME, TIME и COMMAND»
frogstarr78
0
netstat -ape | grep $PortNumber
анонимное
источник
Не могли бы вы объяснить, что делает команда? Вставка кода без обоснования не очень полезна.
n0pe