Вы также можете обрабатывать ps
вывод немного лучше.
ps --width ${n:-$COLUMNS} ${opts} #set ps terminal width
ps -ww ${opts} #no word wrap
ps -o ${only_interesting_output} ${opts} #trim output
Это скажет вам при ps
необходимости проанализировать его вывод в соответствии с вашими требованиями.
Конечно, если вы не переносите слова, то у вас проблема с отсутствием информации. Вам действительно нужно все это для всех процессов? Откройте его в пейджере, если это так:
ps ww ${opts} | $PAGER
Если нет, укажите, что вы хотите увидеть:
ps -o args= -p $pid
В качестве альтернативы вы можете явно сообщить ps
о своем терминале --width
:
man ps
...
w
Широкий выход. Используйте эту опцию дважды для неограниченной ширины.
-w
Широкий выход. Используйте эту опцию дважды для неограниченной ширины.
--width n
Установите ширину экрана.
Эта --width
вещь работает точно в соответствии с вашими требованиями без необходимости использования каких-либо дополнительных фильтров или вспомогательных процессов (которые, скорее всего, будут только загромождать ваши -aux
результаты). И, $COLUMNS
как показано выше, и, как указывает Стефан, он будет работать даже динамически.
Это, вероятно , стоит отметить, однако, что я считаю , люди часто пытаются добавить эти виды ненужных фильтров , чтобы они могли вместить |pipe
через другой фильтр для разбора вывода , который также очень вероятно, будет излишним. Конечно, под людьми я в основном имею в виду меня.
-o
Utput операнда я упомянул выше позволяю фильтровать столбцы , которые ps
отображаются, а при добавлении =
распайки вы можете даже назвать колонки , как вам угодно. Я оставляю назначение пустым и -p
передаю его целевому процессу, $pid
так что единственным выходом ps
является $pid
имя команды и ее args
при вызове. И -o
едва царапает поверхность того, как вы можете определить, что ps
будет или не будет отображаться. Это направление, которое я бы порекомендовал вам выбрать, особенно через:
man ps
...
Чтобы увидеть каждый процесс в системе, использующий синтаксис BSD:
ps ax
ps axu
Чтобы распечатать дерево процессов:
ps -ejH
ps axjf
Чтобы получить информацию о темах:
ps -eLf
ps axms
Чтобы получить информацию о безопасности:
ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM
Чтобы увидеть каждый процесс, выполняющийся от имени пользователя root (реальный и эффективный идентификатор) в формате пользователя:
ps -U root -u root u
Чтобы увидеть каждый процесс в определенном пользователем формате:
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -Ao pid,tt,user,fname,tmout,f,wchan
Выведите только идентификаторы процессов syslogd:
ps -C syslogd -o pid=
Напечатайте только название PID 42:
ps -p 42 -o comm=