高效的Linux系統(tǒng)管理員需要具備的技巧
今天小編要跟大家分享的文章是關(guān)于高效的Linux系統(tǒng)管理員需要具備的技巧。好的系統(tǒng)管理員區(qū)分在效率上。如果一位高效的系統(tǒng)管理員能在10分鐘內(nèi)完成一件他人需要2個小時才能完成的任務(wù),那么他應(yīng)該受到獎勵(得到更多報酬),因為他為公司節(jié)約了時間,而時間就是金錢。以下這些技巧可以節(jié)約時間 —— 即使沒有因為高效而得到更多的報酬,但至少可以有更多的自由支配時間。對于Linux入門的小伙伴一定要看看這篇文章,下面我們就來看一看高效的Linux系統(tǒng)管理員需要具備的技巧。
技巧1:卸載無響應(yīng)的DVD驅(qū)動器
網(wǎng)絡(luò)新手的經(jīng)歷:按下服務(wù)器(運行基于Redmond的操作系統(tǒng))DVD驅(qū)動器上的Eject按鈕時,它會立即彈出。他然后抱怨說,在大多數(shù)企業(yè)Linux服務(wù)器中,如果在那個目錄中運行某個進程,彈出就不會發(fā)生。作為一名長期的Linux管理員,我會重啟機器。如果我不清楚正在運行什么,以及為何不釋放DVD驅(qū)動器,我則會彈出磁盤。但這樣效率很低。
下面介紹如何找到保持DVD驅(qū)動器的進程,并輕松彈出DVD驅(qū)動器:首先進行模擬。在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
進程正在運行,無法彈出磁盤其實是我們的錯誤。現(xià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)機器上執(zhí)行這個操作時。
放心吧,在進行此操作時,機器不會重啟。繼續(xù)操作:
# reset
現(xiàn)在屏幕恢復(fù)正常了。這比關(guān)閉窗口后再次登陸好多了,特別是必須經(jīng)過5臺機器和SSH才能到達這臺機器時。
技巧3:屏幕協(xié)作
來自產(chǎn)品工程的高級維護用戶David打電話說:“為什么我不能在您部署的這些新機器上編譯supercode.c”。
您會問他:“您運行的是什么機器?”
David答道:“Posh”。(這個虛夠的公司將它的5臺生產(chǎn)服務(wù)器以紀念Spice Girls的方式命名)。這下您可以大顯身手了,另一臺機器由David操作:
# su - david
轉(zhuǎn)到posh:
# ssh posh
到達之后,運行以下代碼:
# screen -S foo
然后呼叫David:“David,在終端運行命令# screen -x foo”。
這時您和David的會話在Linux shell中聯(lián)接在一起。您可以輸入,他也可以輸入,但彼此可以看到對方所做的事情。這避免了進入其他層次,而且雙方都有相同的控制權(quán)。這樣做的好處是David可以觀察到您的故障診斷技巧,并能準確了解如何解決問題。
最后大家都能看到問題所在:David的編譯腳本對一個不在此新服務(wù)器上的舊目錄進行了硬編碼。將它裝載后再次編譯即可解決問題,然后David繼續(xù)工作。您則可以繼續(xù)之前的娛樂活動。
關(guān)于此技巧需要注意的一點是,雙方需要以同一用戶登錄。screen命令還可以:實現(xiàn)多個窗口和拆分屏幕。請閱讀手冊頁獲取更多相關(guān)信息。
對于screen會話,我還有最后一個技巧。要從中分離并讓它打開,請輸入
Ctrl-A D
(即按住Ctrl鍵并點擊A鍵。然后按D鍵)。然后通過再次運行screen -x foo命令可以重新拼接起來。
技巧4:找回根密碼
如果忘記根密碼,就必須重新安裝整臺機器。更慘的是,許多人都會這樣做。但是啟動機器并更改密碼卻十分簡單。這并非在所有情況下都適用(比如設(shè)置了一個GRUB密碼,但也忘記了),但這里介紹一個Cent OS Linux示例,說明一般情況下的操作。
首先重啟系統(tǒng)。重啟時會跳出如圖1所示的GRUB屏幕。移動箭頭鍵,這樣可以保留在此屏幕上,而不是進入正常啟動。
圖1.重啟后的GRUB屏幕
然后,使用箭頭鍵選擇要啟動的內(nèi)核,并輸入E編輯內(nèi)核行。然后便可看到如圖2所示的屏幕:
圖2:準備編輯內(nèi)核行
再次使用箭頭鍵突出顯示以kernel開始的行,按E編輯內(nèi)核參數(shù)。到達如圖3所示的屏幕時,在圖3中所示的參數(shù)后追加數(shù)字1即可:
圖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)在可以重啟了,機器將使用新密碼啟動。
技巧5:SSH后門
有很多次,我所在的站點需要某人的遠程支持,而他卻被公司防火強阻擋在外。很少有人意識到,如果能通過防火墻到達外部,那么也能輕松實現(xiàn)讓外部的信息進來。從本意講,這稱為 “在防火墻上砸一個洞”。我稱之為SSH后門。為了使用它,必須有一臺作為中介的連接到Internet的機器。在本例中,將這樣臺機器稱為blackbox.example.com。公司防火墻后面的機器稱為ginger。此技術(shù)支持的機器稱為tech。圖4解釋了設(shè)置過程。
圖4.在防火墻上砸一個洞
以下是操作步驟:
檢查什么是允許做的,但要確保您問對了人。大多數(shù)人都擔心您打開了防火墻,但他們不明白這是完全加密的。而且,必須破解外部機器才能進入公司內(nèi)部。不過,您可能屬于 “敢作敢為” 型的人物。自己進行判斷應(yīng)該選擇的方式,但不如意時不抱怨別人。
使用-R標記通過SSH從ginger連接到blackbox.example.com。假設(shè)您是ginger上的根用戶,tech需要根用戶ID來幫助使用系統(tǒng)。使用-R標記將blackbox上端口2222的說明轉(zhuǎn)發(fā)到ginger的端口22上。這就設(shè)置了SSH通道。注意,只有SSH通信可以進入ginger:您不會將ginger放在無保護的Internet上。可以使用以下語法實現(xiàn)此操作:
~# ssh -R 2222:localhost:22 thedude@blackbox.example.com
進入blackbox后,只需一直保持登錄狀態(tài)。我總是輸入以下命令:
thedude@blackbox:~$ while [ 1 ]; do date; sleep 300; done
使機器保持忙碌狀態(tài)。然后最小化窗口。
現(xiàn)在指示tech上的朋友使用SSH連接到blackbox,而不需要使用任何特殊的SSH標記。但必須把密碼給他們:
root@tech:~# ssh thedude@blackbox.example.com
tech位于blackbox上后,可以使用以下命令從SSH連接到ginger:
thedude@blackbox:~$: ssh -p 2222 root@localhost
Tech將提示輸入密碼。應(yīng)該輸入ginger的根密碼?,F(xiàn)在您和來自tech的支持可以一起工作并解決問題。甚至需要一起使用屏幕!(參見 技巧4)。
技巧6:通過SSH通道進行遠程VNC會話
VNC或虛擬網(wǎng)絡(luò)計算已經(jīng)存在很長時間了。通常,當遠程服務(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。對于這種情況,需要進行一些類似的操作,不過轉(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標記為-L,它不是將5999放到blackbox,而是從中獲取。到達blackbox后,需要保持此會話為打開狀態(tài)。現(xiàn)在即可在tech中使用VNC了!
在tech中,運行以下命令使VNC連接到ginger:
root@tech:~# vncviewer localhost:99
Tech現(xiàn)在將擁有一個直接到ginger的VNC會話。設(shè)置雖然有點麻煩,但比為修復(fù)存儲陣列而四處奔波強多了。不過多實踐幾次這就變得容易了。
對此技巧我還要補充一點:如果tech運行的是Windows?操作系統(tǒng),并且沒有命令行SSH客戶端,那么tech可以運行Putty。Putty可以設(shè)置為通過查找側(cè)欄中的選項來轉(zhuǎn)發(fā)SSH端口。如果端口是5902而不是本例中的5999,則可以輸入圖5中的內(nèi)容。
圖5. Putty可以轉(zhuǎn)發(fā)用作通道的SSH
如果進行了此設(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
這臺機器將用作服務(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。這仍然表示帶寬可以達到預(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個主機名(n001到n200)將由IP地址(192.168.99.1到192.168.99.200)來創(chuàng)建。手動填充這樣的文件有可能會創(chuàng)建重復(fù)的IP地址或主機名,因此這是使用內(nèi)置命令行消除用戶錯誤的好例子。請注意,這是在bash shell(大多數(shù)Linux發(fā)行版的默認值)內(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
這樣的命令行相當簡潔。(如果在其中放入正則表達式情況會更糟)。讓我們對它進行細分,詳細討論各部分。
首先從001循環(huán)到200。使用seq命令的-w選項在前面填充0。然后替換num變量,創(chuàng)建通過SSH連接的主機。有了目標主機后,向它發(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)存值進行排序。最后,使用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è)備可以進行檢查。在SSH會話中,在遠程服務(wù)器# cat /dev/vcs1上運行以下命令。這將顯示第一個控制臺中的內(nèi)容。也可以使用2、3等查看其他虛擬終端。如果某個用戶在遠程系統(tǒng)上輸入,您將看到他輸入的內(nèi)容。
在大多數(shù)數(shù)據(jù)場中,使用遠程終端服務(wù)器、KVM甚至Serial Over LAN是查看這類信息的最好方式;它也提供了帶外查看功能的一些好處。使用vcs設(shè)備能夠提供一種快速帶內(nèi)方法,這能節(jié)省去機房查看控制臺的時間。
技巧10:隨機系統(tǒng)信息收集
在 技巧8中,介紹了一個使用命令行獲取有關(guān)系統(tǒng)中總內(nèi)存信息的例子。在這個技巧中,我將介紹幾個其他方法,用于從需要進行驗證、故障診斷或給予遠程支持的系統(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)商,讓他們給我派送另一臺處理器。
我需要的另一條信息是磁盤信息??梢允褂胐f命令獲得。我總是添加-h標記,以便看到以十億字節(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
...
這比重啟機器并查看POST輸出有效得多。要檢查以太網(wǎng)適配器的驅(qū)動程序和固件版本,請運行ethtool:
# ethtool -i eth0
driver: e1000
version: 7.3.20-k2-NAPI
firmware-version: 0.3-0
結(jié)束語
可以從精通命令行的人那里學習很多技巧。最好的學習方式是:
1、與其他人一起工作。共享屏幕會話并觀察其他人是如何工作的 —— 您會發(fā)現(xiàn)新的做事方法??赡苄枰t虛一點,讓其他人引導(dǎo),不過通??梢詫W到很多東西。
2、閱讀手冊頁。認真閱讀手冊頁,即使是熟知的命令,也能獲得更深的見解。例如,您以前可能根本不知道可以使用awk進行網(wǎng)絡(luò)編程。
3、解決問題。作為系統(tǒng)管理員,總是要解決問題,不管是您還是其他人引起的問題。這就是經(jīng)驗,經(jīng)驗可以使您更優(yōu)秀、更高效。
最好的管理員比較悠閑,因為他們能找到完成任務(wù)的最快方法,并且能快速完成任務(wù),從而保持休閑的生活。
以上就是小編今天為大家分享的關(guān)于高效的Linux系統(tǒng)管理員需要具備的技巧的文章,希望本篇文章能夠?qū)φ趶氖翷inux系統(tǒng)管理工作的小伙伴們有所幫助,想要了解更多Linux相關(guān)知識記得關(guān)注馬哥教育官網(wǎng),最后祝愿小伙伴們工作順利!
(來源:ibm.com)
【免責聲明:本文圖片及文字信息均由小編轉(zhuǎn)載自網(wǎng)絡(luò),旨在分享提供閱讀,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系我們進行刪除?!?/p>