proc es un sistema de archivos virtual, por lo que no confiaría en ninguna información de estado de archivos.
La hora de inicio del proceso se encuentra en / proc / PID / stat columna 22 . Se administra en segundos después del inicio del sistema. Para convertirlo a segundos, debe dividirlo entre sysconf(_SC_CLK_TCK)
100 para la mayoría de los sistemas (¡pero no para todos!).
Para obtener el tiempo de inicio del sistema, usted determina el tiempo de actividad actual en segundos, que es el primer valor de / proc / uptime .
Al tener esos dos números, resta el primero del segundo y obtiene el número de segundos transcurridos desde que inició el programa.
Ejemplo (para pidgin ):
PID=$(pidof pidgin)
STARTTIME=$(awk '{print int($22 / 100)}' /proc/$PID/stat)
UPTIME=$(awk '{print int($1)}' /proc/uptime)
NOW=$(date +%s)
DIFF=$((NOW - (UPTIME - STARTTIME)))
date -d @$DIFF
Nota: este simple ejemplo no funciona si pidof
devuelve PID multipe.