怎么提高Linux管理效率
怎么提高Linux管理效率
管理員想要提高Linux管理效率是要遵循一些管理技巧的,這里學(xué)習(xí)啦小編簡(jiǎn)單介紹有關(guān)Linux管理效率的幾個(gè)技巧。相信他們會(huì)對(duì)管理員效率有提高。
怎么提高Linux管理效率
可以把任何命令或命令的組合指定給鍵盤上的某個(gè)鍵,可以是Alt+[A-Z],
Ctrl-[A-Z], Alt+Shift+[A-Z], F1-F12, Ctrl-F[1-12], Alt-F[1-12], Alt+Shift+F[1-12],還有更不可思議的是甚至還可以為功能鍵加上“參數(shù)”,這樣你按下那個(gè)鍵的時(shí)候,它會(huì)等待你輸入相應(yīng)的參數(shù),并根據(jù)不同的參數(shù)運(yùn)行不同的命令。
當(dāng)然,有一些熱鍵會(huì)被終端所捕獲,如常見(jiàn)的Ctrl-D/C/Q/Z等,不過(guò)沒(méi)關(guān)系,可用的熱鍵還多著呢!
定義熱鍵的配置文件為:/etc/inputrc 或 ~/.inputrc,定義熱鍵的格式如下:
"<熱鍵對(duì)應(yīng)的ASCII字符>":"<執(zhí)行的命令>"
其中熱鍵對(duì)應(yīng)的ASCII字符可以通過(guò) "先按Ctrl-V, 然后按熱鍵" 的方式來(lái)輸入, 如Ctrl-G對(duì)應(yīng)的字符為^G, Alt-P對(duì)應(yīng)的字符為^[p, Ctrl-Alt-H對(duì)應(yīng)的字符為^[^H.
可以用\C來(lái)代替Ctrl,\M來(lái)代替Alt, \M-\C來(lái)代替Alt-Ctrl, 如\C-M = Ctrl-M, \M-\C-H = Alt-Ctrl-M. 另外還可以用\e代表^[.
先來(lái)看一些基本的熱鍵定義,(這里熱鍵里的字母不區(qū)分大小寫):
"^[-":"su -\C-M" # 按Alt+- 執(zhí)行su - 命令,末尾\C-M表示輸入完定義的命令后回車,也可以更簡(jiǎn)潔地用一個(gè)\n來(lái)表示.
"\M-\C-G":"gaim & &>/dev/null && disown\C-M"
# 按Ctrl-Alt-g在當(dāng)前shell打開(kāi)gaim, 并脫離該shell獨(dú)立運(yùn)行,即:即使你退出了該shell, gaim也不會(huì)關(guān)閉
其他一些組合鍵可以根據(jù)自己的需要配置,偶就不多說(shuō)了.
大家也許會(huì)覺(jué)得這樣定義熱鍵太亂了,而且很難記住,還有一定的限制。這個(gè)問(wèn)題在后面會(huì)得到解決。
一般情況下,我們可以使用上下方向鍵來(lái)查找命令歷史列表,以此重復(fù)輸入命令,但是方向鍵離主鍵盤區(qū)太遠(yuǎn),如>果頻繁使用的話,會(huì)耽誤不少時(shí)間,而且挪動(dòng)右手時(shí)也不太方便,有沒(méi)有什么辦法把方向鍵的功能轉(zhuǎn)移到我們經(jīng)常>敲命令的地方呢? 如使用Alt+J = Down Arrow 向下查找,Alt+K=Up Arrow 向下查找
通過(guò)定義熱鍵可以做到這點(diǎn):
"\eh":"^[OD" # move left
# Alt-H 向左移一個(gè)字符, 相當(dāng)于Left Arrowgh, 這里^[OD即向上方向鍵的ASCII字符,輸入方式與前面提到的類似
"\el":"^[OC" # move right
# Alt-L 向右移一個(gè)字符,相當(dāng)于Right Arrow
"\ej":"^[OB" # move up
# Alt-J 向下移動(dòng),相當(dāng)于Up Arrow
"\ek":"^[OA" # move down
# Alt-K 向上移動(dòng),相當(dāng)于Down Arrow
"\ei":"^?" # left earse one character
# Alt-I 向左刪除一個(gè)字符,相當(dāng)于Backspace
"\eo":delete-char # right earse one character
# Alt-O 向右刪除一個(gè)字符,相當(dāng)于Delete
"\en":backward-kill-word # left kill one word
# Alt-N 向左刪除一個(gè)單詞
"\em":kill-word # right kill one word
# Alt-M 向右刪除一個(gè)單詞
"\ea":"^[n^[n^[n^[n^[n^[n^[n" # kill to the head
# Alt-A 刪除當(dāng)前位置到開(kāi)頭,也就是多Alt-N幾次(A--> ahead)
"\ee":"^[m^[m^[m^[m^[m^[m^[m" # kill to the head
# Alt-E 刪除當(dāng)前位置到末尾,也就是多Alt-M幾次(E--> end)
"\ep": insert-last-argumem"
# Alt-P 插入上一個(gè)命令最后一個(gè)參數(shù) (P--> Paste)
"\ew": forward-word
# 系統(tǒng)默認(rèn)Alt-F (forward)跳到當(dāng)前單詞詞尾,如果已在詞尾,則跳到下一個(gè)單詞(右邊一個(gè)單詞)詞尾
"\eq": backward-word
# 系統(tǒng)默認(rèn)Alt-B (backward)跳到當(dāng)前單詞詞首,如果已在詞首,則跳到上一個(gè)單詞(左邊一個(gè)單詞)詞首
發(fā)覺(jué)F和B鍵離得太遠(yuǎn),不方便,偶分別改作Alt-Q, Alt-W, 但是Alt-F/B照樣可以用
這樣輸入命令的時(shí)候幾乎可以不用離開(kāi)主鍵盤區(qū),而且移動(dòng)光標(biāo),刪除字符,刪除單詞,上下歷史命令查找都集中>在一塊,比以前方便多了。 不過(guò)開(kāi)始可能有些不習(xí)慣,就跟使用vi一樣,但是多練幾次就熟練了。
Linux下絕大部分服務(wù)的配置是基于配置文件的,一般說(shuō)來(lái),更改了某個(gè)服務(wù)的配置文件,要使其立即生效,還需重啟該服務(wù)直接的或依附的守護(hù)進(jìn)程才行。難道你就不覺(jué)得“每次 vi /etc/xxx.conf 完后又 service xxx restart/reload 或 killall -HUP xxx”這樣做很繁瑣么?如果要配置的服務(wù)較多而且要不停地調(diào)試呢?況且我們平常使用Linux時(shí)難免會(huì)不時(shí)地終止或啟動(dòng)某個(gè)服務(wù)進(jìn)程,輸入命令的次數(shù)也不少。如果為每個(gè)服務(wù)都指定一個(gè)熱鍵的話,似乎不大可能。如果我們賦予一個(gè)熱鍵為一個(gè)基本鍵,而相應(yīng)的服務(wù)為其“參數(shù)”,那又如何呢?
舉個(gè)例子,賦予Alt-S (S-->Start)為啟動(dòng)服務(wù)的基本鍵,服務(wù)名的前2個(gè)字符為啟動(dòng)“參數(shù)”,那么就可以像下面那樣隨意啟動(dòng)某個(gè)服務(wù)了:
"\essm":"service smb start\n"
# \es=Alt-s, sm=smb,
# 即:按下Alt-s后緊跟著再輸入sm(這時(shí)輸入的sm并不會(huì)顯示在終端上),就可以啟動(dòng)samba的服務(wù)進(jìn)程了,不必?fù)?dān)心按下鍵與輸入“參數(shù)”間的時(shí)間延遲問(wèn)題,你按下Alt-s,然后去外面兜一圈回來(lái),再接著輸入sm,照樣可以。
"\esht":"service httpd start\n" # ht=httpd,啟動(dòng)Apache服務(wù)
類似地,我們賦予
Alt-D(D--> shutDown) 為停止服務(wù)的基本鍵
Alt-R(R--> Restart) 為重啟服務(wù)的基本鍵
Alt-T(T--> Status) 為查看服務(wù)狀態(tài)的基本鍵
Alt-C(C--> Configure) 為打開(kāi)服務(wù)對(duì)應(yīng)的主配置文件的基本鍵
如:"\ecnf":"vi /etc/exports\n" # Alt-c+nf 打開(kāi)NFS的配置文件
"\ecsm":"vi /etc/samba/smb.conf\n" # Alt-c+sm 打開(kāi)smb的配置文件
如果某個(gè)服務(wù)(如ssh)有2個(gè)配置文件,可以在其后再加一個(gè)數(shù)字,如:
"\ecssh1":"vi /etc/ssh/sshd_config\n" # 打開(kāi)sshd服務(wù)端配置文件
"\ecssh2":"vi /etc/ssh/ssh_config\n" # 打開(kāi)sshd客戶端配置文件
如果要執(zhí)行某個(gè)應(yīng)用程序呢?可以用Alt-x做基本鍵(x--> eXeccute) 如:
"\exga":"gaim & &>/dev/null && disown && clean \n"
"\exxm":"xmms & &>/dev/null && disown && clean \n"
"\exvm":"vmware & &>/dev/null && disown && clean \n" "\exna":"nautilus & &>/dev/null && disown && clean \n"
等等....
到現(xiàn)在為止我們只要按1個(gè)組合鍵+2個(gè)字符就可以實(shí)現(xiàn)下面眾多的功能:
1. 執(zhí)行指定的應(yīng)用程序
2. 啟動(dòng)|重啟|關(guān)閉|指定的服務(wù)進(jìn)程
3. 查看指定服務(wù)的狀態(tài)
4. 打開(kāi)指定服務(wù)的指定配置文件
卸載無(wú)響應(yīng)的 DVD 驅(qū)動(dòng)器
網(wǎng)絡(luò)新手的經(jīng)歷:按下服務(wù)器(運(yùn)行基于 Redmond 的操作系統(tǒng))DVD 驅(qū)動(dòng)器上的 Eject 按鈕時(shí),它會(huì)立即彈出。他然后抱怨說(shuō),在大多數(shù)企業(yè) Linux 服務(wù)器中,如果在那個(gè)目錄中運(yùn)行某個(gè)進(jìn)程,彈出就不會(huì)發(fā)生。作為一名長(zhǎng)期的 Linux 管理員,我會(huì)重啟機(jī)器。如果我不清楚正在運(yùn)行什么,以及為何不釋放 DVD 驅(qū)動(dòng)器,我則會(huì)彈出磁盤。但這樣效率很低。
下面介紹如何找到保持 DVD 驅(qū)動(dòng)器的進(jìn)程,并輕松彈出 DVD 驅(qū)動(dòng)器:首先進(jìn)行模擬。在 DVD 驅(qū)動(dòng)器中放入磁盤,打開(kāi)一個(gè)終端,裝載 DVD 驅(qū)動(dòng)器:
以下是代碼片段:
# mount /media/cdrom
# cd /media/cdrom
# while [ 1 ]; do echo "All your drives are belong to us!"; sleep 30; done
現(xiàn)在打開(kāi)第二個(gè)終端并試著彈出 DVD 驅(qū)動(dòng)器:
以下是代碼片段:
# eject
將得到以下消息:
umount: /media/cdrom: device is busy
在釋放該設(shè)備之前,讓我們找出誰(shuí)在使用它。
以下是代碼片段:
# fuser /media/cdrom
進(jìn)程正在運(yùn)行,無(wú)法彈出磁盤其實(shí)是我們的錯(cuò)誤。
現(xiàn)在,如果您是根用戶,可以隨意終止進(jìn)程:
以下是代碼片段:
# fuser -k /media/cdrom
現(xiàn)在終于可以卸載驅(qū)動(dòng)器了:
以下是代碼片段:
# eject
fuser 很正常。
技巧 2:恢復(fù)出現(xiàn)問(wèn)題的屏幕
嘗試以下操作:
以下是代碼片段:
# cat /bin/cat
注意!終端就想垃圾一樣。輸入的所有內(nèi)容非常零亂。那么該怎么做呢?
輸入 reset。但是,輸入 reset 與輸入 reboot 或 shutdown 太接近了。嚇得手心冒汗了吧 — 特別是在生產(chǎn)機(jī)器上執(zhí)行這個(gè)操作時(shí)。
放心吧,在進(jìn)行此操作時(shí),機(jī)器不會(huì)重啟。繼續(xù)操作:
以下是代碼片段:
# reset
現(xiàn)在屏幕恢復(fù)正常了。這比關(guān)閉窗口后再次登陸好多了,特別是必須經(jīng)過(guò) 5 臺(tái)機(jī)器和SSH 才能到達(dá)這臺(tái)機(jī)器時(shí)。
技巧 3:屏幕協(xié)作
來(lái)自產(chǎn)品工程的高級(jí)維護(hù)用戶 David 打電話說(shuō):“為什么我不能在您部署的這些新機(jī)器上編譯 supercode.c”。
您會(huì)問(wèn)他:“您運(yùn)行的是什么機(jī)器?”
David 答道:“ Posh”。(這個(gè)虛夠的公司將它的 5 臺(tái)生產(chǎn)服務(wù)器以紀(jì)念 Spice Girls 的方式命名)。這下您可以大顯身手了,另一臺(tái)機(jī)器由 David 操作:
以下是代碼片段:
# su - david
轉(zhuǎn)到 posh:
以下是代碼片段:
# ssh posh
到達(dá)之后,運(yùn)行以下代碼:
以下是代碼片段:
# screen -S foo
然后呼叫 David:
“David,在終端運(yùn)行命令 # screen -x foo”。
這使您和 David 的會(huì)話在 Linux shell 中聯(lián)接在一起。您可以輸入,他也可以輸入,但彼此可以看到對(duì)方所做的事情。這避免了進(jìn)入其他層次,而且雙方都有相同的控制權(quán)。這樣做的好處是 David 可以觀察到您的故障診斷技巧,并能準(zhǔn)確了解如何解決問(wèn)題。
最后大家都能看到問(wèn)題所在:David 的編譯腳本對(duì)一個(gè)不在此新服務(wù)器上的舊目錄進(jìn)行了硬編碼。將它裝載后再次編譯即可解決問(wèn)題,然后 David 繼續(xù)工作。您則可以繼續(xù)之前的娛樂(lè)活動(dòng)。
關(guān)于此技巧需要注意的一點(diǎn)是,雙方需要以同一用戶登錄。screen 命令還可以:實(shí)現(xiàn)多個(gè)窗口和拆分屏幕。請(qǐng)閱讀手冊(cè)頁(yè)獲取更多相關(guān)信息。
對(duì)于 screen 會(huì)話,我還有最后一個(gè)技巧。要從中分離并讓它打開(kāi),請(qǐng)輸入 Ctrl-A D (即按住 Ctrl 鍵并點(diǎn)擊 A 鍵。然后按 D 鍵)。
然后通過(guò)再次運(yùn)行 screen -x foo 命令可以重新拼接起來(lái)。
作為系統(tǒng)管理員的Linux管理效率在使用這些技巧后肯定會(huì)有一個(gè)較大的提高。