任意のプログラムを実行するとき開始/終了時のタイムスタンプを出力する方法
[update] <2010-03-30 火> シグナルで終了したときには、プロセスオブジェクトを表示してみた。
任意のRubyスクリプトを実行するとき開始/終了時のタイムスタンプを出力する方法 - 今日もスミマセン。はたしかに便利なのだが、わざわざRubyスクリプトに限定する必要はない。
次のようなスクリプトにしてしまえば、任意のプログラムのタイムスタンプを出力することができる。ついでに終了ステータスと経過時間も出力してみた。timestampという名前で保存する。
#!/usr/local/bin/ruby191 start_time = Time.now cmdline = ARGV.join ' ' $stderr.puts "-" * 60 $stderr.puts "#{Time.now} start: #{cmdline}" $stderr.puts "-" * 60 system *ARGV secs = Time.now - start_time $stderr.puts "-" * 60 $stderr.puts $?.inspect if $?.signaled? $stderr.puts "#{Time.now} end: #{cmdline}" $stderr.puts "%.2f seconds" % secs $stderr.puts "exitstatus = #{$?.exitstatus}" $stderr.puts "-" * 60
使い方はいたって簡単で、コマンドの前に timestamp をつけるだけ!
$ timestamp sleep 1 ------------------------------------------------------------ 2009-12-26 12:37:28 +0900 start: sleep 1 ------------------------------------------------------------ ------------------------------------------------------------ 2009-12-26 12:37:29 +0900 end: sleep 1 1.01 seconds exitstatus = 0 ------------------------------------------------------------
追記
リダイレクト時にタイムスタンプが入ってしまうので、標準エラー出力に出すことにした。さっそくcronスクリプトに投入。