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


14

我开始对一个大文件进行哈希检查,不想使用来重新启动它time。如何获得挂钟时间,而不用在开始时使用时间或date在调用命令之前使用时间?

Answers:


12

对于正在运行的进程,您可以执行以下操作:

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

作为常规功能,您可以修改外壳程序提示符。这是我的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时间。

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

对于完整的解决方案,您需要一个审核功能(该功能记录流程的开始和结束时间)。但是,如果不能将其限制在外壳上,则可能会导致大量数据。


1

在接受的答案的基础上,您还可以使用watch以下方法连续监视运行过程的经过时间:

PID=5462
watch command ps -p "$PID" -o etime
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.