您好,登錄后才能下訂單哦!
這篇文章主要介紹了常用Shell命令集合有哪些,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
一、控制臺使用技巧
基于我平時的工作經(jīng)驗,總結(jié)出一些我常用的快捷鍵
1.1 操作快捷鍵
Ctrl+r:可以快速查找歷史命令
Ctrl+a / Ctrl+e:移動光標(biāo)到命令行首 / 行尾
Ctrl+w / Ctrl+k:刪除光標(biāo)之前 / 之后的內(nèi)容
1.2 VIM文件編輯快捷鍵
ZZ:文件保存并退出
1.3 進(jìn)程操作快捷鍵
Ctrl+c:強(qiáng)制終止程序
Ctrl+z:掛起一個進(jìn)程
Ctrl+d: 終端輸入exit后回車
1.4 linux命令中快捷鍵(top)
Shift + p: 根據(jù)CPU使用率排序
Shift + m: 根據(jù)Mem使用率排序
二、Shell命令合集
首先,我們先對Shell命令合集做一個分類,主要可分為 空間分析,指定文件操作,鏈接狀態(tài)分析,IP信息提取
2.1 空間分析
場景1: 磁盤空間不足,需快速定位日志目錄
該場景主要用在linux操作系統(tǒng)磁盤空間不足,需要快速定位磁盤使用情況,對文件的磁盤使用率做排序,需要用到如下組合命令:
du -x --max-depth=1 / | sort -k1 -rn #-x 表示跳過其他文件系統(tǒng)
-x表示跳過其他文件系統(tǒng),只分析本文件系統(tǒng)里面的文件,排除一些額外的干擾項;--max-depth=1 表示只分析/ 目錄下第一級目錄下的所有文件大??;-k 表示具體按照那一列進(jìn)行排序;-r是倒序排列;-n表示只對數(shù)值排序
場景2:系統(tǒng)產(chǎn)生很多碎片文件,導(dǎo)致 inode 資源不足
該場景主要是操作系統(tǒng)產(chǎn)生大量碎片文件,隨之消耗大量innode,innode的過渡使用會導(dǎo)致innode資源不足無法創(chuàng)建文件,因為du 命令只能統(tǒng)計磁盤使用情況無法統(tǒng)計碎片文件的個數(shù),所以統(tǒng)計碎片文件個數(shù)需要用到如下組合命令
find -type f | awk -F/ -v OFS=/ '{$NF="";dir[$0]++}END { for (i in dir) print dir[i] i}' | sort -k1 -rn | head
這條命令比較復(fù)雜,使用了find,awk,sort,head。
通過find找出指定文件類型的文件,然后管道給 awk,它可以把文本內(nèi)容按行進(jìn)行格式化輸出并展示,-F / 指定處理文件時字符串之間以 / 進(jìn)行分割,-v OFS=/ 表示文件顯示結(jié)果時以 / 進(jìn)行分割展示。對于awk命令整體規(guī)則而言有一個 {} END {} 格式,前面的 {} 表示行處理操作,END{} 表示行處理后需要進(jìn)行整體結(jié)果出,在行處理操作邏輯中,設(shè)置$NF 為空表示將每一行的文件名信息去除,從而只保留目錄路徑,dir 是一個自增數(shù)組,用于統(tǒng)計結(jié)果。最后通過 for 循環(huán)進(jìn)行遍歷輸出dir關(guān)聯(lián)數(shù)組中所有行信息。
2.2 指定文件操作
場景一:批量查找文件對內(nèi)容做替換
場景一適用于一個目錄下有多個子目錄,并且子目錄下有大量文件,我們需要找到指定文件然后替換文件里面的內(nèi)容,需要用到如下組合命令:
(find . -name "*.txt"|xargs tar -cvf test.tar) && cp -f test.tar /home/.
通過find命令查找當(dāng)前目錄下的所有子文件夾名稱為 consumer.xml 的文件,然管道給 sed ,通過-i把文件內(nèi)容替換。
場景二:批量查找文件作拷貝打包
場景二主要是用在對查找到的指定文件進(jìn)行打包,然后拷貝到指定路徑,可以使用如下組合命令:
netstat -n | awk '/^tcp/{arr[$NF]++ } END {for (i in arr) print arr[i] " " i }'
查找當(dāng)前目錄下的所有以 .txt結(jié)尾的文件,然后打包成test.tar,如果打包成功則把壓縮包拷貝到/home目錄下
2.3 網(wǎng)絡(luò)連接狀態(tài)分析
場景一:列出tcp協(xié)議下的連接,并統(tǒng)計所有狀態(tài)的總量
場景一主要用在查看服務(wù)器當(dāng)前有多少TCP類型的連接,分析TCP/IP網(wǎng)絡(luò)狀態(tài)(ESTABLISHED,TIME_WAIT)
netstat -n | awk '/^tcp/{arr[$NF]++} END {for (i in arr) print arr[i] " " i}'
對于awk命令整體規(guī)則而言有一個 {} END {} 格式,上述命令分析了TCP協(xié)議下,所有類型連接的總數(shù),可用于分析查看當(dāng)前服務(wù)器連接數(shù)。
2.4 IP信息提取
場景一:通過命令獲取主機(jī)IP信息
ip a|grep "global"|awk'{print $2}'|awk -F/'{print $1}'
ip a負(fù)責(zé)查看主機(jī)上所有的網(wǎng)卡信息,然后過濾 global關(guān)鍵字,打印出第二列,再把子網(wǎng)掩碼移除掉即可獲取到主機(jī)ip
三、常見問題
問題一:Shell適不適合作多并發(fā)任務(wù)
答:不適合,Shell中一般是通過nohup的方式把需要并發(fā)執(zhí)行的任務(wù)放入后臺,這樣做有存在一些問題,包括 進(jìn)程狀態(tài)不好控制,進(jìn)程間信息共享一般以文件形式進(jìn)行等,所以當(dāng)需要進(jìn)行大的并發(fā)任務(wù)執(zhí)行時,建議使用Python,Go,PHP語言實現(xiàn)并發(fā)。
問題二:Shell適合用在什么場景中
答:Shell 適合用在追求運維高效(非性能高效)要求的簡單場景中,如日志切割、進(jìn)程分析、系統(tǒng)初始化等。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“常用Shell命令集合有哪些”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。