Для Solaris вы можете использовать pfiles
, чтобы узнать, какие сетевые порты открываются определенным процессом. Используя цикл for в / proc / *
, вы можете использовать pfiles
в каждом запущенном процессе для поиска нужного порта. Недостатком является то, что для получения информации вам потребуется root
в Solaris 10 или возможность получить привилегии ( pfexec pfiles
) в Solaris 11.
Если вы можете стать root
на хосте Solaris, вы сможете использовать что-то вроде:
PORT=22; for PID in /proc/*; do pfiles ${PID} |grep "port: ${PORT}" && echo ${PID}; done
Это будет повторяться через / proc / *
, фильтровать указанный порт, и если совпадение найдено, в следующей строке отображается идентификатор процесса ( / proc / ####
).
Без кавычек оболочка выполняет расширение pathname (glob )для класса символов []
, поэтому, предположительно, у вас есть файлы с именами e
, g
, k
, m
, q
в текущем каталоге --, отсюда и результат.
echo
в основном просто печатает результат расширения пути, не более того.
Возьмем один пример,echo [quasi-star]
:
Результатом расширения для [quasi-star]
будет любой одиночный символ изquasijklmnopqrstar
(дубликатов, сохраненных намеренно ). С точки зрения оболочки, поскольку окружающих символов нет, оно будет просто соответствовать любому имени файла с одним символом в текущем каталоге из расширения.