Использовать pstree внутри команды awk

Я хочу бежать pstree на набор пид, который я нахожу с помощью ps

ps -aux | grep ^username | awk '{pstree $2}'

К сожалению, вывод пуст, но если я запустлю pstree Команда вручную с теми же пидами я получаю желаемый вывод. Что не так с awk команда? Или как мне достичь желаемого результата другими способами?

3 ответа

Решение

Использование system функционировать в awk так:

awk '{system("pstree " $2)}'

Вы можете сократить свою команду до:

ps -aux | awk ' /^username/ { system("pstree " $2) }'

Пытаться

  ps -aux | grep ^username | awk '{print $2}' | xargs pstree

(Как и раньше, pstree - пустое значение переменной)

Это можно свести к

ps -aux |  awk '/^username/{print $2}' | xargs pstree

IHTH

Использовать system функция в awk, Также вам не нужно grep здесь тоже

ps -aux | awk '$1=="username"{system("pstree $2")}'
Другие вопросы по тегам