《Linux性能優化之定期清理和保留 history 記錄》要點:
本文介紹了Linux性能優化之定期清理和保留 history 記錄,希望對您有用。如果有疑問,可以聯系我們。
有經驗的 Linux 系統工程師都喜歡把 Bash 的 HISTSIZE/HISTFILESIZE 設置的很大,這樣可以記錄更多的歷史命令以便以后查閱,這是個好習慣,但有個小問題就是 history 記錄了的大量信息在系統啟動后就被 load 到內存里,并且一直保存在內存里,這樣浪費了不少內存,據統計100000條歷史記錄大概占用 10MB 左右的內存.要知道,現在的IT運維系統已經趨向于云計算和虛擬化,其特別就是根據你對硬件資源的需求為你定制的分配.因此,history所占用的內存完全是沒必要的,10MB的可用內存可以干很多事情,比如啟用一個 MySQL 服務,開個 syslogd等.
那么如何保存盡量多的歷史記錄而又不浪費內存呢?一個辦法就是把歷史記錄定期保存到硬盤上,bash 的當前歷史記錄保存在 .bash_history 里,只要定期清理這個文件的記錄就可以了:
[code language=”bash”]
#!/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
[/code]
上面腳本所做的事情很簡單,檢查 .bash_history 文件,如果行數超過2000行就剪裁2000行記錄(這個值可以自定義,修改maxlines參數即可)并添加到 .bash_history.sav 這個文件里,這樣我們就可以保存所有的歷史記錄,而且當前的歷史記錄不超過2000行,只占用少量資源.
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/4640.html