Список портов всех запущенных приложений узла с именем «app.js » в Linux (однострочный)

#linux

#linux

Вопрос:

Я пытаюсь собрать однострочную команду Linux, которая позволит мне перечислить порты всех запущенных приложений узла, у которых есть имя» app.js «.

Я не уверен, как передать вывод по конвейеру другой команде, которую также необходимо будет передать по конвейеру. Я могу сделать это с помощью трех команд, но хотел бы знать, возможно ли это сделать одной, без использования временного файла.

 ps -a|grep node|awk '{print $1}'|xargs ps -Flww -p|grep "node app.js"|awk '{print $4}'>findNodeAppJsPorts.txt
netstat -tulpn|grep -f findNodeAppJsPorts.txt
rm findNodeAppJsPorts.txt
  

Я уверен, что некоторые ниндзя Linux знают, как это сделать,
вы можете помочь?

Ответ №1:

Если вы используете bash, вы можете попробовать замену процесса, чтобы избавиться от временного файла. Например:

 netstat -tulpn | grep -f <(pgrep -a node | grep 'node app.js' | awk '{print $1}')
  

Комментарии:

1. Я не знал, что могу использовать круглые скобки для указания блока, а затем направить этот блок в grep. Спасибо Олегу Андриянову.