Process Uptime – How to Get a Process Uptime Under Different OS

processuptime

Under Linux I can get a process's uptime in seconds with:

echo $(($(cut -d "." -f1 /proc/uptime) - $(($(cut -d " " -f22 /proc/$PID/stat)/100))))

But how can I get it under different OS? ex.: SunOS, HP-UX, AIX?

Best Answer

On any POSIX-compliant system, you can use the etime column of ps.

LC_ALL=POSIX ps -o etime= -p $PID

The output is broken down into days, hours, minutes and seconds with the syntax [[dd-]hh:]mm:ss. You can work it back into a number of seconds with simple arithmetic:

t=$(LC_ALL=POSIX ps -o etime= -p $PID)
d=0 h=0
case $t in *-*) d=$((0 + ${t%%-*})); t=${t#*-};; esac
case $t in *:*:*) h=$((0 + ${t%%:*})); t=${t#*:};; esac
s=$((10#$d*86400 + 10#$h*3600 + 10#${t%%:*}*60 + 10#${t#*:}))
Related Question