はじめに
みなさま、historyコマンドを活用されてますでしょうか?ご存じの通り、コマンドの実行履歴を表示するコマンドです。
ヒストリ件数はデフォルトで1000となっています。
私は以下のように活用しています。
- 先日ログ調査で実行したgrepコマンドの引数どうしてたっけ?の確認
- 過去に発生した障害時にどうやってリカバリーしたかの振返り
- 本番作業の手順書を作成するときに、検証環境での実行コマンド一覧を取得
では、使い方をみていきましょう。
環境
OS : AlmaLinux 8
使い方
ひとまず、historyコマンドを実行してみます。
$ history
1 history
$
いま、まさに実行したhistoryコマンドが履歴として表示されました。
$ date
Sun Jan 21 11:42:37 JST 2024
$
もう一度、確認してみましょう。
$ history
1 history
2 date
3 history
$
実行したdateコマンドがちゃんと履歴として表示されましたね。
ただ、これだと何時実行したのかがわからないので、実行日時がわかるようにしておきたいです。
そんな時は、HISTTIMEFORMAT変数を設定します。
$ HISTTIMEFORMAT='%Y/%m/%d %H:%M:%S '
設定後、historyコマンドを実行すると
$ history
1 2024/01/21 11:42:34 history
2 2024/01/21 11:42:37 date
3 2024/01/21 11:42:39 history
4 2024/01/21 11:42:47 date
5 2024/01/21 11:42:56 HISTTIMEFORMAT='%Y/%m/%d %H:%M:%S '
6 2024/01/21 11:42:58 history
$
実行日時が表示されるようになりましたね。
デフォルト1000件のヒストリ件数を増やしたいときは、HISTSIZE変数を設定します。
例)5000件に設定する場合
HISTSIZE=5000
なお、次回以降ログインした際も、この設定を反映したい場合には、.bashrcに追記しておきましょう。
historyコマンドの履歴番号を指定して、該当コマンドを再実行することもできます。
$ !4
date
Sun Jan 21 11:46:08 JST 2024
$
dateコマンドが再実行されましたね。
次は、表示する履歴件数の指定です。historyコマンドに引数として数字を指定することで、指定した数の行数が最新の履歴から表示されます。
$ history 4
11 2024/01/21 11:49:35 df -h
12 2024/01/21 11:49:39 free -m
13 2024/01/21 11:49:41 history
14 2024/01/21 11:49:51 history 4
$
最後に、履歴の削除です。-d の後に履歴番号を指定することで、該当の履歴を削除することができます。
freeコマンドの履歴を消してみましょう。
$ history -d 12
どうでしょうか。
$ history 5
11 2024/01/21 11:49:35 df -h
12 2024/01/21 11:49:41 history
13 2024/01/21 11:49:51 history 4
14 2024/01/21 11:50:13 history -d 12
15 2024/01/21 11:50:25 history 5
$
削除できましたね。また、-cを指定することで、全ての履歴を削除することができます。
$ history -c
どうでしょうか。
$ history
1 2024/01/21 11:51:01 history
$
はい。きれいさっぱり削除できましたね。
まとめ
いかがでしたか?
該当のサーバーで、いつ、どういったコマンドが実行されたのかがわかるようになっていることは、サーバーの運用管理を行う上で、とても重要な事です。
それが実現できる、historyコマンドを是非とも活用ください。