コマンドラインから時間を追跡するにはどうすればよいですか?


11

時間を追跡するコマンドを探しています。

次のワークフローを想像します。

  1. コマンドを実行する
  2. ...他のことをする...
  3. ターミナルウィンドウに戻り、コマンドを停止します
  4. 出力として、3〜1の間の経過時間を受け取ります

@JacobVlijmアンワールの返事の明快さは本当に好きです。技術に詳しくないユーザーは、重複する可能性のあるスレッドの答えをより簡単に理解できます。どう思いますか?
-orschiro

2
@JacobVlijmこれは重複しているとは思わない。ここのOPは、ストップウォッチを要求しています。そこでの質問は、プロセスの実行時間を測定する方法を尋ねています。
セス

@Seth OK、投票は撤回されました。
ジェイコブVlijm

@Ericは上の私のコメントを読みましたか?
セス

回答:



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: passCPUを100%で実行します。while True: time.sleep(1e9)代わりに提案します(signal.pause()機能しますが、追加のインポートが必要です)。
2012rcampion

@ 2012rcampionの良さは、すでに編集済みです。
セルギーKolodyazhnyy

1
キャッチすることは通常考えられて悪い習慣であるすべての例外を(この場合には、それはおそらくあまりにも関連していないのですが)、except KeyboardInterrupt良いだろう
トビアスKienzler

3
@TobiasKienzler私はそれを知っています。これが大規模なプロジェクトの場合、複数の例外をキャッチするために分割します。私の他のコード、インジケーターなどを自由に見てください。ただし、この場合は1つしかないため、正確には関係ありません。さらに、これは迅速で汚れた方法です。なぜそれをわずかにゴルフにかけるのですか?
セルギーコロディアズニー

私は完全に同意し、言及する価値があると考えただけです;)
トビアス・キエンツラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.