Desde a versão 3.3.0, o ps
de procps-ng
no Linux tem um campo de saída etimes
que fornece o tempo decorrido em segundos desde que o processo foi iniciado (que por sinal não é necessariamente a mesma coisa como o tempo decorrido desde a última vez em que o processo executou um comando (se sim!) (o tempo em que o processo executou o comando no nome do processo), portanto, pode não ser tão útil quanto você pensou).
Então você pode fazer:
ps -o etimes= -p "$pid"
Para a hora de início como horário da época do Unix (com GNU date
):
(export TZ=UTC0 LC_ALL=C; date -d "$(ps -o lstart= -p "$pid")" +%s)
Observe que você não pode usar o tempo de modificação de /proc/$pid
. Essa é a hora em que esses arquivos foram instanciados , que não tem nada a ver com a hora de início do processo.