ブログ

実行したコマンドのログを取る方法

at_shiita.ishigaki
2022年2月17日 8時40分

実行したコマンドのログを取るにはscriptコマンドを使用します。
ログの取得を終了するにはexitコマンドか Ctrl + d を入力します。
※ここでは例として、dfコマンドを実行した場合のログを記録します。

[armadillo ~]# script
Script started, file is typescript
[armadillo ~]# df
Filesystem     1K-blocks   Used Available Use% Mounted on
udev               10240      0     10240   0% /dev
tmpfs             102072   2848     99224   3% /run
/dev/mmcblk0p2   3424176 807040   2423480  25% /
tmpfs             255172      0    255172   0% /dev/shm
tmpfs               5120      0      5120   0% /run/lock
tmpfs             255172      0    255172   0% /sys/fs/cgroup
tmpfs              51032      0     51032   0% /run/user/0
[armadillo ~]# exit
exit
Script done, file is typescript
[armadillo ~]# cat typescript
Script started on Mon Jan 31 10:23:54 2022
[armadillo ~]# df
Filesystem     1K-blocks   Used Available Use% Mounted on
udev               10240      0     10240   0% /dev
tmpfs             102072   2848     99224   3% /run
/dev/mmcblk0p2   3424176 807040   2423480  25% /
tmpfs             255172      0    255172   0% /dev/shm
tmpfs               5120      0      5120   0% /run/lock
tmpfs             255172      0    255172   0% /sys/fs/cgroup
tmpfs              51032      0     51032   0% /run/user/0
[armadillo ~]# exit
exit

Script done on Mon Jan 31 10:23:56 2022

ログの保存先はデフォルトではtypescriptファイルに記録されます。ファイル名を変更するにはscriptコマンドに続けてファイル名を入力します。

[armadillo ~]# script log
Script started, file is log
[armadillo ~]# exit
exit
Script done, file is log

デフォルトではログファイルが既に存在している場合は上書きされますが、追記する場合は-aオプションを使用します。

[armadillo ~]# script -a
Script started, file is typescript
[armadillo ~]# ls
log  typescript
[armadillo ~]# exit
exit
Script done, file is typescript
[armadillo ~]# cat typescript
Script started on Mon Jan 31 10:39:48 2022
[armadillo ~]# df
Filesystem     1K-blocks   Used Available Use% Mounted on
udev               10240      0     10240   0% /dev
tmpfs             102072   2848     99224   3% /run
/dev/mmcblk0p2   3424176 807232   2423288  25% /
tmpfs             255172      0    255172   0% /dev/shm
tmpfs               5120      0      5120   0% /run/lock
tmpfs             255172      0    255172   0% /sys/fs/cgroup
tmpfs              51032      0     51032   0% /run/user/0
[armadillo ~]# exit
exit

Script done on Mon Jan 31 10:39:51 2022
Script started on Mon Jan 31 10:45:34 2022
[armadillo ~]# ls
log  typescript
[armadillo ~]# exit
exit

Script done on Mon Jan 31 10:45:42 2022

ログファイルを再生するscriptreplayというコマンドを使用するためには、scriptコマンドでタイミングデータも出力する必要があります。
タイミングデータを出力するには-tか--timingオプションを使用します。-tオプションを使用する場合は-tに続いて空白を入れることができないため注意が必要です。

[armadillo ~]# script -ttiming
Script started, file is typescript
[armadillo ~]# df
Filesystem     1K-blocks   Used Available Use% Mounted on
udev               10240      0     10240   0% /dev
tmpfs             102072   4124     97948   5% /run
/dev/mmcblk0p2   3424176 807524   2422996  25% /
tmpfs             255172      0    255172   0% /dev/shm
tmpfs               5120      0      5120   0% /run/lock
tmpfs             255172      0    255172   0% /sys/fs/cgroup
tmpfs              51032      0     51032   0% /run/user/0
[armadillo ~]# exit
exit
Script done, file is typescript
[armadillo ~]# cat timing
0.023156 18
1.396657 1
0.106836 1
0.115356 2
0.008421 59
0.000231 53
0.000126 53
0.000114 50
0.000112 57
0.000110 58
0.000108 63
0.000101 60
0.001564 18
0.917028 1
0.223516 1
0.107621 1
0.142290 1
0.069424 8
[armadillo ~]# scriptreplay typescript -t timing
// 以下は自動的に入力された内容です
[armadillo ~]# df
Filesystem     1K-blocks   Used Available Use% Mounted on
udev               10240      0     10240   0% /dev
tmpfs             102072   4124     97948   5% /run
/dev/mmcblk0p2   3424176 807524   2422996  25% /
tmpfs             255172      0    255172   0% /dev/shm
tmpfs               5120      0      5120   0% /run/lock
tmpfs             255172      0    255172   0% /sys/fs/cgroup
tmpfs              51032      0     51032   0% /run/user/0
[armadillo ~]# exit
exit