Linux的歷史記錄可以讓我們方便的查看系統(tǒng)的日常事務(wù),但是當(dāng) history 記錄多了之后會使Linux系統(tǒng)性能下降,那么我們可以通過定期清理和保留 history 記錄優(yōu)化Linux性能.
有經(jīng)驗的 Linux 系統(tǒng)工程師都喜歡把 Bash 的 HISTSIZE/HISTFILESIZE 設(shè)置的很大,這樣可以記錄更多的歷史命令以便以后查閱,這是個好習(xí)慣,但有個小問題就是 history 記錄了的大量信息在系統(tǒng)啟動后就被 load 到內(nèi)存里,并且一直保存在內(nèi)存里,這樣浪費了不少內(nèi)存,據(jù)統(tǒng)計100000條歷史記錄大概占用 10MB 左右的內(nèi)存.
要知道,現(xiàn)在的IT運維系統(tǒng)已經(jīng)趨向于云計算和虛擬化,其特別就是根據(jù)你對硬件資源的需求為你定制的分配,因此,history所占用的內(nèi)存完全是沒必要的,10MB的可用內(nèi)存可以干很多事情,比如啟用一個 MySQL 服務(wù),開個 syslogd等.
那么如何保存盡量多的歷史記錄而又不浪費內(nèi)存呢?一個辦法就是把歷史記錄定期保存到硬盤上,bash 的當(dāng)前歷史記錄保存在 .bash_history 里,只要定期清理這個文件的記錄就可以了:
- #!/bin/bash
- # archive linux command history files
- umask 077
- maxlines=2000
- lines=$(wc -l < ~/.bash_history)
- --Vevb.com
- 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 文件,如果行數(shù)超過2000行就剪裁2000行記錄,這個值可以自定義,修改maxlines參數(shù)即可,并添加到 .bash_history.sav 這個文件里,這樣我們就可以保存所有的歷史記錄,而且當(dāng)前的歷史記錄不超過2000行,只占用少量資源.
新聞熱點
疑難解答
圖片精選