実行中のプロセスの壁時計時間を取得するには?

実行中のプロセスの壁時計時間を取得するには?

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

答え1

実行中のプロセスの場合は、次のことができます。

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今です。

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

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

答え2

許可された回答に基づいて、以下を使用して実行中のプロセスの経過時間を継続的に監視することもできますwatch

PID=5462
watch command ps -p "$PID" -o etime

関連情報