vim /etc/profile
export HISTTIMEFORMAT="%F %T "
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) $(pwd) $SSH_CLIENT $(history 1 | sed "s/^[ ]*[0-9]\+\[ ]*//" ) [$RETRN_VAL]"'
readonly PROMPT_COMMAND
export PROMPT_COMMAND='...':
- 将
PROMPT_COMMAND 变量导出,使其在当前 shell 及其子进程中可用。
RETRN_VAL=$?:
- 获取上一个命令的返回值,并存储在
RETRN_VAL 变量中。$? 是一个特殊变量,表示上一个命令的退出状态。
logger -p local6.debug "$(whoami) ...":
- 使用
logger 命令将信息记录到系统日志中。-p local6.debug 指定日志级别和设施。
$(whoami) 获取当前用户的用户名。
$(history 1 | sed "s/^[ ]*[0-9]\+\[ ]*//"):
history 1 获取最近的一条命令。
sed "s/^[ ]*[0-9]\+\[ ]*//" 用于删除命令前的历史编号和空格,只保留命令本身。
[$RETRN_VAL]:
vim /etc/rsyslog.d/history.conf
local6.debug /var/log/users-command.log