Есть ли способ ограничить вывод, скажем, ps aux | grep word так что каждый процесс отображается на отдельной одной строке?

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

3 ответа3

1

Когда вывод ps aux направляется на терминал, команда ограничивает часть команды шириной экрана.

Когда выходные данные передаются в команду, поведение меняется, но обычно ширина не ограничена. Если вы хотите ограничить его таким же образом, вы можете использовать эту команду:

ps aux --witdh ${COLUMNS:-80} | grep word

Конечно, если word не в отображаемых символах, а в усеченных, оно не будет отображаться.

Вот несколько альтернатив:

ps aux | awk '/word/ {print substr($0,1,'${COLUMNS:-80}')}'

ps -up $(pgrep -f word|tr '\n' ','| sed 's/,$//') 
1

Вы можете найти полезной команду pstree . В нем перечислены все процессы в виде древовидной диаграммы.

1

На самом деле, каждый процесс уже отображается в одной строке, поэтому grep отображает столько информации.

Если вы готовы пожертвовать количеством деталей, которое предлагает столбец "КОМАНДА" в ps aux , вы можете урезать вывод следующим образом:

ps aux | awk '/word/ {print $1"\t"$2"\t"$3"\t"$4"\t"$9"\t"$11}'

awk ищет строки, содержащие шаблон 'word' и печатает:

USER, PID,% CPU,% MEM, START и первая строка (разделенная пробелом) из столбца COMMAND, все разделены TAB ('\t')

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .