Назад | Перейти на главную страницу

Как найти полные аргументы процесса и связанные порты прослушивания?

Я могу выполнить netstat -atulpn | grep java чтобы найти все процессы Java с сопутствующими им портами, что замечательно, однако я хотел бы также показать аргументы полного выполнения процессов. Я не верю, что это возможно с netstat из всего, что я исследовал до сих пор, и поэтому я подумал, что мне придется написать скрипт для обработки вывода netstat а затем передайте pid в ps а затем преобразите вывод, чтобы показать порт ip + и полную командную строку.

Есть ли лучший способ сделать это или это единственный вариант?

ss -lnptu передается в awk с вызовом ps -p. Я использую мобильное устройство, поэтому сейчас немного сложно напечатать полный пример.

Слушающие розетки:

ss -lnptu | awk 'NR>1 { split($7,p,","); printf "Listen: "$5 " Command: "; system("ps --no-headers -o args p "p[2]); }'

Все сокеты (вероятно, потребуется дополнительная фильтрация из-за сокетов без информации о процессе в TIME_WAIT и т. Д.):

ss -anptu state listening state established state connected state unconnected | grep -v TIME_WAIT | awk 'NR>1 { split($7,p,","); printf "Listen: "$5 " Command: "; system("ps --no-headers -o args p "p[2]); }'

 

Я получал ошибки от ps на Ubuntu 16.04 при использовании ответа Марка Стерджилла как есть. Потребовалась небольшая модификация, чтобы заставить его работать: в основном добавлен дополнительный split для дальнейшей изоляции числового PID от объединенного формата, который ss возвращает (например, pid=1306 -> 1306). Я также добавил -ww флаг, чтобы ps выводил полные аргументы:

ss -lnptu | awk 'NR>1 { split($7,p,","); split(p[2],pid,"="); printf "Listen: "$5 " Command: "; system("ps --no-headers -ww -o args p "pid[2]); }'

@ylluminate, для CentOS измените его на ss -lnptu | awk 'NR>1 { split($6,p,","); printf "Listen: "$4 " Command: "; system("ps --no-headers -o args p "p[2]); }'