1.History命令说明
history命令用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。
BASH 将关闭 终端会话时所运行的所有命令,并写入你的历史记录文件。
~/.bash_history
当你同时运行两个会话的时候,history 命令将单独显示当前的会话记录,而不会显示其他的历史会话记录。
2.语法
history: usage: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
如何查阅最后的“ n ”命令
默认情况下,history 命令显示我们执行的最后1000条命令。如果你只想列出“ n ”个命令,请使用以下命令。
例如,显示最近的10个历史记录,请运行以下命令。
$ history 10
按条件搜索历史命令
$ history | grep rm
$ history | tail -2
清除历史
1.如果想要删除特定命令,请输入 :history -d
2.要清空全部历史记录,请执行:history -c
3. 用法
3.1 设置历史记录的时间
可以在.bash_profile里配置
HISTTIMEFORMAT='%F %T ' #注意有个空格,为了显示时日期与命令之间有空格分割。
3.2 使用 HISTSIZE 控制历史命令记录的总行数
可以在.bash_profile里配置
HISTSIZE=3000 #默认保留1000条。
HISTFILESIZE=3000
HISTFILESIZE 定义了在 .bash_history 中保存命令的记录总数.
HISTSIZE 定义了 history 命令输出的记录数.
如果想禁用history, 可以设置HISTSIZE=0
3.3 使用 HISTFILE 更改保存历史记录文件
可以在.bash_profile里配置
HISTFILE=./USER-UID.log
3.4 实时追加history,不必等用户退出才将内存中的history记录到文件
可以在.bash_profile里配置
PROMPT_COMMAND=”history -a”
3.5 使用 HISTCONTROL 强制 history 不记住特定的命令
可以在.bash_profile里配置
HISTCONTROL=ignorespace
然后执行具体命令(如ls)的时候面输入一个空格:
$ (这里前面空一格)ls 123
配置环境变量
编辑/etc/profile
vim /etc/profile
添加以下内容
USER_IP=`who -u am i 2>/dev/null |awk '{print $NF}' |sed -e 's/[()]//g'`
LOG_NAME=`who -u am i |awk '{print $1}'`
HIST_DIR=/var/log/.history
if [ -z ${USER_IP} ]
then
USER_IP=`hostname`
fi
if [ ! -d ${HIST_DIR} ]
then
mkdir -p ${HIST_DIR}
chmod 777 ${HIST_DIR}
fi
if [ ! -d ${HIST_DIR}/${LOG_NAME} ]
then
mkdir -p ${HIST_DIR}/${LOG_NAME}
chmod 777 ${HIST_DIR}/${LOG_NAME}
fi
PROMPT_COMMAND="history -a"
export HISTSIZE=4000
export HISTFILESIZE=4000
export HISTTIMEFORMAT="[%F %T] [$(whoami)] [${USER_IP}]"
DT=`date +"%Y%m%d"`
export HISTFILE="${HIST_DIR}/${LOG_NAME}/${USER_IP}.history.$DT"
chmod 777 ${HIST_DIR}/${LOG_NAME}/*.history* 2>/dev/null
刷新环境变量
source /etc/profile
查看历史命令
history
根据用户名在.history目录下创建目录并生成以登录客户端ip和时间命名的文件
filebeat 配置
- type: log
enabled: true
paths:
- /var/log/.history/root/*
- /var/log/.history/ubuntu/*
tags: ["bashcommand"]
exclude_lines: ['^#']
kibana