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 on
や Script done on
といったメッセージが標準出力に書き出されなくなります。ただ、ログファイル自体には記録されます。
コメントを書く