Linux记录操作日志

【Linux记录操作日志】人生必须的知识就是引人向光明方面的明灯。这篇文章主要讲述Linux记录操作日志相关的知识,希望能为你提供帮助。

  • 根据客户需求需要记录服务器的所有日志,并且要详细!后续会保存60天
  • 实现方式:记录所有用户所执行的命令都发送给日志守护进程rsyslogd
# vim /etc/profile

###################################################
#设置history格式
export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [`who am i 2> /dev/null| \\
awk print $NF|sed -e s/[()]//g`] "


#记录所有用户所执行的每一个命令都发送给日志守护进程rsyslogd
export PROMPT_COMMAND=\\
if [ -z "$OLD_PWD" ]; then
export OLD_PWD=$PWD;
fi;
if [ ! -z "$LAST_CMD" ] & & [ "$(history 1)" != "$LAST_CMD" ]; then
logger -t `whoami`_shell_cmd "[$OLD_PWD]$(history 1)";
fi ;
export LAST_CMD="$(history 1)";
export OLD_PWD=$PWD;

  • source一下
# source /etc/profile

  • 因为是发送给rsyslogd进程,所以在/etc/rsyslog.conf设置存放路径
# vim /etc/rsyslog.conf
*.info; mail.none; authpriv.none; cron.none; user.none/var/log/messages# 添加user除外,要不然message和history都会记录浪费存储
user.*/var/log/history# 新增一条

  • 重启rsyslog服务
# systemctl restart rsyslog

  • 测试一下

  • 每天切割可以通过logrotate来实现
# vim /etc/logrotate.d/history
/var/log/history
daily
copytruncate
rotate 7
compress
dateext
delaycompress
notifempty
missingok
create 644 root root

# logrotate -f /etc/logrotate.d/history

  • 执行完就有了


    推荐阅读