介紹如何在 Linux 中查詢過去執行過的指令以及執行的時間。
在 Linux 中我們可以使用 history
指令查詢過去執行的指令歷史記錄:
# 查詢指令歷史記錄
history
982 ls 983 rm ar1.zip ar2.zip 984 ls 985 R 986 man zipsplit 987 man zipnote 988 ls 989 man unzip 990 exit 991 cd tmp/SAS/ [略]
如果只要顯示最近執行過的幾筆歷史記錄,可以在執行 history
指令時加上一個數值的參數,指定要顯示的指令歷史記錄筆數:
# 顯示最近 5 筆指令歷史記錄 history 5
1931 ls 1932 cd sn 1933 ls 1934 cd sonarqube-8.8.0.42792/ 1935 ls
若要清除過去的所有指令歷史記錄,可以使用 -c
參數:
# 清除指令歷史記錄 history -c
若要清除指定的指令記錄,可以使用 -d
參數並指定指令記錄的位置編號,例如清除編號 987
的指令記錄則可執行:
# 清除編號 987 的指令記錄 history -d 987
若要顯示每條指令執行的時間點,可以設定 HISTTIMEFORMAT
變數,指令時間與日期的格式(格式可參考 date
指令的說明):
# 顯示指令執行時間點 HISTTIMEFORMAT="%Y/%m/%d %T " history
983 2021/04/28 19:29:29 rm ar1.zip ar2.zip 984 2021/04/28 19:29:29 ls 985 2021/04/28 19:29:29 R 986 2021/04/28 19:29:29 man zipsplit 987 2021/04/28 19:29:29 man zipnote 988 2021/04/28 19:29:29 ls 989 2021/04/28 19:29:29 man unzip 990 2021/04/28 19:29:29 exit 991 2021/04/28 19:29:29 cd tmp/SAS/ 992 2021/04/28 19:29:29 ls [略]
使用另外一種日期格式:
# 顯示指令執行日期 HISTTIMEFORMAT="%F " history
988 2021-04-28 ls 989 2021-04-28 man unzip 990 2021-04-28 exit 991 2021-04-28 cd tmp/SAS/ 992 2021-04-28 ls 993 2021-04-28 vi archive_list.csv 994 2021-04-28 head archive_list.csv 995 2021-04-28 cd tmp/SAS 996 2021-04-28 ls 997 2021-04-28 exit [略]
若要查詢特定指令的執行記錄,只要搭配 grep
篩選指令名稱即可:
# 顯示 apt 指令執行時間點 HISTTIMEFORMAT="%F %T " history | grep apt
1067 2021-04-28 19:29:29 apt update -qq 1260 2021-04-28 19:29:29 apt update 1375 2021-04-28 19:29:29 sudo apt install finger 1436 2021-04-28 19:29:29 sudo apt install socat 1794 2021-04-28 19:29:29 sudo apt install whois