今天浩道跟大家分享linux硬核干貨,即高級(jí)運(yùn)維工程師常用的一些高效linux命令!
一、實(shí)用的 xargs 命令
在平時(shí)的使用中,我認(rèn)為 xargs 這個(gè)命令還是較為重要和方便的。我們可以通過使用這個(gè)命令,將命令輸出的結(jié)果作為參數(shù)傳遞給另一個(gè)命令。
比如說我們想找出某個(gè)路徑下以 .conf 結(jié)尾的文件,并將這些文件進(jìn)行分類,那么普通的做法就是先將以 .conf 結(jié)尾的文件先找出來(lái),然后輸出到一個(gè)文件中,接著 cat 這個(gè)文件,并使用 file 文件分類命令去對(duì)輸出的文件進(jìn)行分類。
這個(gè)普通的方法還的確是略顯麻煩,那么這個(gè)時(shí)候 xargs 命令就派上用場(chǎng)了。
例 1:找出 / 目錄下以 .conf 結(jié)尾的文件,并進(jìn)行文件分類
命令:
find/-name*.conf-typef
-print|xargsfile
輸出結(jié)果如下所示:

xargs 后面不僅僅可以加文件分類的命令,你還可以加其他的很多命令,比如說實(shí)在一點(diǎn)的 tar 命令,你可以使用 find 命令配合 tar 命令,將指定路徑的特殊文件使用 find 命令找出來(lái),然后配合 tar 命令將找出的文件直接打包,命令如下:
find/-name*.conf-typef
-print|xargstarcjftest.tar.gz
二、命令或腳本后臺(tái)運(yùn)行
有時(shí)候我們進(jìn)行一些操作的時(shí)候,不希望我們的操作在終端會(huì)話斷了之后就跟著斷了,特別是一些數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出操作,如果涉及到大數(shù)據(jù)量的操作,我們不可能保證我們的網(wǎng)絡(luò)在我們的操作期間不出問題,所以后臺(tái)運(yùn)行腳本或者命令對(duì)我們來(lái)說是一大保障。
比如說我們想把數(shù)據(jù)庫(kù)的導(dǎo)出操作后臺(tái)運(yùn)行,并且將命令的操作輸出記錄到文件,那么我們可以這么做:(反斜杠代表?yè)Q行,可以忽略)
nohupmysqldump-uroot-pxxxxx
—all-databases>
./alldatabases.sql&(xxxxx是密碼)
當(dāng)然如果你不想密碼明文,你還可以這么做:
nohupmysqldump-uroot-pxxxxx
—all-databases
>./alldatabases.sql(后面不加&符號(hào))
執(zhí)行了上述命令后,會(huì)提示叫你輸入密碼,輸入密碼后,該命令還在前臺(tái)運(yùn)行,但是我們的目的是后天運(yùn)行該命令,這個(gè)時(shí)候你可以按下 Ctrl+Z,然后在輸入 bg 就可以達(dá)到第一個(gè)命令的效果,讓該命令后臺(tái)運(yùn)行,同時(shí)也可以讓密碼隱蔽輸入。
命令后臺(tái)執(zhí)行的結(jié)果會(huì)在命令執(zhí)行的當(dāng)前目錄下留下一個(gè) nohup.out 文件,查看這個(gè)文件就知道命令有沒有執(zhí)行報(bào)錯(cuò)等信息。
三、找出當(dāng)前系統(tǒng)內(nèi)存使用量較高的進(jìn)程
在很多運(yùn)維的時(shí)候,我們發(fā)現(xiàn)內(nèi)存耗用較為嚴(yán)重,那么怎么樣才能找出內(nèi)存消耗的進(jìn)程排序呢?
命令:
ps-aux|sort-rnk4|head-20

輸出的第 4 列就是內(nèi)存的耗用百分比。最后一列就是相對(duì)應(yīng)的進(jìn)程。
四、找出當(dāng)前系統(tǒng) CPU 使用量較高的進(jìn)程
在很多運(yùn)維的時(shí)候,我們發(fā)現(xiàn) CPU 耗用較為嚴(yán)重,那么怎么樣才能找出 CPU 消耗的進(jìn)程排序呢?
命令:
ps-aux|sort-rnk3|head-20

輸出的第 3 列為 CPU 的耗用百分比,最后一列就是對(duì)應(yīng)的進(jìn)程。
我想大家應(yīng)該也發(fā)現(xiàn)了,sort 命令后的 3、4 其實(shí)就是代表著第 3 列進(jìn)行排序、第 4 列進(jìn)行排序。
五、同時(shí)查看多個(gè)日志或數(shù)據(jù)文件
在日常工作中,我們查看日志文件的方式可能是使用 tail 命令在一個(gè)個(gè)的終端查看日志文件,一個(gè)終端就看一個(gè)日志文件。包括我在內(nèi)也是,但是有時(shí)候也會(huì)覺得這種方式略顯麻煩,其實(shí)有個(gè)工具叫做 multitail 可以在同一個(gè)終端同時(shí)查看多個(gè)日志文件。
首先安裝 multitail:
wgetftp://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-ylocalinstallmultitail-5.2.9-1.el6.rf.x86_64.rpm
multitail 工具支持文本的高亮顯示,內(nèi)容過濾以及更多你可能需要的功能。
如下就來(lái)一個(gè)有用的例子:
此時(shí)我們既想查看 secure 的日志指定過濾關(guān)鍵字輸出,又想查看實(shí)時(shí)的網(wǎng)絡(luò) ping 情況:
命令如下:
multitail-e"Accepted"/var/log/secure-l"pingbaidu.com"

不是很方便?如果平時(shí)我們想查看兩個(gè)日志之間的關(guān)聯(lián)性,可以觀察日志輸出是否有觸發(fā)等。如果分開兩個(gè)終端可能來(lái)回進(jìn)行切換有點(diǎn)浪費(fèi)時(shí)間,這個(gè) multitail 工具查看未嘗不是一個(gè)好方法。
六、持續(xù) ping 并將結(jié)果記錄到日志
很多時(shí)候,運(yùn)維總會(huì)聽到一個(gè)聲音,是不是網(wǎng)絡(luò)出什么問題了啊,導(dǎo)致業(yè)務(wù)出現(xiàn)怪異的癥狀,肯定是服務(wù)器網(wǎng)絡(luò)出問題了。這個(gè)就是俗稱的背鍋,業(yè)務(wù)出了問題,第一時(shí)間相關(guān)人員找不到原因很多情況下就會(huì)把問題歸結(jié)于服務(wù)器網(wǎng)絡(luò)有問題。
這個(gè)時(shí)候你去 ping 幾個(gè)包把結(jié)果丟出來(lái),人家會(huì)反駁你,剛剛那段時(shí)間有問題而已,現(xiàn)在業(yè)務(wù)都恢復(fù)正常了,網(wǎng)絡(luò)肯定正常啊,這個(gè)時(shí)候估計(jì)你要?dú)馑馈?/p>
你要是再拿出 zabbix 等網(wǎng)絡(luò)監(jiān)控的數(shù)據(jù),這個(gè)時(shí)候就不太妥當(dāng)了,zabbix 的采集數(shù)據(jù)間隔你不可能設(shè)置成 1 秒鐘 1 次吧?小編就遇到過這樣的問題,結(jié)果我通過以下的命令進(jìn)行了 ping 監(jiān)控采集。
然后再有人讓我背鍋的時(shí)候,我把出問題時(shí)間段的 ping 數(shù)據(jù)庫(kù)截取出來(lái),大家公開談,結(jié)果那次被我叼杠回去了,以后他們都不敢輕易甩鍋了,這個(gè)感覺好啊。
命令:
pingapi.jpush.cn|awk'{
print$0""
strftime(“%Y-%m-%d%H:%M:%S”,systime())
}'>>/tmp/jiguang.log&
輸出的結(jié)果會(huì)記錄到 / tmp/jiguang.log 中,每秒鐘新增一條 ping 記錄,如下:

七、查看 tcp 連接狀態(tài)
指定查看 80 端口的 tcp 連接狀態(tài),有利于分析連接是否釋放,或者攻擊時(shí)進(jìn)行狀態(tài)分析。
命令:
netstat-nat|awk
'{print$6}'|sort|
uniq-c|sort-rn

八、查找 80 端口請(qǐng)求數(shù)最高的前 20 個(gè) IP
有時(shí)候業(yè)務(wù)的請(qǐng)求量突然上去了,那么這個(gè)時(shí)候我們可以查看下請(qǐng)求來(lái)源 IP 情況,如果是集中在少數(shù) IP 上的,那么可能是存在攻擊行為,我們使用防火墻就可以進(jìn)行封禁。命令如下:
netstat-anlp|grep80|greptcp|awk'{print$5}'|awk-F:'{print$1}'|sort|uniq-c|sort-nr|head-n20

九、ssh 實(shí)現(xiàn)端口轉(zhuǎn)發(fā)
可能很多的朋友都聽說過 ssh 是 linux 下的遠(yuǎn)程登錄安全協(xié)議,就是通俗的遠(yuǎn)程登錄管理服務(wù)器。但是應(yīng)該很少朋友會(huì)聽說過 ssh 還可以做端口轉(zhuǎn)發(fā)。其實(shí) ssh 用來(lái)做端口轉(zhuǎn)發(fā)的功能還是很強(qiáng)大的,下面就來(lái)做示范。
實(shí)例背景:我們公司是有堡壘機(jī)的,任何操作均需要在堡壘機(jī)上進(jìn)行,有寫開發(fā)人員需要訪問 ELasticSearch 的 head 面板查看集群狀態(tài),但是我們并不想將 ElasticSearch 的 9200 端口映射出去,依然想通過堡壘機(jī)進(jìn)行訪問。所以才會(huì)將通往堡壘機(jī)(192.168.1.15)的請(qǐng)求轉(zhuǎn)發(fā)到服務(wù)器 ElasticSearch(192.168.1.19)的 9200 上。
例子:
將發(fā)往本機(jī)(192.168.1.15)的 9200 端口訪問轉(zhuǎn)發(fā)到 192.168.1.19 的 9200 端口
ssh-p22-C-f-N-g-L
92009200
[email protected]
記住:前提是先進(jìn)行秘鑰傳輸。
命令執(zhí)行完后,訪問 192.168.1.15:9200 端口則真實(shí)是訪問 192.168.1.19:9200 端口。
審核編輯 :李倩
-
Linux
+關(guān)注
關(guān)注
87文章
11508瀏覽量
213544 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3118瀏覽量
75204 -
運(yùn)維
+關(guān)注
關(guān)注
1文章
270瀏覽量
8152
原文標(biāo)題:高級(jí)運(yùn)維與初級(jí)運(yùn)維的區(qū)別在于,他們懂得這些linux高效命令!
文章出處:【微信號(hào):浩道linux,微信公眾號(hào):浩道linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論