相關內容:https://segmentfault.com/q/1010000009599965segmentfault
#!/bin/bash
#script須要使用source commandhist.sh運行
#設置command history記錄
cat >> /etc/profile <<"EOF"
HISTFILESIZE=2000
HISTSIZE=2000
HISTTIMEFORMAT="%Y%m%d-%H%M%S: "
export HISTTIMEFORMAT
export PROMPT_COMMAND='{ command=$(history 1 | { read x y; echo $y; });logger -p local1.notice -t bash -i "user=$USER,ppid=$PPID,from=$SSH_CLIENT,pwd=$PWD,command:$command"; }'
EOFbash
#設置/etc/profile文件生效
source /etc/profilerest
#增長一個本地的日誌策略local.notice,並設置該消息不經過messages輸出
cat >> /etc/rsyslog.conf <<EOF
local1.notice /var/log/command.log日誌
EOF
sed -i 's/\*\.info;mail\.none;authpriv\.none;cron\.none/\*\.info;mail\.none;authpriv\.none;cron\.none;local1\.none/g' /etc/rsyslog.conform
#修改rsyslog時間格式
sed -i 's/$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat/#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat/g' /etc/rsyslog.conf
cat >>/etc/rsyslog.conf<<"EOF"
$template myformat,"%$NOW% %TIMESTAMP:8:15% %hostname% %syslogtag% %msg%\n"
$ActionFileDefaultTemplate myformatip
EOFit
#配置command.log
cat >> /etc/logrotate.d/local1 <<EOF
/var/log/command.log{
daily
olddir /var/log/command_logs/
create 0600 root root
}
EOF
mkdir -p /var/log/command_logsio
#重啓日誌服務
service rsyslog restartform