如何从命令行跟踪时间?


11

我正在寻找一个命令来跟踪时间。

我想象以下工作流程:

  1. 运行命令
  2. ...做其他事情...
  3. 返回终端窗口并停止命令
  4. 作为输出,您会收到3到1之间的时间

@JacobVlijm我真的很喜欢下面安华答复的清晰性。作为非技术用户,更容易理解可能重复线程中的答案。你怎么看?
orschiro

2
@JacobVlijm我不认为这是重复的。这里的OP要求秒表,那里的问题是问如何衡量流程执行时间。
赛斯

@Seth好的,表决撤回。
雅各布·弗利姆

@Eric您是否读过我上面的评论?
赛斯

Answers:



6

怎么样:

stopwatch() { 
    local start=$SECONDS
    read -p "Hit Enter..."
    echo $((SECONDS-start)) seconds elapsed
}

实际上:

$ stopwatch 
Hit Enter...
14 seconds elapsed

3

一种简单的方法是花费开始时间,而一旦停止脚本,则花费停止时间。最后,打印时差。这可以使用Python轻松完成:

python -c $'import time;start=time.time();\ntry:\n\twhile True: time.sleep(0.25)\nexcept: print(time.time()-start)'

或较长版本的可读性:

import time
start=time.time();
try:
    while True: time.sleep(0.25)
except: 
    print(time.time()-start)

使用Ctrl + C停止


1
while True: pass以100%运行CPU。我建议while True: time.sleep(1e9)改为(signal.pause()也可以,但是需要额外的导入)。
2012rcampion

@ 2012rcampion好点,已经在其中进行了编辑。
Sergiy Kolodyazhnyy 2016年

1
捕获所有异常通常被认为是不好的做法(尽管在这种情况下可能不太相关),except KeyboardInterrupt这样会更好
Tobias Kienzler 2016年

3
@TobiasKienzler我知道这一点。如果这是一个大项目,我会拆分内容以捕获多个异常。随时查看我的其他代码,指标等。但是在这种情况下,只有一个,因此并不完全相关。另外,这是一种快速而肮脏的方法。为什么稍微打高尔夫球呢?
Sergiy Kolodyazhnyy,2016年

我完全同意,只是认为值得一提;)
Tobias Kienzler's
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.