最近使用了個自動化平臺(詳見自動化運維平臺Spug測試)進行每週的變動,效果很不錯,平臺將大量重複繁瑣的操做經過腳本分發方式標準化自動化了,平臺核心是下發到各個服務器的shell腳本,感受有必要對shell腳本作個總結,因此有了寫本專題的想法。本專題將結合運維實際介紹shell腳本的各項用法,預計10篇左右,將包括系統巡檢、監控、ftp上傳下載、數據庫查詢、日誌清理、時鐘同步、定時任務等,裏面會涉及shell經常使用語法、注意事項、調試排錯等。html
本文是該專題的第三篇。git
文章主要統計指定目錄下排名靠前的目錄。生產上文件系統超閥值是很常見的告警項,經過本文的統計腳本能夠快速準確的定位超閥值文件系統下使用率較高的目錄。github
主機名 | 操做系統版本 | ip | ansible版本 | 備註 |
---|---|---|---|---|
ansible-tower | Centos 7.6.1810 | 172.16.7.100 | 2.9.9 | ansible管理服務器,查詢腳本在該服務器上 |
157 | Centos 7.6.1810 | 172.16.7.157 | / | 被管服務器 |
[root@ansible-tower ~]# sh dir_space_calc.sh /var /opt /home /usr
統計/var /opt /home /usr這4個目錄下全部目錄的大小shell
[root@ansible-tower ~]# more file_space_20210219.log
執行結果輸出至日誌 file_space_20210219.log,可查看各目錄下排名前20的目錄具體大小和文件名。數據庫
[root@ansible-tower ~]# ansible -m script -a "chdir=/tmp /root/dir_space_calc.sh /home /log /usr" test157
使用ansible的script模塊執行腳本dir_space_calc.sh,先進入遠端服務器test157的/tmp目錄,再執行腳本。bash
[root@ansible-tower ~]# ansible -m shell -a 'more /tmp/file_space_20210219.log' test157
這次傳參的目錄只有3個:/home /log /usr,其中/log目錄還不存在,統計結果會忽略不存在的目錄。服務器
本文主要介紹瞭如何快速統計指定目錄下的大文件,經過腳本輸出的日誌能夠很方便的定位大文件路徑。生產上不少時候都是日誌所在文件系統使用率超閥值告警,因爲日誌通常不少目錄層次很深,手動查看勞時費力且容易有疏漏,本文的腳本可完美解決該問題。運維
本文全部腳本和安裝包文件已上傳github:shell-scripts-03ide
更多請點擊:shell專題測試