在linux系统下、history命令会保存多少条命令呢?曾在一本书上说,如果注销系统,那么会将所有的历史命令都定入到~/.bash_history,
但只保留1000条命令(这个是由默认的shell变量所设置了的)但是为什么我们执行history命令后会出现大于1000条的历史记录呢,
其实当我们仔细一看只是序列大于1000、记录的条数还是1000条。
在此我是这样理解的:
1、~/.bash_histroy里面是记录的上次注销前的历史记录(最大保存1000条,且是上次注销前最近的1000条记录)
2、执行history命令,会显示~/.bash_history里的记录加上当前shell所执行记录。且也是只显示1000条记录、如重新登录后、执行ls命令后、再使用history查看、
会显示.bash_history里的+ls和history这两条。如果~/.bash_history里有1000条、则显示后998+ls和history这两条命令。
3、我们可以修改history的历史保留命令的条数;可以查看history的默认保留条数 echo $HISTSIZE 一般默认是1000条如下图所示:
如果为了安全我们只需要保留200条,怎么办呢?我们可以临时修改最大保留条数:HISTSIZE=200 这样就修改成了200条啦,但是重启服务器后,又还原了。
如果想一直保留200条,我们需要在/etc/profile修改他的环境变量;可以使用vim编辑(推荐使用vim编辑),也可以使用sed直接修改。命令如下:
[root@5201351 ~]# sed -i 's/^HISTSIZE=1000/HISTSIZE=200/' /etc/profile [root@5201351 ~]# source /etc/profile //使其立即生效
这样就算重启服务器后、history命令的历史保留条数仍然为200条,直到下一次HISTSIZE变量的修改。
如果是想将命令条数设置更多,而且还要求在历史命令文件中,有时间戳记录(.bash_history),可以按如下方法配置
[root@5201351 ~]# echo "HISTSIZE=99999" >> /etc/profile [root@5201351 ~]# echo "HISTTIMEFORMAT='%F %T '" >> /etc/profile
这里的HISTTIMEFORMAT设置了 '%F %T ',重新登录后,就可能通过history命令看到每一条记录都会有 '%F %T ' 格式的日期时间显示
这样配置后,也可以保证.bash_history 文件记录历史命令时,带有时间的,但显示格式为 一行时间,一行命令,样式如下:
[root@5201351 ~]# head -n 4 .bash_history #1677227826 ls #1677227827 date
笔者也研究过能不否通过配置,让这个历史命令文件也显示成更加直观的日期时间格式,但没有找到好的方法~
尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/4208509.html
作者:一名卑微的IT民工
出处:https://www.cnblogs.com/5201351
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
由于博主的水平不高,文章没有高度、深度和广度,只是凑字数,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用读书、参考、引用、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个卑微的IT民工!