有经验的 Linux 系统工程师都喜欢把 Bash 的 HISTSIZE/HISTFILESIZE 设置的很大,这样可以记录更多的历史命令以便以后查阅,这是个好习惯,但有个小问题就是 history 记录了的大量信息在系统启动后就被 load 到内存里,并且一直保存在内存里,这样浪费了不少内存,据统计100000条历史记录大概占用 10MB 左右的内存。要知道,现在的IT运维系统已经趋向于云计算和虚拟化,其特别就是根据你对硬件资源的需求为你定制的分配。因此,history所占用的内存完全是没必要的,10MB的可用内存可以干很多事情,比如启用一个 MySQL 服务,开个 syslogd等。
那么如何保存尽量多的历史记录而又不浪费内存呢?一个办法就是把历史记录定期保存到硬盘上,bash 的当前历史记录保存在 .bash_history 里,只要定期清理这个文件的记录就可以了:
#!/bin/bash
# archive linux command history files
umask 077
maxlines=2000
lines=$(wc -l < ~/.bash_history)
if (($lines > $maxlines)); then
cut=$(($lines - $maxlines))
head -$cut ~/.bash_history >> ~/.bash_history.sav
sed -e "1,${cut}d" ~/.bash_history > ~/.bash_history.tmp
mv ~/.bash_history.tmp ~/.bash_history
fi
上面脚本所做的事情很简单,检查 .bash_history 文件,如果行数超过2000行就剪裁2000行记录(这个值可以自定义,修改maxlines参数即可)并添加到 .bash_history.sav 这个文件里,这样我们就可以保存所有的历史记录,而且当前的历史记录不超过2000行,只占用少量资源。
创造与魔法 安卓版v1.0.0750
创造与魔法是一款开放世界手游,在游戏中玩家可探索这个奇妙的世
创造与魔法修改版 最新版v1.0.0750
创造与魔法无限点券版是款探索冒险游戏,该款游戏的操作还是蛮自
战争与文明官方版本 安卓版v1.7.16
战争与文明是一款由上海邮通科技有限公司开发的战争策略游戏,这
迷你世界0元领皮肤无限迷你币版 最新安卓版v1.43.0
迷你世界0元购买皮肤版是这款开放沙盒冒险建造游戏的特殊破解版
创造与魔法无限经验版 安卓版v1.0.0750
创造与魔法无限经验版是款可以改造环境,整个游戏的自由度还是蛮