对于 Linux 用户来说用 history 翻看自己敲了哪些命令肯定不陌生。但是 history 有几个问题让它特别不适合在生产环境下使用:
- 没有时间戳
- 没有用户
- 默认 1000 条记录,再老的就找不到了
githu: https://github.com/selboo/PyCommand
理想的解决方法是把所有用户敲过的所有命令都记录在日志文件中,方案如下:
在文件 /etc/profile
的末尾增加如下内容,重新登陆即可看到日志,debian/ubuntu 的日志在 /var/log/syslog
;centos/redhat 的日志在:/var/log/messages
。
function log2syslog
{
export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [`who am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`] "
export PROMPT_COMMAND='\
if [ -z "$OLD_PWD" ];then
export OLD_PWD=$(pwd);
fi;
if [ ! -z "$LAST_CMD" ] && [ "$(history 1)" != "$LAST_CMD" ]; then
logger `whoami`_shell_cmd "[$OLD_PWD]$(history 1)";
fi ;
export LAST_CMD="$(history 1)";
export OLD_PWD=$(pwd);'
}
trap log2syslog DEBUG
githu: https://github.com/selboo/PyCommand
转载请注明:爱开源 » 在系统日志中记录所有 bash 历史