Используйте -o
флаг.
Чтобы перечислить только ваши собственные процессы
ps -o command
Чтобы перечислить все системные процессы
ps -e -o command
Это не единственный способ перечисления команд, они могут быть напечатаны либо с флагами командной строки, либо только как исполняемые (что и делает command
опция).
Из моего комментария ниже ответ:
Команда, args и cmd дают полную команду. Фактически команды man-страниц состояния и cmd являются псевдонимами для аргументов, с включенными флагами. Комм дает только имя исполняемого. Псевдонимы тому - UCMD и UCOMM. Я неправильно понял параметры AIX, их можно указать в формате printf,% a для аргументов,% c для комм.
Обратитесь к man ps
дополнительной информации об использовании и доступных опциях формата
Программный подход был бы немного излишним, так как ps
уже предоставляет нам опции форматирования, но с этим можно awk
справиться, что очень полезно при работе с выводом по столбцам.
ps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
Обратите внимание, что этот код ломается, если имя пользователя содержит пробелы, например john doe
. Это можно изменить, добавив gsub
функцию, которая исключит ваше имя пользователя из ps
списка. Однако, если в систему вошли несколько пользователей, может быть сложно удалить все имена пользователей из выходных данных. Таким образом, вы можете видеть, что -o
флаг намного предпочтительнее.
Дополнительное примечание, sudo
не требуется для перечисления всех процессов сps
ps -eo command
&ps -eo comm
? Единственное различие я нашел вcommand
выходной был такой: в[kthreadd]
то время как вcomm
выходной был , как это:kthreadd
. Означает ли это что-нибудь?comm
это формат AIX, где какcommand
и стандартный формат стиля GNU. AIX - это еще одна * NIX-подобная система, поэтому этот параметр можно использовать для совместимости. В остальном без разницыdiff <(ps -eo comm) <(ps -eo command)
и, кажется, там довольно громко, ты не мог бы уточнить?awk
решение ломается, если имя пользователя содержит пробелы ( здесь ); тоже может простоps aux | awk '{ for(i=11;i<=NF;i++) {printf $i" "}; printf "\n" }'
?command
,args
иcmd
все дают полную команду. На самом деле человек страниц государствcommand
иcmd
являются псевдонимамиargs
, с-
флагами включены.comm
Дает имя только exacutable. Псевдонимы тому естьucmd
иucomm
. Я неправильно понял параметры AIX, их можно указать в формате printf,% a для аргументов,% c для комм.Более общий способ. Определяем столбец команды. Таким образом, не имеет значения, для каких переключателей используются
ps
.Образец вывода
А как насчет
pstree
?Образец вывода
источник
Я нашел способ добиться этого отсюда
sudo ps aux | rev | cut -d ' ' -f 1 | rev
rev
обратный выводps
и затем сокращение может помочь вам разграничить первое поле (которое является последним!), а затем повернуть его снова ...работал на меня.
источник
ps aux
сам будет указан какaux
.sudo
не требуется,ps
и команда обрезает множество команд, поэтому она не очень точна, если вы хотите работать с столбцами, используйтеawk
ее гораздо лучше для этой задачи. На самом деле, точная команда будетps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
awk
должен работать.sudo ps
и я подумал,awk
что это будет слишком сложно для этой задачи, и вышелcut
. В любом случае, не следует ли обновить ваш ответ этим кодом, чтобы ОП мог его принять?ps
это просто не для слепого анализа. Я думаю, что единственный безопасный метод здесьps -e -o
.