パニック速報

The next stage is paradise…

シェルスクリプトの実行ログをタイムスタンプ付きで取得しよう!

いろいろ嵌ったので備忘録

シェルスクリプト自体がログになるからいらねーじゃんって思うところはあるんだけどもそれなりに品質にうるさい会社勤めは目に見える形でログファイルが欲しいみたい。

#!/bin/bash
touch panic.txt
echo Panic is god   >    panic.txt
exit

こういうシェルスクリプトがあったとして不通に実行する。 f:id:vip-de-marika:20200205145927p:plain 何も出力されない。(目的のファイルは生成されるが。)

それだとエビデンスガー証跡ガーっていう上司にせっかく作ったスクリプトを使用禁止されてしまいかねません。 以下の頭の3行を以下のようにします。 -xオプション:なんでもエラー出力に投げちゃうよってやつ echoうんたらかんたら:標準・エラー・コマンド結果にタイムスタンプを付与する奴。ググったら出る奴のアレンジ版だよ

#!/bin/bash -x
echo LOGFILE PRINTING testout.log testerr.log
    exec &> >(awk '{print strftime("[%Y-%m-%d %H:%M:%S]"),$0 } { fflush() } ' |tee /tmp/hogehoge/logtest.log)
touch panic.txt
echo Panic is god   >    panic.txt
exit

で実行する。 f:id:vip-de-marika:20200205145958p:plain

スクリプト実行ログファイルが出力できました!やったね!

おわり