目前我正在使用以下命令来检查进程实际运行的时间:
ps -eo uid,pid,etime | egrep '^ *MY_ID' | egrep 'PID_OF_PROCESS'
输出如下:
MY_ID PID_OF_PROCESS 00:16
然而,在该过程结束后,我想知道它实际运行了多长时间,但我似乎找不到该信息。
答案1
我认为在该过程完成后不可能获得此类信息。
如果您事先知道需要该信息,则可以运行以下命令
time <command>
例如
~> time sleep 1
real 0m1.003s
user 0m0.002s
sys 0m0.001s
答案2
答案3
在我看到这个问题及其答案之前,我制作了一个小 bash 脚本。如果您没有 root 权限并且未安装 acct 或者您不直接调用命令(在我的例子中:我使用 gui 来设置后台进程),这仍然很有用。您需要在运行之前获取 PID(有人有兴趣将其添加到脚本中吗?:)
#!/bin/bash
echo "Checking run time"
read -p "What is the pid? " PID
while true; do
# sleep needed! used to reduce cpu usage and mass of output
sleep 5
ps -eo uid,pid,etime | egrep '$PID' | egrep '$UID'
done
这样,找到PROCESS_NAME的PID
ps aux | awk 'NR == 1 || /PROCESS_NAME/'
实际上,我尝试将 USER-ID 和 PID 结合起来使脚本变得明确,但这并不那么容易......
ps -eo uid,pid,etime | egrep '$UID[[:space:]]$PID'
似乎并不总是有效......