如何获取正在运行的进程的挂钟时间?

如何获取正在运行的进程的挂钟时间?

我开始对大文件进行哈希检查,并且不想使用time.如何在不开始使用时间或date在调用命令之前使用时间的情况下获取挂钟时间?

答案1

对于正在运行的进程,您可以这样做:

PID=5462
command ps -p "$PID" -o etime
command ps -p "$PID" --no-headers -o etime

作为一般功能,您可以修改 shell 提示符。这是我的 bash 提示符定义:

TERM_RED_START=$'\033[1m\033[31m'
TERM_RED_END=$'\033(B\033[m'
PS1='\nec:$(ec=$?; if [ 0 -eq $ec ];
then printf %-3d $ec;
else echo -n "$TERM_RED_START"; printf %-3d $ec; echo "$TERM_RED_END";
fi) \t  \u@\h:\w\nstart cmd:> '
PS2="cont. cmd:> "

与您相关的部分\t暂时是。

但这并不能解决所有问题。当进程结束时,将显示新的提示,但当要测量的命令启动时,前一个提示可能已经很旧了。因此,要么记得在开始长时间运行的命令之前更新提示,要么当您想知道当前进程将花费多长时间时必须记住当前时间。

对于完整的解决方案,您需要审计功能(记录进程的开始和结束时间)。但如果不能限制在shell中的话,可能会导致数据量巨大。

答案2

基于已接受的答案,您还可以使用以下方法连续监视正在运行的进程的运行时间watch

PID=5462
watch command ps -p "$PID" -o etime

相关内容