なにかの技術メモ置き場

なにかの技術メモ置き場

@インフラエンジニア

コマンドの実行時刻を知りたい

historyコマンド

コマンドの実行履歴を表示するコマンド。
純粋に履歴を参照したり、「!数字」で過去のコマンドを実行したりと便利。

# history | tail
 1002  cmd2
 1003  cmd3
 1004  cmd4
 1005  cmd5
 1006  cmd6
 1007  cmd7
 1008  cmd8
 1009  cmd9
 1010  cmd10
 1011  history | tail

環境変数HISTTIMEFORMAT

コマンドの実行履歴を参照できるのはありがたいが、システムを管理する立場の人からすると、「操作ログの保存」という意味合いでコマンドの実行時刻を確認したいもの。それは環境変数HISTTIMEFORMATを設定することで実現する。

# vi /etc/profile
#任意の箇所に追加
export HISTTIMEFORMAT="%Y/%m/%d %T  "
# history | tail
 1005  2014/07/03 01:03:48  cmd5
 1006  2014/07/03 01:03:48  cmd6
 1007  2014/07/03 01:03:48  cmd7
 1008  2014/07/03 01:03:48  cmd8
 1009  2014/07/03 01:03:48  cmd9
 1010  2014/07/03 01:03:48  cmd10
 1011  2014/07/03 01:03:48  history | tail
 1012  2014/07/03 01:03:48  vi /etc/profile
 1013  2014/07/03 01:03:48  . /etc/profile
 1014  2014/07/03 01:03:48  history | tail

ちなみに、実際に設定してみて気づかれたと思うが、HISTTIMEFORMATを設定する以前のコマンドの実行時刻も表示されている。つまり、実行時刻自体は初めから記録されていて、HISTTIMEFORMATはあくまでどのような形式で表示するかを設定する変数に過ぎない。
その時刻は、下記ファイルにシリアル値として記録されていた。

# cat ~/.bash_history | tail
#1404316998
 1027  cmd6
#1404316998
 1028  cmd7
#1404316998
 1029  cmd8
#1404316998
 1030  cmd9
#1404316998
 1031  cmd10

そんなところ。