Linux之history使用技巧

背景:

正常情況下,Linux系統中輸入 history  只顯示序號和歷史命令如下圖,但是當我們想要根據歷史命令來排查一些故障問題時,無法精確獲取該命令執行的詳細資訊,包括執行時間、執行的用戶、是哪個終端上執行的,想要獲取詳細的歷史記錄資訊,需要手動配置一下,下面我將逐個介紹:

 

1. 在 /etc/bashrc 配置history 的變數

[root@192 ~]# vim /etc/bashrc 
 export HISTTIMEFORMAT="%Y-%m-%d:"
[root@192 ~]# source /etc/bashrc 
[root@192 ~]# history
    1  2022-02-27:cd /
    2  2022-02-27:vim /influxdb
    3  2022-02-27:mkdir /oinfluxdb
    4  2022-02-27:ls
    5  2022-02-27:cd /oinfluxdb 
    6  2022-02-27:ls
    7  2022-02-27:ll
    8  2022-02-27:vim influxdb.sh
    9  2022-02-27:/bin/bash influxdb.sh
   10  2022-02-27:systemctl status influxdb  

或者:

[root@192 ~]# vim /etc/bashrc 
 export HISTTIMEFORMAT="%F %T:"
[root@192 ~]# source /etc/bashrc
[root@192 ~]# history
    1  2022-02-27 13:26:38:cd /
    2  2022-02-27 13:26:38:vim /influxdb
    3  2022-02-27 13:26:38:mkdir /oinfluxdb
    4  2022-02-27 13:26:38:ls
    5  2022-02-27 13:26:38:cd /oinfluxdb 
    6  2022-02-27 13:26:38:ls
    7  2022-02-27 13:26:38:ll
    8  2022-02-27 13:26:38:vim influxdb.sh
    9  2022-02-27 13:26:38:/bin/bash influxdb.sh
   10  2022-02-27 13:26:38:systemctl status influxdb  

或者:

[root@192 ~]# vim /etc/bashrc 
 export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S `whoami` "
[root@192 ~]# source /etc/bashrc
[root@192 ~]# history
    1  2022-02-27 13:26:38 root cd /
    2  2022-02-27 13:26:38 root vim /influxdb
    3  2022-02-27 13:26:38 root mkdir /oinfluxdb
    4  2022-02-27 13:26:38 root ls
    5  2022-02-27 13:26:38 root cd /oinfluxdb 
    6  2022-02-27 13:26:38 root ls
    7  2022-02-27 13:26:38 root ll
    8  2022-02-27 13:26:38 root vim influxdb.sh
    9  2022-02-27 13:26:38 root /bin/bash influxdb.sh
   10  2022-02-27 13:26:38 root systemctl status influxdb 

2.history 設置歷史命令記錄數

[root@192 ~]# vim /etc/bashrc 
 export HISTSIZE=1000
[root@192 ~]# source /etc/profile

3.指定不同終端執行的命令都存儲在同一個文件中

[root@192 ~]#vim /etc/bashrc
 export HISTFILE=/var/log/.cmd_log
[root@192 ~]# source /etc/bashrc

4.忽略重複命令

[root@192 ~]# vim /etc/bashrc
 export HISTCONTROL=ignoredups  
[root@192 ~]#  source /etc/bashrc 

5.多個終端同時操作時,避免命令覆蓋,採用追加方式

[root@192 ~]# shopt -s histappend

關於history的小技巧

  • !number 執行第幾條命令
  • !command 從最近的命令查到以command開頭的命令執行
  • !! 執行上一條

 

Tags: