今天浩道跟大家分享linux硬核干貨,即高級運維工程師常用的一些高效linux命令!
一、實用的 xargs 命令
在平時的使用中,我認為 xargs 這個命令還是較為重要和方便的。我們可以通過使用這個命令,將命令輸出的結果作為參數傳遞給另一個命令。
比如說我們想找出某個路徑下以 .conf 結尾的文件,并將這些文件進行分類,那么普通的做法就是先將以 .conf 結尾的文件先找出來,然后輸出到一個文件中,接著 cat 這個文件,并使用 file 文件分類命令去對輸出的文件進行分類。
這個普通的方法還的確是略顯麻煩,那么這個時候 xargs 命令就派上用場了。
例 1:找出 / 目錄下以 .conf 結尾的文件,并進行文件分類
命令:
find/-name*.conf-typef
-print|xargsfile
輸出結果如下所示:
xargs 后面不僅僅可以加文件分類的命令,你還可以加其他的很多命令,比如說實在一點的 tar 命令,你可以使用 find 命令配合 tar 命令,將指定路徑的特殊文件使用 find 命令找出來,然后配合 tar 命令將找出的文件直接打包,命令如下:
find/-name*.conf-typef
-print|xargstarcjftest.tar.gz
二、命令或腳本后臺運行
有時候我們進行一些操作的時候,不希望我們的操作在終端會話斷了之后就跟著斷了,特別是一些數據庫導入導出操作,如果涉及到大數據量的操作,我們不可能保證我們的網絡在我們的操作期間不出問題,所以后臺運行腳本或者命令對我們來說是一大保障。
比如說我們想把數據庫的導出操作后臺運行,并且將命令的操作輸出記錄到文件,那么我們可以這么做:(反斜杠代表換行,可以忽略)
nohupmysqldump-uroot-pxxxxx
—all-databases>
./alldatabases.sql&(xxxxx是密碼)
當然如果你不想密碼明文,你還可以這么做:
nohupmysqldump-uroot-pxxxxx
—all-databases
>./alldatabases.sql(后面不加&符號)
執行了上述命令后,會提示叫你輸入密碼,輸入密碼后,該命令還在前臺運行,但是我們的目的是后天運行該命令,這個時候你可以按下 Ctrl+Z,然后在輸入 bg 就可以達到第一個命令的效果,讓該命令后臺運行,同時也可以讓密碼隱蔽輸入。
命令后臺執行的結果會在命令執行的當前目錄下留下一個 nohup.out 文件,查看這個文件就知道命令有沒有執行報錯等信息。
三、找出當前系統內存使用量較高的進程
在很多運維的時候,我們發現內存耗用較為嚴重,那么怎么樣才能找出內存消耗的進程排序呢?
命令:
ps-aux|sort-rnk4|head-20
輸出的第 4 列就是內存的耗用百分比。最后一列就是相對應的進程。
四、找出當前系統 CPU 使用量較高的進程
在很多運維的時候,我們發現 CPU 耗用較為嚴重,那么怎么樣才能找出 CPU 消耗的進程排序呢?
命令:
ps-aux|sort-rnk3|head-20
輸出的第 3 列為 CPU 的耗用百分比,最后一列就是對應的進程。
我想大家應該也發現了,sort 命令后的 3、4 其實就是代表著第 3 列進行排序、第 4 列進行排序。
五、同時查看多個日志或數據文件
在日常工作中,我們查看日志文件的方式可能是使用 tail 命令在一個個的終端查看日志文件,一個終端就看一個日志文件。包括我在內也是,但是有時候也會覺得這種方式略顯麻煩,其實有個工具叫做 multitail 可以在同一個終端同時查看多個日志文件。
首先安裝 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 工具支持文本的高亮顯示,內容過濾以及更多你可能需要的功能。
如下就來一個有用的例子:
此時我們既想查看 secure 的日志指定過濾關鍵字輸出,又想查看實時的網絡 ping 情況:
命令如下:
multitail-e"Accepted"/var/log/secure-l"pingbaidu.com"
不是很方便?如果平時我們想查看兩個日志之間的關聯性,可以觀察日志輸出是否有觸發等。如果分開兩個終端可能來回進行切換有點浪費時間,這個 multitail 工具查看未嘗不是一個好方法。
六、持續 ping 并將結果記錄到日志
很多時候,運維總會聽到一個聲音,是不是網絡出什么問題了啊,導致業務出現怪異的癥狀,肯定是服務器網絡出問題了。這個就是俗稱的背鍋,業務出了問題,第一時間相關人員找不到原因很多情況下就會把問題歸結于服務器網絡有問題。
這個時候你去 ping 幾個包把結果丟出來,人家會反駁你,剛剛那段時間有問題而已,現在業務都恢復正常了,網絡肯定正常啊,這個時候估計你要氣死。
你要是再拿出 zabbix 等網絡監控的數據,這個時候就不太妥當了,zabbix 的采集數據間隔你不可能設置成 1 秒鐘 1 次吧?小編就遇到過這樣的問題,結果我通過以下的命令進行了 ping 監控采集。
然后再有人讓我背鍋的時候,我把出問題時間段的 ping 數據庫截取出來,大家公開談,結果那次被我叼杠回去了,以后他們都不敢輕易甩鍋了,這個感覺好啊。
命令:
pingapi.jpush.cn|awk'{
print$0""
strftime(“%Y-%m-%d%H:%M:%S”,systime())
}'>>/tmp/jiguang.log&
輸出的結果會記錄到 / tmp/jiguang.log 中,每秒鐘新增一條 ping 記錄,如下:
七、查看 tcp 連接狀態
指定查看 80 端口的 tcp 連接狀態,有利于分析連接是否釋放,或者攻擊時進行狀態分析。
命令:
netstat-nat|awk
'{print$6}'|sort|
uniq-c|sort-rn
八、查找 80 端口請求數最高的前 20 個 IP
有時候業務的請求量突然上去了,那么這個時候我們可以查看下請求來源 IP 情況,如果是集中在少數 IP 上的,那么可能是存在攻擊行為,我們使用防火墻就可以進行封禁。命令如下:
netstat-anlp|grep80|greptcp|awk'{print$5}'|awk-F:'{print$1}'|sort|uniq-c|sort-nr|head-n20
九、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-p22-C-f-N-g-L
92009200
ihavecar@192.168.1.19
記?。呵疤崾窍冗M行秘鑰傳輸。
命令執行完后,訪問 192.168.1.15:9200 端口則真實是訪問 192.168.1.19:9200 端口。
審核編輯 :李倩
-
Linux
+關注
關注
87文章
11312瀏覽量
209695 -
內存
+關注
關注
8文章
3028瀏覽量
74097 -
運維
+關注
關注
1文章
259瀏覽量
7582
原文標題:高級運維與初級運維的區別在于,他們懂得這些linux高效命令!
文章出處:【微信號:浩道linux,微信公眾號:浩道linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論