在 Linux 下,我可以在几秒钟内获得一个进程的正常运行时间:
echo $(($(cut -d "." -f1 /proc/uptime) - $(($(cut -d " " -f22 /proc/$PID/stat)/100))))
Run Code Online (Sandbox Code Playgroud)
但是如何在不同的操作系统下获得它?例如:SunOS、HP-UX、AIX?
在任何一个符合POSIX标准的系统,你可以使用etime
的列ps
。
LC_ALL=POSIX ps -o etime= -p $PID
Run Code Online (Sandbox Code Playgroud)
使用语法将输出分解为天、小时、分钟和秒[[dd-]hh:]mm:ss
。您可以使用简单的算术将其重新计算为几秒钟:
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#*:}))
Run Code Online (Sandbox Code Playgroud)