此處網址,有詳細介紹標準狀況下, bash命令歷史記錄的傳統修改方式。git
下面文章,介紹了更符合實際須要的處理方法:bash
1. 在/etc/bashrc文件末尾內添加內容:
不一樣版本Linux,該文件名不一樣,視實際狀況來:
- RHEL : /etc/bashrc
- Ubuntu: /etc/bash.bashrcgoogle
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) $SSH_CONNECTION [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'
2. 修改rsyslog設定,新增/etc/rsyslog.d/bash.conf,定義類別爲local6的日誌文件名
local6.debug /var/log/commands.log
3. 修改rsyslog設定,避免bash history日誌重複記錄到系統日誌文件內
- RHEL: *.info;mail.none;authpriv.none;cron.none,local6.none /var/log/messages
- Ubuntu: *.*;auth,authpriv.none,local6.none -/var/log/syslogspa
4. 定義日誌轉儲, 在/etc/logrotate.d/syslog內,仿照已有格式,添加一行:
不一樣版本Linux,該文件名不一樣,視實際狀況來:
- RHEL : /etc/logrotate.d/syslog
- Ubuntu: /etc/logrotate.d/rsyslog.net
/var/log/commands.logdebug
5. 重啓rsyslog
systemctl restart rsyslogrest
6. 從新登陸帳號後,查看日誌 tail /var/log/commands.log
Apr 18 10:32:42 RHEL7macj root: root [2190]: what ? [127]
Apr 18 10:32:50 RHEL7macj root: root [2190]: ll /var/log/commands.log [0]
Apr 18 10:32:52 RHEL7macj root: root [2190]: cat /var/log/commands.log [0]
日誌