【script】Linuxで操作ログを記録するコマンド

Linuxでのコマンドなどの操作ログと標準出力結果を記録するコマンド「script」について説明します。

【script】出力結果を含めたコマンド履歴を記録する

コマンド履歴を確認するだけであれば、historyコマンドで十分なのですが、標準出力結果も含めて保存したい場合にはscriptコマンドが便利です。

$ script [オプション] [出力ファイル]
オプション
-a 上書きせず、既存ファイルに追記する
-F コマンド実行毎にファイル書き込みを行う
-q メッセージなしでscriptコマンドを実行
-k キーを記録する
-t ログにタイムスタンプを追加する

scriptコマンドを実行すると、記録が開始されます。記録はexitコマンドまたは「Ctrl + d」で終了することができます。

また、出力ファイルを指定しない場合は、typescriptというファイルにログが保存されます。

エスケープシークエンスとカラーコードを削除する

出力されたログファイルには、エスケープシークエンスとカラーコード(ANSI)が入っています。

catコマンドなどで見る場合には問題ないのですが、lessコマンドやファイルに保存する場合はこれらが邪魔になります。

そこで、colコマンドとsedコマンドをパイプで繋いで、エスケープシークエンスとカラーコードを削除します。

サンプルコマンド

# Macの場合
cat typescript | sed -E "s/"$'\E'"\[([0-9]{1,2}(;[0-9]{1,2})*)?m//g" | col > log.txt

# Linuxの場合
cat typescript | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})*)?m//g" | col > log.txt

主力結果

log.txtの内容は、以下のようになります。

スクリプトは 2016年04月15日 16時16分48秒に開始しました

[user@local]$ ls
sample1 sample2
[user@local]$ exit
exit

スクリプトは 2016年04月15日 16時16分54秒に終了しました

コマンド履歴の確認にはhistoryコマンド、作業ログを記録するにはscriptコマンドと使い分けると良いでしょう。


イベント