溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux管理員都會的關(guān)鍵技巧有哪些

發(fā)布時間:2021-11-23 16:01:20 來源:億速云 閱讀:140 作者:iii 欄目:系統(tǒng)運維

這篇文章主要介紹“Linux管理員都會的關(guān)鍵技巧有哪些”,在日常操作中,相信很多人在Linux管理員都會的關(guān)鍵技巧有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Linux管理員都會的關(guān)鍵技巧有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

技巧 1:卸載無響應(yīng)的 DVD 驅(qū)動器

網(wǎng)絡(luò)新手的經(jīng)歷:按下服務(wù)器(運行基于 Redmond 的操作系統(tǒng))DVD 驅(qū)動器上的 Eject 按鈕時,它會立即彈出。他然后抱怨說,在大多數(shù)企業(yè)  Linux 服務(wù)器中,如果在那個目錄中運行某個進(jìn)程,彈出就不會發(fā)生。作為一名長期的 Linux 管理員,我會重啟機(jī)器。如果我不清楚正在運行什么,以及為何不釋放  DVD 驅(qū)動器,我則會彈出磁盤。但這樣效率很低。

下面介紹如何找到保持 DVD 驅(qū)動器的進(jìn)程,并輕松彈出 DVD 驅(qū)動器:首先進(jìn)行模擬。在 DVD 驅(qū)動器中放入磁盤,打開一個終端,裝載 DVD  驅(qū)動器:

# mount /media/cdrom  # cd /media/cdrom  # while [ 1 ]; do echo "All your drives are belong to us!"; sleep 30; done

現(xiàn)在打開第二個終端并試著彈出 DVD 驅(qū)動器:

# eject

將得到以下消息:

umount: /media/cdrom: device is busy

在釋放該設(shè)備之前,讓我們找出誰在使用它

# fuser /media/cdrom

進(jìn)程正在運行,無法彈出磁盤其實是我們的錯誤。現(xiàn)在,如果您是根用戶,可以隨意終止進(jìn)程:

# fuser -k /media/cdrom

現(xiàn)在終于可以卸載驅(qū)動器了:

# eject

fuser 很正常。

技巧 2:恢復(fù)出現(xiàn)問題的屏幕

嘗試以下操作:

# cat /bin/cat

注意!終端就想垃圾一樣。輸入的所有內(nèi)容非常零亂。那么該怎么做呢?

輸入 reset。但是,輸入 reset 與 輸入 reboot 或 shutdown 太接近了。嚇得手心冒汗了吧 —  特別是在生產(chǎn)機(jī)器上執(zhí)行這個操作時。

放心吧,在進(jìn)行此操作時,機(jī)器不會重啟。繼續(xù)操作:

# reset

現(xiàn)在屏幕恢復(fù)正常了。這比關(guān)閉窗口后再次登陸好多了,特別是必須經(jīng)過 5 臺機(jī)器和 SSH 才能到達(dá)這臺機(jī)器時。

技巧 3:屏幕協(xié)作

來自產(chǎn)品工程的高級維護(hù)用戶 David 打電話說:“為什么我不能在您部署的這些新機(jī)器上編譯 supercode.c”。

您會問他:“您運行的是什么機(jī)器?”

David 答道:“ Posh”。(這個虛構(gòu)的公司將它的 5 臺生產(chǎn)服務(wù)器以紀(jì)念 Spice Girls 的方式命名)。這下您可以大顯身手了,另一臺機(jī)器由  David 操作:

# su - david

轉(zhuǎn)到 posh:

# ssh posh

到達(dá)之后,運行以下代碼:

# screen -S foo

然后呼叫 David:“David,在終端運行命令 # screen -x foo”。

這時您和 David 的會話在 Linux shell  中聯(lián)接在一起。您可以輸入,他也可以輸入,但彼此可以看到對方所做的事情。這避免了進(jìn)入其他層次,而且雙方都有相同的控制權(quán)。這樣做的好處是 David  可以觀察到您的故障診斷技巧,并能準(zhǔn)確了解如何解決問題。

最后大家都能看到問題所在:David 的編譯腳本對一個不在此新服務(wù)器上的舊目錄進(jìn)行了硬編碼。將它裝載后再次編譯即可解決問題,然后 David  繼續(xù)工作。您則可以繼續(xù)之前的娛樂活動。

關(guān)于此技巧需要注意的一點是,雙方需要以同一用戶登錄。screen 命令還可以:實現(xiàn)多個窗口和拆分屏幕。請閱讀手冊頁獲取更多相關(guān)信息。

對于 screen 會話,我還有最后一個技巧。要從中分離并讓它打開,請輸入

Ctrl-A D

(即按住 Ctrl 鍵并點擊 A 鍵。然后按 D 鍵)。然后通過再次運行 screen -x foo 命令可以重新拼接起來。

技巧 4:找回根密碼

如果忘記根密碼,就必須重新安裝整臺機(jī)器。更慘的是,許多人都會這樣做。但是啟動機(jī)器并更改密碼卻十分簡單。這并非在所有情況下都適用(比如設(shè)置了一個 GRUB  密碼,但也忘記了),但這里介紹一個 Cent OS Linux 示例,說明一般情況下的操作。

首先重啟系統(tǒng)。重啟時會跳出如圖 1 所示的 GRUB 屏幕。移動箭頭鍵,這樣可以保留在此屏幕上,而不是進(jìn)入正常啟動。

Linux管理員都會的關(guān)鍵技巧有哪些

圖 1. 重啟后的 GRUB 屏幕

然后,使用箭頭鍵選擇要啟動的內(nèi)核,并輸入 E 編輯內(nèi)核行。然后便可看到如圖 2 所示的屏幕:

Linux管理員都會的關(guān)鍵技巧有哪些

圖 2:準(zhǔn)備編輯內(nèi)核行

再次使用箭頭鍵突出顯示以 kernel 開始的行,按 E 編輯內(nèi)核參數(shù)。到達(dá)如圖 3 所示的屏幕時,在圖 3 中所示的參數(shù)后追加數(shù)字 1 即可:

Linux管理員都會的關(guān)鍵技巧有哪些

圖 3. 在參數(shù)后追加數(shù)字 1

然后按 Enter 和 B,內(nèi)核會啟動到單用戶模式。然后運行 passwd 命令,更改用戶根密碼:

sh-3.00# passwd  New UNIX password:  Retype new UNIX password:  passwd: all authentication tokens updated successfully

現(xiàn)在可以重啟了,機(jī)器將使用新密碼啟動。

技巧 5:SSH 后門

有很多次,我所在的站點需要某人的遠(yuǎn)程支持,而他卻被公司防火強(qiáng)阻擋在外。很少有人意識到,如果能通過防火墻到達(dá)外部,那么也能輕松實現(xiàn)讓外部的信息進(jìn)來。從本意講,這稱為  “在防火墻上砸一個洞”。我稱之為 SSH 后門。為了使用它,必須有一臺作為中介的連接到 Internet 的機(jī)器。在本例中,將這樣臺機(jī)器稱為  blackbox.example.com。公司防火墻后面的機(jī)器稱為 ginger。此技術(shù)支持的機(jī)器稱為 tech。圖 4 解釋了設(shè)置過程。 

Linux管理員都會的關(guān)鍵技巧有哪些

圖 4. 在防火墻上砸一個洞

以下是操作步驟:

檢查什么是允許做的,但要確保您問對了人。大多數(shù)人都擔(dān)心您打開了防火墻,但他們不明白這是完全加密的。而且,必須破解外部機(jī)器才能進(jìn)入公司內(nèi)部。不過,您可能屬于  “敢作敢為” 型的人物。自己進(jìn)行判斷應(yīng)該選擇的方式,但不如意時不抱怨別人。

使用 -R 標(biāo)記通過 SSH 從 ginger 連接到 blackbox.example.com。假設(shè)您是 ginger 上的根用戶,tech 需要根用戶  ID 來幫助使用系統(tǒng)。使用 -R 標(biāo)記將 blackbox 上端口 2222 的說明轉(zhuǎn)發(fā)到 ginger 的端口 22 上。這就設(shè)置了 SSH 通道。注意,只有  SSH 通信可以進(jìn)入 ginger:您不會將 ginger 放在無保護(hù)的 Internet 上??梢允褂靡韵抡Z法實現(xiàn)此操作:

~# ssh -R 2222:localhost:22 thedude@blackbox.example.com

進(jìn)入 blackbox 后,只需一直保持登錄狀態(tài)。我總是輸入以下命令:

thedude@blackbox:~$ while [ 1 ]; do date; sleep 300; done

使機(jī)器保持忙碌狀態(tài)。然后最小化窗口。

現(xiàn)在指示 tech 上的朋友使用 SSH 連接到 blackbox,而不需要使用任何特殊的 SSH 標(biāo)記。但必須把密碼給他們:

root@tech:~# ssh thedude@blackbox.example.com  tech 位于 blackbox 上后,可以使用以下命令從 SSH 連接到 ginger:  thedude@blackbox:~$: ssh -p 2222 root@localhost

Tech 將提示輸入密碼。應(yīng)該輸入 ginger 的根密碼。現(xiàn)在您和來自 tech 的支持可以一起工作并解決問題。甚至需要一起使用屏幕!(參見 技巧  4)。

技巧 6:通過 SSH 通道進(jìn)行遠(yuǎn)程 VNC 會話

VNC 或虛擬網(wǎng)絡(luò)計算已經(jīng)存在很長時間了。通常,當(dāng)遠(yuǎn)程服務(wù)器上的某類圖形程序只能在此服務(wù)器上使用時,我才需要 VNC。

例如,假設(shè)在 技巧 5 中,ginger 是一臺存儲服務(wù)器。許多設(shè)備都使用 GUI 程序來管理存儲控制器。這些 GUI  管理工具通常需要通過一個網(wǎng)絡(luò)直接連接到存儲服務(wù)器,而這個網(wǎng)絡(luò)有時保存在專用的子網(wǎng)絡(luò)中。因此,只能通過 ginger 訪問這個 GUI。

可以嘗試使用 -X 選項通過 SSH 連接到 ginger 并啟動它,但這對帶寬要求很高,您需要忍受等待的痛苦。VNC  是一個網(wǎng)絡(luò)友好的工具,幾乎適用于所有操作系統(tǒng)。

假設(shè)設(shè)置與技巧 5 中的一樣,但希望 tech 能訪問 VNC 而不是 SSH。對于這種情況,需要進(jìn)行一些類似的操作,不過轉(zhuǎn)發(fā)的是 VNC  端口。執(zhí)行以下操作步驟:

在 ginger 上啟動一個 VNC 服務(wù)器會話。運行以下命令:

root@ginger:~# vncserver -geometry 1024x768 -depth 24 :99

這些選項指示啟動服務(wù)器,分辨率為 1024×768,像素深度為每像素 24 位。如果使用較慢的連接設(shè)置,8 也許是更好的選項。使用 :99 指定可訪問  VNC 服務(wù)器的端口。VNC 協(xié)議在 5900 處啟動,因此 :99 表示服務(wù)器可從端口 5999 訪問。

啟動該會話時,要求您指定密碼。用戶 ID 與啟動 VNC 服務(wù)器時的用戶相同(本例中就是根用戶)。

從 ginger 連接到 blackbox.example.com 的 SSH 將 blackbox 上的端口 5999 轉(zhuǎn)發(fā)到  ginger。這通過運行以下命令在 ginger 中完成:

root@ginger:~# ssh -R 5999:localhost:5999 thedude@blackbox.example.com

運行此命令后,需要將此 SSH 會話保持為打開狀態(tài),以便保留轉(zhuǎn)發(fā)到 ginger 的端口。此時,如果在 blackbox 上,那么運行以下命令即可訪問  ginger 上的 VNC 會話:

thedude@blackbox:~$ vncviewer localhost:99

這將通過 SSH 將端口轉(zhuǎn)發(fā)給 ginger,但我們希望通過 tech 讓 VNC 訪問 ginger。為此,需要另一個通道。在 tech  中,打開一個通道,通過 SHH 將端口 5999 轉(zhuǎn)發(fā)到 blackbox 上的端口 5999。這通過運行以下命令完成:

root@tech:~# ssh -L 5999:localhost:5999 thedude@blackbox.example.com

這次使用的 SSH 標(biāo)記為 -L,它不是將 5999 放到 blackbox,而是從中獲取。到達(dá) blackbox  后,需要保持此會話為打開狀態(tài)?,F(xiàn)在即可在 tech 中使用 VNC 了!

在 tech 中,運行以下命令使 VNC 連接到 ginger:

root@tech:~# vncviewer localhost:99

Tech 現(xiàn)在將擁有一個直接到 ginger 的 VNC  會話。設(shè)置雖然有點麻煩,但比為修復(fù)存儲陣列而四處奔波強(qiáng)多了。不過多實踐幾次這就變得容易了。

對此技巧我還要補(bǔ)充一點:如果 tech 運行的是 Windows® 操作系統(tǒng),并且沒有命令行 SSH 客戶端,那么 tech 可以運行  Putty。Putty 可以設(shè)置為通過查找側(cè)欄中的選項來轉(zhuǎn)發(fā) SSH 端口。如果端口是 5902 而不是本例中的 5999,則可以輸入圖 5 中的內(nèi)容。 

Linux管理員都會的關(guān)鍵技巧有哪些

圖 5. Putty 可以轉(zhuǎn)發(fā)用作通道的 SSH

如果進(jìn)行了此設(shè)置,那么 tech 就可以使用 VNC 連接到 localhost:2,如同 tech 正在 Linux 操作系統(tǒng)上運行一樣。

技巧 7:檢查帶寬

設(shè)想:公司 A 有一個名為 ginger 的存儲服務(wù)器,并通過名為 beckham 的客戶端節(jié)點裝載 NFS。公司 A 確定他們需要從 ginger  得到更多的帶寬,因為有大量的節(jié)點需要 NFS 裝載 ginger 的共享文件系統(tǒng)。

實現(xiàn)此操作的最常用和最便宜的方式是將兩個吉比特以太網(wǎng) NIC 組合在一起。這是最便宜的,因為您通常會有一個額外的可用 NIC 和一個額外的端口。

所以采取此這個方法。不過現(xiàn)在的問題是:到底需要多少帶寬?

吉比特以太網(wǎng)理論上的限制是 128MBit/s。這個數(shù)字從何而來?看看這些計算:

1Gb = 1024Mb;1024Mb/8 = 128MB;”b” = “bits,”、”B” = “bytes”

但實際看到的是什么呢,有什么好的測量方法呢?我推薦一個工具 iperf??梢园凑找韵路椒ǐ@得 iperf:

# wget http://dast.nlanr.net/Projects/Iperf2.0/iperf-2.0.2.tar.gz

需要在 ginger 和 beckham 均可見的共享文件系統(tǒng)上安裝此工具,或者在兩個節(jié)點上編譯并安裝。我將在兩個節(jié)點均可見的 bob  用戶的主目錄中編譯它:

tar zxvf iperf*gz  cd iperf-2.0.2  ./configure -prefix=/home/bob/perf  make  make install

在 ginger 上,運行:

# /home/bob/perf/bin/iperf -s -f M

這臺機(jī)器將用作服務(wù)器并以 MBit/s 為單位輸出執(zhí)行速度。

在 beckham 節(jié)點上,運行:

# /home/bob/perf/bin/iperf -c ginger -P 4 -f M -w 256k -t 60

兩個屏幕上的結(jié)果都指示了速度是多少。在使用吉比特適配器的普通服務(wù)器上,可能會看到速度約為 112MBit/s。這是 TCP  堆棧和物理電纜中的常用帶寬。通過以端到端的方式連接兩臺服務(wù)器,每臺服務(wù)器使用兩個聯(lián)結(jié)的以太網(wǎng)卡,我獲得了約 220MBit/s 的帶寬。

事實上,在聯(lián)結(jié)的網(wǎng)絡(luò)上看到的 NFS 約為 150-160MBit/s。這仍然表示帶寬可以達(dá)到預(yù)期效果。如果看到更小的值,則應(yīng)該檢查是否有問題。

我最近碰到一種情況,即通過連接驅(qū)動程序連接兩個使用了不同驅(qū)動程序的 NIC。這導(dǎo)致性能非常低,帶寬約為  20MBit/s,比不連接以太網(wǎng)卡時的帶寬還小!

技巧 8:命令行腳本和實用程序

Linux 系統(tǒng)管理員通過使用權(quán)威的命令行腳本會變得更高效。這包括巧妙使用循環(huán)和知道如何使用 awk、grep 和 sed  等的實用程序解析數(shù)據(jù)。通常這可以減少擊鍵次數(shù),降低用戶出錯率。

例如,假設(shè)需要為即將安裝的 Linux 集群生成一個新的 /etc/hosts 文件。一般的做法是在 vi 或文本編輯器中添加 IP  地址。不過,可以通過使用現(xiàn)有 /etc/hosts 文件并將以下內(nèi)容追加到此文件來實現(xiàn)。在命令行上運行:

# P=1; for i in $(seq -w 200); do echo "192.168.99.$P n$i"; P=$(expr $P + 1);  done >>/etc/hosts

200 個主機(jī)名(n001 到 n200)將由 IP 地址(192.168.99.1 到  192.168.99.200)來創(chuàng)建。手動填充這樣的文件有可能會創(chuàng)建重復(fù)的 IP 地址或主機(jī)名,因此這是使用內(nèi)置命令行消除用戶錯誤的好例子。請注意,這是在  bash shell(大多數(shù) Linux 發(fā)行版的默認(rèn)值)內(nèi)完成的。

再舉一個例子,假設(shè)要檢查 Linux 集群中的各個計算節(jié)點中的內(nèi)存大小是否一樣。通常,擁有一個發(fā)行版或類似的 shell 是最好的。但是為了演示,以下使用  SSH。假設(shè) SSH 設(shè)置為不使用密碼驗證。然后運行:

# for num in $(seq -w 200); do ssh n$num free -tm | grep Mem | awk '{print $2}';  done | sort | uniq

這樣的命令行相當(dāng)簡潔。(如果在其中放入正則表達(dá)式情況會更糟)。讓我們對它進(jìn)行細(xì)分,詳細(xì)討論各部分。

首先從 001 循環(huán)到 200。使用 seq 命令的 -w 選項在前面填充 0。然后替換 num 變量,創(chuàng)建通過 SSH  連接的主機(jī)。有了目標(biāo)主機(jī)后,向它發(fā)出命令。本例中是:

free -m | grep Mem | awk '{print $2}'

1、這個命令的意思是:使用 free 命令獲取以兆字節(jié)為單位的內(nèi)存大小。

2、獲取這個命令的結(jié)果,并使用 grep 獲取包含字符串 Mem 的行。

3、獲取那一行并使用 awk 輸出第二個字段,它是節(jié)點中的總內(nèi)存,在每個節(jié)點上執(zhí)行這個操作。

在每個節(jié)點上執(zhí)行命令后,200 個節(jié)點的整個輸出就傳送(|d)到 sort 命令,以對所有內(nèi)存值進(jìn)行排序。最后,使用 uniq  命令消除重復(fù)項。這個命令會導(dǎo)致以下情況中的一種:

1、如果所有節(jié)點(n001 到 n200)擁有相同的內(nèi)存大小,則只顯示一個數(shù)字。這個數(shù)字就是每個操作系統(tǒng)看到的內(nèi)存大小。

2、如果節(jié)點內(nèi)存大小不同,將會看到幾個內(nèi)存大小的值。

3、最后,如果某個節(jié)點上的 SSH 出現(xiàn)故障,則會看到一些錯誤消息。

這個命令并不是完美無缺的。如果發(fā)現(xiàn)與預(yù)期不同的內(nèi)存值,您就不知道是哪一個節(jié)點出了問題,或者有多少個節(jié)點。為此需要發(fā)出另一個命令。

這個技巧提供了一種查看某些內(nèi)容的快速方式,而且如果發(fā)生錯誤,您可以立刻知道。其價值在于快速檢查。

技巧 9:控制臺偵察

有些軟件會向控制臺輸出錯誤消息,而控制臺不一定會顯示在 SHH 會話中。使用 vcs 設(shè)備可以進(jìn)行檢查。在 SSH 會話中,在遠(yuǎn)程服務(wù)器 # cat  /dev/vcs1 上運行以下命令。這將顯示第一個控制臺中的內(nèi)容。也可以使用 2、3  等查看其他虛擬終端。如果某個用戶在遠(yuǎn)程系統(tǒng)上輸入,您將看到他輸入的內(nèi)容。

在大多數(shù)數(shù)據(jù)場中,使用遠(yuǎn)程終端服務(wù)器、KVM 甚至 Serial Over LAN 是查看這類信息的最好方式;它也提供了帶外查看功能的一些好處。使用  vcs 設(shè)備能夠提供一種快速帶內(nèi)方法,這能節(jié)省去機(jī)房查看控制臺的時間。

技巧 10:隨機(jī)系統(tǒng)信息收集

在 技巧 8  中,介紹了一個使用命令行獲取有關(guān)系統(tǒng)中總內(nèi)存信息的例子。在這個技巧中,我將介紹幾個其他方法,用于從需要進(jìn)行驗證、故障診斷或給予遠(yuǎn)程支持的系統(tǒng)收集重要信息。

首先,收集關(guān)于處理器的信息。通過以下命令很容易實現(xiàn):

# cat /proc/cpuinfo

這個命令給出關(guān)于處理器的速度、數(shù)量和型號的信息。在許多情況下使用 grep  可以得到需要的值。我經(jīng)常做的檢查是確定系統(tǒng)中處理器的數(shù)量。因此,如果我買了一臺帶雙核處理器的四核服務(wù)器,我可以運行以下命令:

# cat /proc/cpuinfo | grep processor | wc -l

然后我看到值應(yīng)該是 8。如果不是,我會打電話給供應(yīng)商,讓他們給我派送另一臺處理器。

我需要的另一條信息是磁盤信息??梢允褂?df 命令獲得。我總是添加 -h 標(biāo)記,以便看到以十億字節(jié)或兆字節(jié)為單位的輸出。# df -h  還會顯示磁盤的分區(qū)情況。

列表最后是查看系統(tǒng)固件的方式 —— 一個獲取 BIOS 級別和 NIC 上的固件信息的方法。

要檢查 BIOS 版本,可以運行 dmidecode 命令。遺憾的是,不能輕易使用 grep 獲取信息,所以這不是一個很有效的方法。對于我的 Lenovo  T61 laptop,輸出如下:

#dmidecode | less  ...  BIOS Information  Vendor: LENOVO  Version: 7LET52WW (1.22 )  Release Date: 08/27/2007  ...

這比重啟機(jī)器并查看 POST 輸出有效得多。要檢查以太網(wǎng)適配器的驅(qū)動程序和固件版本,請運行 ethtool:

# ethtool -i eth0  driver: e1000  version: 7.3.20-k2-NAPI  firmware-version: 0.3-0

到此,關(guān)于“Linux管理員都會的關(guān)鍵技巧有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI