我开始对大文件进行哈希检查,并且不想使用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