いくつかのファイルの処理を開始しました。処理が開始された(時計)時刻を書き留めました。終了までに時間がかかりすぎて眠りたいのですが、処理が止まった時間を書き留めておきたいです。私は非常に正確な時刻を読みたくありません、時計の時刻は私にとっては大丈夫です。これを達成するのに役立つツール、コマンド、または小さなスクリプトはありますか。
助けてくれてありがとう。
私はubuntu12.04マシンを使用していて、複数のファイルを処理する単一の実行可能ファイルを実行しています。
この小さな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
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()
時間コマンドはあなたを助けるかもしれません
フォーマット
$> 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))