Apesar do nome da coluna, a saída que você está procurando é comm
, em vez de cmd
:
ps -o comm= -o etime= -u <user>
cmd
é um alias não padrão para args
e mostra o comando com todos os seus argumentos, incluindo quaisquer modificações que o processo tenha feito.
comm
é o nome do processo que no Linux por padrão são os primeiros 15 bytes do nome base do último arquivo que o processo executou (ou é o mesmo nome que o seu processo pai se não executou nenhum arquivo ou o nome da tarefa para tarefas do kernel) e pode ser modificado com PR_SET_NAME
prctl()
.
Observe que etime
é o tempo decorrido desde que o processo foi gerado e um processo pode (e geralmente executa) mais de um comando durante sua vida útil, portanto, se você vir cmd 00:03
, isso não necessariamente significa que cmd
foi executado por 3 segundos, o processo que está atualmente executando cmd
poderia muito bem ter executado algum outro comando antes.
$ sh -c 'sleep 3; exec ps -o comm= -o etime='
zsh 13:48
ps 00:03
O processo executando ps
estava executando anteriormente sh
, durante o qual ele passou a maior parte do tempo aguardando outro processo executando sleep
(depois de executar sh
por um tempo muito curto).