LINUX.ORG.RU

определить порт по pid через ss / netstat

 ,


0

1

Нужно определить порт который слушает процесс по его pid. Сейчас есть вот такая строка для запуска из ноды:

netstat -nlp | grep '[[:space:]]%d/'

Где на место %d втыкается pid нужного процесса. Проблема в том, что в новых линуксах стоит iproute2 и лучше запускать

ss -nlp | grep ',%d,'

Как написать в одну строку, чтобы проверялось наличие ss и пускалось либо одно либо другое?

★★★★★

Последнее исправление: Vit (всего исправлений: 1)

Мне вариант с which нравится больше всего. Но можно и более ламерский способ:

first command || second command || (echo "ne shmogla" && die)
true_admin ★★★★★
()
Ответ на: комментарий от Sorcerer

Получилось так:

if which ss > /dev/null; then ss -nlp | grep ",%d,"; else netstat -nlp | grep "[[:space:]]%d/"; fi


Проблема в том, что если which не находит ss, то выполнение терминируется (из командной строки все нормально). Первая ветка выполняется нормально.

Это надо как-то в вызов шела дополнительно завернуть?

Vit ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Тем что не надо пакеты ставить, к тому же это не везде возможно.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

Сорри, я баран. При генерации строки не учел что подстановок числа стало две и надо передавать в форматер 2 параметра :)

Vit ★★★★★
() автор топика

Проблема в том, что в новых линуксах стоит iproute2

Наличие iproute2, говорит об отсутствии netstat?

redixin ★★★★
()
Ответ на: комментарий от zolden

Фик знает. Я не рублю чем дистры фаршируют. Вот сорец https://github.com/baudehlo/node-phantom-simple/blob/master/node-phantom-simp...

lsof на маке используется, а почему на линупсе другое - ХЗ.

Шансы его встретить выше чем ss и netstat?

Vit ★★★★★
() автор топика

readlink /proc/*/fd/*

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.