Несмотря на имя столбца, вы ищете результат comm
, а не cmd
:
ps -o comm= -o etime= -u <user>
cmd
является нестандартным псевдонимом -для args
и показывает команду со всеми ее аргументами, включая любые изменения, внесенные процессом.
comm
— это имя процесса , которое в Linux по умолчанию представляет собой первые 15 байтов базового имени последнего файла, выполняемого процессом (, или совпадает с именем родительского процесса, если он не t выполнять любой файл или имя задачи для задач ядра )и может быть изменено с помощью PR_SET_NAME
prctl()
.
Обратите внимание, что etime
— это время, прошедшее с момента создания процесса, и процесс может (и часто )запускает более одной команды за время своего существования, поэтому, если вы видите cmd 00:03
, это не обязательно означает, что cmd
выполнялся в течение 3 секунд, процесс, который выполняется в настоящее время cmd
, вполне мог раньше выполнять какую-то другую команду.
$ sh -c 'sleep 3; exec ps -o comm= -o etime='
zsh 13:48
ps 00:03
Работающий процесс ps
ранее выполнялся sh
, в течение которого большую часть времени он проводил в ожидании другого работающего процессаsleep
(после того, как sh
выполнялся в течение очень короткого времени ).