
ちょうどbashプロンプトで長期実行プロセスを実行しました。振り返ってみると、先に進んだりtime
始めたときに言及したら良かったでしょう。
この情報を遡及して得る方法はありますか?.bash_history
タイムスタンプが含まれていないようです。
私の特別なケースはMac OS Xですが、一般的なUnix / Linuxソリューションに興味があります。
明確にすると、プロセスが完了し、必ずしも必要でない限り、再実行したくありません。
答え1
bash
シェルを閉じるまでの時間は実際に記憶されます。
だから走りましょう
HISTTIMEFORMAT='%x %X ' history
あなたも入れておけば
HISTTIMEFORMAT=<some format>
お客様の場合は終了時にも記録される~/.bashrc
ため、~/.bash_history
以前のシェルセッションでも発生した内容を確認できます。
答え2
Mikelの答えは素晴らしいですが、プログラムを実行してしばらく放置すると、プロセスがいつ完了するのか実際にはわかりません。だから、プログラムを始めるときに時間があってもどれくらい時間がかかったのかわかりません。
準備なしで調べる必要があるときの解決策はありません。しかし、これをやり直す予定の場合は、私がしたことをすることができます。つまり、シェルプロンプトで現在時刻を印刷します。これにより、端末がまだ開いている場合は、プログラムの起動時期と次のプロンプトの印刷時期を確認できます。少数の数学で実行時間を把握するのに役立ちます。
これを行うには、bash
次の項目を入力してください.bashrc
。
export PS1="\A \u@\h \W \$ "
でzsh
次のように入力します.zshrc
。
export PS1="%D{%H:%M} %n@%m %1~ %# "
上記のコマンドは、シェルプロンプトに次の形式を提供します<time> <username>@<hostname> <current dir> <$ or % or #>
。クレイジー 〜したいメッセージが表示されたら、シェルのマニュアルページをお読みください。
注:高精度が必要な場合、またはプログラムがあまりにも多くの出力を生成して以前のプロンプトを表示できない場合は、役に立ちません。
答え3
プロセスがまだ実行されている場合は、それを使用してps
プロセスが開始された時間と使用されたCPU時間を確認できます。
たとえば、すべてのプロセスについて次のようになります。
ps -eo cputime,start,pid,command,args
特定のPID(12345)の場合:
ps -p 12345 -o cputime,start,pid,command,args
答え4
最後の通信(BSDプロセスアカウントが有効になっている場合)実行期間を提供します(制限された意味では十分でも十分ではありません)。