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

Dan*_*n S 15 linux process time

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

Hau*_*ing 14

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

PID=5462
command ps -p "$PID" -o etime
command ps -p "$PID" --no-headers -o etime
Run Code Online (Sandbox Code Playgroud)

作为一般功能,您可以修改您的 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:> "
Run Code Online (Sandbox Code Playgroud)

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

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

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