実行中のプロセスの実時間を取得するにはどうすればよいですか?


14

大きなファイルのハッシュチェックを開始しましたが、を使用して再起動したくありませんtime。最初に時間を使用したりdate、コマンドを呼び出す直前に時間を使用せずに壁時計の時間を取得するにはどうすればよいですか?

回答:


12

実行中のプロセスの場合、これを実行できます。

PID=5462
command ps -p "$PID" -o etime
command ps -p "$PID" --no-headers -o etime

一般的な機能として、シェルプロンプトを変更できます。これは私のbashプロンプトの定義です:

TERM_RED_START=$'\033[1m\033[31m'
TERM_RED_END=$'\033(B\033[m'
PS1='\nec:$(ec=$?; if [ 0 -eq $ec ];
then printf %-3d $ec;
else echo -n "$TERM_RED_START"; printf %-3d $ec; echo "$TERM_RED_END";
fi) \t  \u@\h:\w\nstart cmd:> '
PS2="cont. cmd:> "

あなたにとって重要なの\tは時間です。

ただし、これですべての問題が解決するわけではありません。プロセスが終了すると新しいプロンプトが表示されますが、測定対象のコマンドが開始されたときには前のプロンプトはかなり古い可能性があります。したがって、長時間実行するコマンドを開始する前にプロンプ​​トを更新することを忘れないか、現在のプロセスにかかった時間を知りたいときは現在の時間を覚えておく必要があります。

完全なソリューションを実現するには、監査機能(プロセスの開始時間と終了時間を記録する)が必要です。ただし、シェルに制限できない場合、大量のデータが発生する可能性があります。


1

受け入れられた答えに基づいて、実行中のプロセスの経過時間を継続的に監視することもできますwatch

PID=5462
watch command ps -p "$PID" -o etime
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.