Em qualquer sistema compatível com POSIX, você pode usar a coluna etime
de ps
.
LC_ALL=POSIX ps -o etime= -p $PID
A saída é dividida em dias, horas, minutos e segundos com a sintaxe [[dd-]hh:]mm:ss
. Você pode trabalhar de volta em alguns segundos com uma simples aritmética:
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#*:}))