以降のコマンド実行時間の検索

以降のコマンド実行時間の検索

ちょうど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プロセスアカウントが有効になっている場合)実行期間を提供します(制限された意味では十分でも十分ではありません)。

関連情報