常用Shell命令集合和使用技巧 推薦

2022-09-26 13:39:24 字數 2452 閱讀 7431

一、控制台使用技巧

基於我平時的工作經驗,總結出一些我常用的快捷鍵

1.1 操作快捷鍵

ctrl+r:可以快速查詢歷史命令

ctrl+a / ctrl+e:移動游標到命令列首 / 行尾

ctrl+w / ctrl+k:刪除游標之前 / 之後的內容

1.2 vim檔案編輯快捷鍵

zz:檔案儲存並退出

1.3 程序操作快捷鍵

ctrl+c:強制終止程式

ctrl+z:掛起乙個程序

ctrl+d: 終端輸入exit後回車

1.4 linux命令中快捷鍵(top)

shift www.cppcns.com+ p: 根據cpu使用率排序

shift + m: 根據mem使用率排序

二、shell命令合集

首先,我們先對shell命令合集做乙個分類,主要可分為 空間分析,指定檔案操作,鏈結狀態分析,ip資訊提取

2.1 空間分析

場景1: 磁碟空間不足,需快速定位日誌目錄

該場景主要用在linux作業系統磁碟空間不足,需要快速定位磁碟使用情況,對檔案的磁碟使用率做排序,需要用到如下組合命令:

du -x --max-de程式設計客棧pth=1 / | sort -k1 -rn #-x 表示跳過其他檔案系統

-x表示跳過其他檔案系統,只分析本檔案系統裡面的檔案,排除一些額外的干擾項;--max-depth=1 表示只分析/ 目錄下第一級目錄下的所有檔案大小;-k 表示具體按照那一列進行排序;-r是倒序排列;-n表示只對數值排序

場景2:系統產生很多碎片檔案,導致 inode 資源不足

該場景主要是作業系統產生大量碎片檔案,隨之消耗大量innode,innode的過渡使用會導致innode資源不足無法建立檔案,因為du 命令只能統計磁碟使用情況無法統計odlrxumaa碎片檔案的個數,所以統計碎片檔案個數需要用到如下組合命令

find -type f | awk -f/ -v ofs=/

'end

' | sort -k1 -rn | head

這條命令比較複雜,使用了find,awk,sort,head。

通過find找出指定檔案型別的檔案,然後管道給 awk,它可以把文字內容按行進行格式化輸出並展示,-f / 指定處理檔案時字串之間以 / 進行分割,-v ofs=/ 表示檔案顯示結果時以 / 進行分割展示。對於awk命令整體規則而言有乙個 {} end {} 格式,前面的 {} 表示行處理操作,end{} 表示行處理後需要進行整體結果出,在行處理操作邏輯中,設定$nf 為空表示將每一行的檔名資訊去除,從程式設計客棧而只保留目錄路徑,dir 是乙個自增陣列,用於統計結果。最後通過 for 迴圈進行遍歷輸出dir關聯陣列中所有行資訊。

2.2 指定檔案操作

場景一:批量查詢檔案對內容做替換

場景一適用於乙個目錄下有多個子目錄,並且子目錄下有大量檔案,我們需要找到指定檔案然後替換檔案裡面的內容,需要用到如下組合命令:

(find . -name "*.txt"|xargs tar -cvf test.tar)

&& cp -f test.tar /home/.

通過find命令查詢當前目錄下的所有子資料夾名稱為 consumer.xml 的檔案,然管道給 sed ,通過-i把檔案內容替換。

場景二:批量查詢檔案作拷貝打包

場景二主要是用在對查詢到的指定檔案進行打包,然後拷貝到指定路徑,可以使用如下組合命令:

netstat -n | awk '/^tcp/

end '

查詢當前目錄下的所有以 .txt結尾的檔案,然後打包成test.tar,如果打包成功則把壓縮包拷貝到/home目錄下

2.3 網路連線狀態分析

場景一:列出tcp協議下的連線,並統計所有狀態的總量

場景一主要用在檢視伺服器當前有多少tcp型別的連線,分析tcp/ip網路狀態(establis程式設計客棧hed,time_wait)

netstat -n | awk '/^tcp/ end '

對於awk命令整體規則而言有乙個 {} end {} 格式,上述命令分析了tcp協議下,所有型別連線的總數,可用於分析檢視當前伺服器連線數。

2.4 ip資訊提取

場景一:通過命令獲取主機ip資訊

ip a|grep "global"|awk''|awk -f/''

ip a負責檢視主機上所有的網絡卡資訊,然後過濾 global關鍵字,列印出第二列,再把子網掩碼移除掉即可獲取到主機ip

三、常見問題

問題一:shell適不適合作多併發任務

答:不適合,shell中一般是通過nohup的方式把需要併發執行的任務放入後台,這樣做有存在一些問題,包括  程序狀態不好控制,程序間資訊共享一般以檔案形式進行等,所以當需要進行大的併發任務執行時,建議使用python,go,php語言實現併發。

問題二:shell適合用在什麼場景中

答:shell 適合用在追求運維高效(非效能高效)要求的簡單場景中,如日誌切割、程序分析、系統初始化等。

總結

常用shell命令集合

在輸出資訊的同時把資訊記錄到檔案中 例子 ls tee ls.txt 將會在終端上顯示ls命令的執行結果,並把執行結果輸出到ls.txt檔案中,將會覆蓋原檔案的內容,若無ls.txt檔案,將會自動建立該檔案 ls tee a ls.txt 保留ls.txt檔案中原來的內容,並把ls命令的執行結果追加...

常用adb命令集合

adb version 複製 adb devices 複製 當前路徑 adb install apkfilepath 不是當前路徑 adb install user demo.apk 多台裝置 adb s 裝置名 install apkfilepath 複製 adb uninstall pakcag...

常用DOS命令集合

arp a 檢視最近一次arp得到的區域網中的主機 systeminfo 檢視主機的詳細資訊 包含已經打過的補丁 net view 檢視區域網中的主機名 msg 主機名 向電腦中某個賬戶發訊息。如 msg hello 代表的是賬戶的名稱 ipconfig 檢視主機的ip資訊 shutdown s關機...