我已经开始处理几个文件。我记下了处理开始的(时钟)时间。完成时间太长,我想睡觉,但我想记下处理停止的时间。我不想要一个非常精确的时间读数,时钟时间对我来说还可以。是否有任何工具、命令或小脚本可以帮助我实现这一目标。
谢谢你的帮助。
我在 ubuntu 12.04 机器上运行一个处理多个文件的可执行文件。
您可以使用psutil
模块(跨平台)了解新进程和已运行进程的进程何时完成。基于时的解决方案可能会提供更好的精度sleep()
:
#!/usr/bin/env python
"""Print the finish time for a process specified by <pid>.
Usage:
process-finish-time <pid>
"""
import sys
from datetime import datetime
from psutil import NoSuchProcess, Process # pip install psutil
try:
pid = int(sys.argv[1])
except (IndexError, ValueError):
sys.exit(__doc__)
try:
p = Process(pid) # OR use `psutil.Popen()` to start a new process
except NoSuchProcess as e:
sys.exit(e)
name = None
while p.is_running():
name = p.name
p.wait() # block until the process ends
print("Process (%s) finished at %s UTC" % (name, datetime.utcnow()))
如果你想在进程运行时做某事,你可以传递timeout
给。p.wait()
你可以使用这个小小的 python 脚本
import datetime
import subprocess
import time
import sys
p = subprocess.Popen(sys.argv[1:])
while p.poll() is None:
time.sleep(1)
sys.stderr.write("Process finished at %s\n" % datetime.datetime.now())
例子:
/tmp/watcher.py sleep 10
Process finished at 2012-08-19 10:38:11.233989
时间命令可能会帮助你
格式
$> time <command>
例如:如果它是一个 bash 脚本
$> time sh Test.sh
输出
real 0m0.004s
user 0m0.001s
sys 0m0.002s
最后我能够编写一个帮助我的python脚本。重要的要求是,即使进程已经启动,我也应该能够知道时间(进程停止的时间)。我希望以下脚本可以帮助遇到此问题的其他人。
import datetime
import commands
import time
import sys
def main(argv):
if len(argv) < 2:
sys.stderr.write("Usage: %s <action>" % (argv[0],))
return 1
output = commands.getoutput("ps -e")
while argv[1] in output:
output = commands.getoutput("ps -e")
print argv[1], " running", datetime.datetime.now()
#it should be set depending upon the precision a user wants.
time.sleep(5)
sys.stderr.write("Process finished at %s\n" % datetime.datetime.now())
if __name__ == "__main__":
sys.exit(main(sys.argv))