Linux中History命令优化设置

1、History命令介绍

  在Linux中,我们可以通过history来查看历史命令,用来记录在某个时刻使用了哪个命令,历史命令记录可能包含敏感信息,如密码、个人数据或系统配置细节。设置一个合理的历史命令条数上限可以在一定程度上减少敏感信息泄露的风险。

2、工作原理

  Linux 命令的历史记录,会持久化存储,默认位置是当前用户家目录的.bash_history文件。当Linux系统启动一个 Shell 时,Shell 会从.bash_history文件中,读取历史记录,存储在相应内存的缓冲区中。我们平时所操作的Linux命令,都会记录在缓存区中。包括history命令所执行的历史命令管理,都是在操作缓存区,而不是直接操作.bash_history文件。当我们退出Shell,比如按下Ctrl+D时,Shell进程会把历史记录缓存区的内容,写回到.bash_history文件中去。

3、History文件位置及环境变量

  各用户家目录下的隐藏文件: /home/用户/.bash_history

  全局环境变量:/etc/profile 

  各用户环境变量:/home/用户/.bash_profile

4、History命令用法

  history -c:清除缓存区中的历史记录((只是清理了表层,可在.bash_history找到回))

  history -d N:删除指定序号的命令记录

  history n:显示最近的 n 条历史记录

  history -a:保存命令记录

  history -r:读取命令记录到缓冲区

  history -w:将缓存区的历史记录保存到指定文件

  history -s:添加命令记录到缓冲区

5、编辑配置文件

  执行命令: vim /etc/profile ,将以下配置添加到/etc/profile文件末尾(红色汉字部分为参数说明,不用添加)。

 1 # 获取当前登录用户的真实IP地址
 2 USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
 3 # 如果获取不到IP,则使用hostname命令获取主机名作为IP的替代值
 4 if [ -z "$USER_IP" ]; then    
 5     USER_IP=`hostname`
 6 fi
 7 #格式化历史命令输出
 8 export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "
 9 #开启历史记录追加功能
10 shopt -s histappend
11 # 设置PROMPT_COMMAND环境变量,使得每次shell提示符出现前自动执行history -a命令,确保所有交互式命令都被保存至历史记录中
12 export PROMPT_COMMAND="history -a"  

  找到 HISTSIZE=1000 ,将参数数值调整为10(默认情况下,Linux系统最多存储 1000 条历史记录,可以通过HISTSIZE环境变量查看)。

  修改完成后按ESC,输入wq,保存退出,然后执行: source /etc/profile ,使其配置生效。

  注意,HISTSIZE变量只能控制缓冲区中的历史记录数量,如果需要控制.bash_history文件存储的最大记录数,可以通过HISTFILESIZE进行控制,上述参数修改只在当前Shell环境生效,如果需要永久生效,需要写入配置文件。 

1 echo "export HISTSIZE=10" >> ~/.bash_profile
2 echo "export HISTFILESIZE=200" >> ~/.bash_profile
3 source ~/.bash_profile

6、查看结果

  执行命令:history,从输出结果中可以看到配置已经生效,包含了执行时间、IP地址、用户名、执行命令就都展现出来了,并且只显示最近10条历史记录。

  

 

posted @ 2025-04-08 15:19  BK小君  阅读(472)  评论(0)    收藏  举报