[Linux] script コマンドで操作ログと実行結果を記録する

[Linux] script コマンドで操作ログと実行結果を記録する

script コマンド

Linux で実行されたコマンドやその実行結果の出力を記録したい場合 script コマンドが使えます。script コマンドは実行したコマンドと実行日時、実行結果(出力結果)をすべてログファイルに記録することが可能です。

script コマンドの基本的な使い方は以下のように単純に実行するだけです。

script コマンドの使用方法

$ script
Script started, file is typescript

script コマンドをオプション引数なしで実行するとカレントディレクトリ以下に typescript というファイルが作成されます。exit するまでの間、対話式で実行されたコマンドと出力結果をこのファイルに保存します。

例えば script を実行し、以下のようにコマンドを実行します。

その後、exit してから typescript ファイルを確認してみます。

# 操作ログの記録開始
$ script
Script started, file is typescript

# 適当なコマンドを実行する
$ echo hello
hello
$ date
Tue Mar 30 21:34:56 JST 2021

# exit したら操作結果がファイルに保存される
$ exit
exit
Script done, file is typescript

typescript ファイルは以下のようになっています。

$ cat typescript
Script started on 2021-03-30 21:31:52+0900
$ echo hello
hello
$ date
Tue Mar 30 21:34:56 JST 2021
$ exit
exit

Script done on 2021-03-30 21:35:00+0900

Script started on から Script done on までが操作したコマンドとその出力結果です。すべてファイルに記録されていることが分かります。ファイルへの記録は更新モードです。追記ではありません。

これが script コマンドの使用方法です。操作履歴とログを記録するために使えるコマンドです。

script の引数とオプションいろいろ

引数でログファイルを指定する

script [ファイルパス] で任意のファイルにログを記録できます。

-a: 追記モードでファイルに記録する

script -a でファイルに対して操作ログを追記モードで記録します。

-c: 指定のコマンドの操作結果を記録する

対話式で実行するのではなく、コマンドを指定して実行し、その結果を記録します。

$ script -c 'echo hello'
Script started, file is typescript
hello
Script done, file is typescript

-f: 書き込みのたびに都度ファイルにフラッシュする

-f を指定すると、実行するたびにファイルに書き込みデータがフラッシュされます。-f の指定がないとログアウト exit するタイミングで初めてフラッシュされてファイルが更新されます。

$ script -f
Script started, file is typescript

# この時点でログアウトしてなくてもフラッシュされている
$ cat typescript
Script started on 2021-03-30 21:51:39+0900
$ cat typescript

-q: 開始終了のメッセージを標準出力に書き出さない

script -q を実行すると、Script started onScript done on といったメッセージが標準出力に書き出されなくなります。ただ、ログファイル自体には記録されます。

参考URL

Linuxカテゴリの最新記事