bashプロンプトから実行時間の長いプロセスを実行しました。後知恵で、私time
はそれを実行したい、または私がそれを開始した時間を書き留めたいと思います。
この情報を遡及的に取得する方法はありますか?.bash_history
タイムスタンプを含めるようには見えません。
私の場合はMac OS Xですが、一般的なUnix / Linuxソリューションに興味があります。
明確にするために、プロセスは完了しました。どうしても必要な場合を除き、再度実行しないことをお勧めします。
bashプロンプトから実行時間の長いプロセスを実行しました。後知恵で、私time
はそれを実行したい、または私がそれを開始した時間を書き留めたいと思います。
この情報を遡及的に取得する方法はありますか?.bash_history
タイムスタンプを含めるようには見えません。
私の場合はMac OS Xですが、一般的なUnix / Linuxソリューションに興味があります。
明確にするために、プロセスは完了しました。どうしても必要な場合を除き、再度実行しないことをお勧めします。
回答:
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 #>
。さまざまなシェルとクレイジー なファンシープロンプトについては、シェルのマニュアルページを参照してください。
注:これはおそらく、高精度が必要な場合、またはプログラムが非常に多くの出力を生成して前のプロンプトが表示されない場合は役に立ちません。
プロセスがまだ実行中の場合は、プロセスのps
開始時間と使用したCPU時間を取得するために使用できます。
たとえば、すべてのプロセスの場合:
ps -eo cputime,start,pid,command,args
特定のPID(12345)の場合:
ps -p 12345 -o cputime,start,pid,command,args
ps
LinuxでGNU を使用していますがps
、MacOSX ではBSDである可能性があり、引数についてはわかりません。
lastcomm(BSDプロセスアカウンティングが有効になっている場合)は、実行時間を提供します(ある程度の意味では、適切である場合とそうでない場合があります)。