Aqui está um começo:
ps -eoetime,pid,user,cmd --sort -etime
Você pode selecionar qualquer informação que queira exibir, veja man ps
para a lista longa e longa. O comando acima lista todos os processos classificados em ordem decrescente pelo tempo decorrido. Se você deseja exibir apenas os processos que estão sendo executados há pelo menos sete dias, será necessário fazer algo com grep
ou awk
; Nesse caso, talvez você queira apenas imprimir o etime
e o pid
, já que poderá imprimir os dados desejados nos processos específicos mais tarde.
Infelizmente, o formato etime
é mais projetado para pessoas do que para scripts, mas o seguinte deve funcionar (embora eu não tenha testado):
ps -eoetime=,pid= | awk 'int(substr($1,1,index($1,"-"))) >= 7 { print }'
Breve explicação das opções de linha de comando:
-e show all processes
-eo... same as -e -o...
-oetime=,pid= for each process, print the elapsed time and pid.
The '=' suppress the column headers
--sort -etime sort the processes in descending order by elapsed time
(+etime would have been ascending order)