經常使用Linux命令集錦


經常使用Linux命令集錦  
mysql



逼格高又實用的Linux高級命令,開發運維都要懂



前言  linux

在運維的坑裏摸爬滾打好幾年了,我還記得我剛開始的時候,我只會使用一些簡單的命令,寫腳本的時候,也是要多簡單有多簡單,因此有時候寫出來的腳本又長又臭,像一些高級點的命令,好比說Xargs 命令、管道命令、自動應答命令等,若是當初我要是知道,那我也可能寫出簡潔高效的腳本。無論出於任何緣由,我都想對一些Linux使用的高級命令進行用法說明,利人利己,之後不記得的話,我也能夠回頭翻來看看。sql

image.png


一、實用的xargs命令  數據庫

在平時的使用中,我認爲xargs這個命令仍是較爲重要和方便的。咱們能夠經過使用這個命令,將命令輸出的結果做爲參數傳遞給另外一個命令。好比說咱們想找出某個路徑下以.conf結尾的文件,並將這些文件進行分類,那麼普通的作法就是先將以.conf結尾的文件先找出來,而後輸出到一個文件中,接着cat這個文件,並使用file文件分類命令去對輸出的文件進行分類。這個普通的方法還的確是略顯麻煩,那麼這個時候xargs命令就派上用場了。api

例1:找出 / 目錄下以.conf 結尾的文件,並進行文件分類安全

命令:# find / -name *.conf -type f -print | xargs file服務器

輸出結果以下所示:網絡

37dd00012172729eba4c

xargs後面不只僅能夠加文件分類的命令,你還能夠加其餘的不少命令,好比說實在一點的tar命令,你可使用find命令配合tar命令,將指定路徑的特殊文件使用find命令找出來,而後配合tar命令將找出的文件直接打包,命令以下:運維

# find / -name *.conf -type f -print | xargs tar cjf test.tar.gzssh


二、命令或腳本後臺運行  

有時候咱們進行一些操做的時候,不但願咱們的操做在終端會話斷了以後就跟着斷了,特別是一些數據庫導入導出操做,若是涉及到大數據量的操做,咱們不可能保證咱們的網絡在咱們的操做期間不出問題,因此後臺運行腳本或者命令對咱們來講是一大保障。

好比說咱們想把數據庫的導出操做後臺運行,而且將命令的操做輸出記錄到文件,那麼咱們能夠這麼作:

nohup mysqldump -uroot -pxxxxx --all-databases > ./alldatabases.sql &(xxxxx是密碼)

固然若是你不想密碼明文,你還能夠這麼作:

nohup mysqldump -uroot -p --all-databases > ./alldatabases.sql  (後面不加&符號)

執行了上述命令後,會提示叫你輸入密碼,輸入密碼後,該命令還在前臺運行,可是咱們的目的是後天運行該命令,這個時候你能夠按下Ctrl+Z,而後在輸入bg就能夠達到第一個命令的效果,讓該命令後臺運行,同時也可讓密碼隱蔽輸入。

命令後臺執行的結果會在命令執行的當前目錄下留下一個nohup.out文件,查看這個文件就知道命令有沒有執行報錯等信息。


三、找出當前系統內存使用量較高的進程  

在不少運維的時候,咱們發現內存耗用較爲嚴重,那麼怎麼樣才能找出內存消耗的進程排序呢?

命令:# ps -aux | sort -rnk 4  | head -20

37d80002df30f803a2e4

輸出的第4列就是內存的耗用百分比。最後一列就是相對應的進程。


四、找出當前系統CPU使用量較高的進程  

在不少運維的時候,咱們發現CPU耗用較爲嚴重,那麼怎麼樣才能找出CPU消耗的進程排序呢?

命令:# ps -aux | sort -rnk 3  | head -20

37d80002df8de065b192

輸出的第3列爲CPU的耗用百分比,最後一列就是對應的進程。

我想你們應該也發現了,sort 命令後的三、4其實就是表明着第3列進行排序、第4列進行排序。


五、同時查看多個日誌或數據文件  

在平常工做中,咱們查看日誌文件的方式多是使用tail命令在一個個的終端查看日誌文件,一個終端就看一個日誌文件。包括我在內也是,可是有時候也會以爲這種方式略顯麻煩,其實有個工具叫作multitail能夠在同一個終端同時查看多個日誌文件。

首先安裝multitail:

# wget ftp://ftp.is.co.za/mirror/ftp.rpmforge.net/redhat/el6/en/x86_64/dag/RPMS/multitail-5.2.9-1.el6.rf.x86_64.rpm

# yum -y localinstall multitail-5.2.9-1.el6.rf.x86_64.rpm

multitail工具支持文本的高亮顯示,內容過濾以及更多你可能須要的功能。

以下就來一個有用的例子:

此時咱們既想查看secure的日誌指定過濾關鍵字輸出,又想查看實時的網絡ping狀況:

命令以下:

# multitail -e "Accepted" /var/log/secure  -l "ping baidu.com"

37e10002f725449f2a07

是否是很方便?若是平時咱們想查看兩個日誌之間的關聯性,能夠觀察日誌輸出是否有觸發等。若是分開兩個終端可能來回進行切換有點浪費時間,這個multitail工具查看何嘗不是一個好方法。


六、持續ping並將結果記錄到日誌  

不少時候,運維總會聽到一個聲音,是否是網絡出什麼問題了啊,致使業務出現怪異的症狀,確定是服務器網絡出問題了。這個就是俗稱的背鍋,業務出了問題,第一時間相關人員找不到緣由不少狀況下就會把問題歸結於服務器網絡有問題。這個時候你去ping幾個包把結果丟出來,人家會反駁你,剛剛那段時間有問題而已,如今業務都恢復正常了,網絡確定正常啊,這個時候估計你要氣死。你要是再拿出zabbix等網絡監控的數據,這個時候就不太穩當了,zabbix的採集數據間隔你不可能設置成1秒鐘1次吧?小編就遇到過這樣的問題,結果我經過如下的命令進行了ping監控採集。而後再有人讓我背鍋的時候,我把出問題時間段的ping數據庫截取出來,你們公開談,結果那次被我叼槓回去了,之後他們都不敢輕易甩鍋了,這個感受好啊。

命令:

ping api.jpush.cn  | awk '{ print $0"\t" strftime("%Y-%m-%d %H:%M:%S",systime()) } ' >> /tmp/jiguang.log &

輸出的結果會記錄到/tmp/jiguang.log 中,每秒鐘新增一條ping記錄,以下:

37e10002f755c6163aae


七、查看tcp鏈接狀態  

指定查看80端口的tcp鏈接狀態,有利於分析鏈接是否釋放,或者***時進行狀態分析。

命令:#   netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn

37df00030def215f2040


八、查找80端口請求數最高的前20個IP  

有時候業務的請求量忽然上去了,那麼這個時候咱們能夠查看下請求來源IP狀況,若是是集中在少數IP上的,那麼多是存在***行爲,咱們使用防火牆就能夠進行封禁。命令以下:

# netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20

37e10002f810b79d1b45


九、ssh實現端口轉發  

可能不少的朋友都據說過ssh是linux下的遠程登陸安全協議,就是通俗的遠程登陸管理服務器。可是應該不多朋友會據說過ssh還能夠作端口轉發。其實ssh用來作端口轉發的功能仍是很強大的,下面就來作示範。

實例背景:咱們公司是有堡壘機的,任何操做均須要在堡壘機上進行,有寫開發人員須要訪問ELasticSearch的head面板查看集羣狀態,可是咱們並不想將ElasticSearch的9200端口映射出去,依然想經過堡壘機進行訪問。因此纔會將通往堡壘機(192.168.1.15)的請求轉發到服務器ElasticSearch(192.168.1.19)的9200上。

例子:

將發往本機(192.168.1.15)的9200端口訪問轉發到192.168.1.19的9200端口

ssh -p 22 -C -f -N -g -L 9200:192.168.1.19:9200 ihavecar@192.168.1.19

記住:前提是先進行祕鑰傳輸。

命令執行完後,訪問192.168.1.15:9200端口則真實是訪問192.168.1.19:9200端口。


後續  

此次就先記錄到這裏,下次有時間再繼續進行整理和記錄。

相關文章
相關標籤/搜索