高效 Unix 管理員的 7 個習慣
【伯樂線上導讀】:如果你一週花 50-60 個小時管理你的 Unix 伺服器,解決使用者的問題,仍然覺得沒做多少事,那麼你應該養成既讓你更高效又讓你有時間為下一波問題準備的好習慣。
有些 Unix 管理員常常連續工作好幾個小時,處理一大堆重要事情,但他們的工作卻很少獲得好評,而另一些看上去很傲慢的管理員,即使對最簡單的問題也傾向於使用優雅的解決方案,他們對運用正則表示式來解決遇到的任何挑戰的能力引以為豪,他們也真是懶到骨子裡了 —— 即使做的是日常工作,他們也不斷的尋找方法,以敲更少的字元。當技術和知識積累到一定程度,如果他們養成一些類似《高效人士的七個習慣》書中所講的習慣,他們可以做更多的事情並且從工作中獲得更多好評。有鑑於此,這裡推薦了高效 Unix 管理員的一些習慣。
習慣 1:不要讓問題來找你
避免緊急事件(讓你疲於應對的那種)的一個辦法是,在問題的萌芽期將其消滅。我發現在伺服器上安裝指令碼很有用,這些指令碼會在事情看起來不正常的時候通過郵件通知我,比如報告異常日誌,檢查效能和磁碟空間統計,報告應用程式失敗或程序丟失。這麼做的風險是這種郵件變得越來越多時,會導致當訊息停止或被識別為垃圾郵件時,你其實沒有看過或沒注意到。注意到有訊息沒到達,就像注意到你的12或更多個人組成的團隊中有個人沒來開會一樣困難。
要做到先發制人,在它們導致中斷之前,在使用者注意到問題或發現他們不再能完成工作之前,你很可能發現很多問題。如果你擁有應對災難所需的資源來也會很有幫助。如果一臺主伺服器停止工作了你會進行故障轉移嗎?你會用備份快速重建服務環境嗎?你有沒有定期測試備份以確保它們完整可用?為關鍵服務準備災難計劃(比如,郵件服務可以遷移到資料中心的空閒伺服器上,NIS+ 伺服器可以用副本來啟動)會讓你免於在壓力下變得手忙腳亂和浪費太多時間。
習慣 2:熟悉你的工具和系統
可能找出你的哪臺伺服器出問題的最快方法是,熟悉它正常情況下的狀態。假如一臺伺服器通常使用50%的記憶體,突然間用到了99%, 你會想知道發生了什麼。現在是什麼程序在跑,之前不是這樣的呀?什麼應用比平常用了更多的資源?精通一套檢視效能、記憶體使用等的命令,我通常用 sar 命令,也鼓勵別人使用它 , 我用它來檢視目前系統發生了什麼的同時也用它回顧以往以找出問題發生的時間。我在我最關鍵的伺服器上執行的一個指令碼發給我足夠的資料,讓我可以快速檢視最近一兩週的效能指標。
在問題發生的時候練習所有可能有用的命令也是個好主意。你能構造一個 find 命令幫你識別可疑檔案,大檔案,和許可權有問題的檔案嗎?你需要分析一個程式的時候,知道如何使用一個好的偵錯程式真是有如神助。當你的系統受到攻擊的時候,知道怎麼檢查網路連線也很重要。
習慣 3:優先順序,優先順序,優先順序
談到你如何安排工作的時候,把重要的事情放在首位是毫無疑問的,但有時候選擇哪一件事情更優先要比看起來更困難。想要合理的安排任務的優先順序,你必須考慮解決問題所帶來的價值。對我來說,問題影響到的人數常常在我的考慮範圍之內,但也要看被影響到的是誰。你的 CEO 可能必須等同於 1000 名員工,但只有你(或你的老闆)能做這個決定。你還應該考慮他們受影響的程度。這個問題指的是,他們根本沒法工作還是隻是給他們的工作帶來干擾?另一個確定優先順序的關鍵因素是解決問題需要的時間。除非我正在解決的問題需要斷電,我會盡快做完可以快速解決的。對我而言,這個類似超市的少量購物結算通道(美國的超市結算臺有“不多於10件商品”與“超過10件商品”之分)。如果我可以在幾分鐘之內解決一個問題,回過頭再做那個可能要花費我所有剩餘時間的更重要的問題,我會這麼做。如果覺得這個技巧有用,你可以設計自己的量化系統來計算任務的優先順序,但不要太複雜。評定問題嚴重程度的 “value” 可以從1(不嚴重)到5(嚴重),影響到的人數也從 1(一個人)到 5 (每個人),需要的時間可以是, 1(星期),2(天),3(小時)和 4 (分鐘)。某種程度上用量化的方式來確定優先順序總是個好主意。
嚴重程度 × 影響到的人數 × 需要的時間 = 優先順序 (最高優先順序 = 優先順序的最大值)
3 * 2 * 2 = 12 問題 #1
5 * 1 * 4 = 20 問題 #2
這裡問題 #2 會排在任務列表的第一位。
習慣4:進行事後分析,但不要把自己搞糊塗了
有些 Unix 管理員對事後分析有點走火入魔。弄清為什麼會出現問題,事後分析的確是個好辦法,但是也許不值得你在這上邊花太多時間。如果你遇到一個非常嚴重的,很高階的問題並且可以重現,你應該花點時間弄清楚到底發生了什麼。不太嚴重的問題沒必要這麼認真的分析,所以對那些很容易解決的和沒有嚴重後果的問題,你應該設個時限,確定要花多長時間在它上面,來弄明白問題的起因。如果你確實知道事情為什麼發生,而不是隻知道發生了什麼,最好把它記錄下來,好在幾個月或幾年之後發生同樣的問題時你或別人可以查詢得到。
我很想從這些年來遇到的問題中學習,可是曾經有太多次,我發現當遇到一個問題的時候會說 ”我之前碰到過…” 同時仍然想不起原因或者我之前是怎麼解決這個問題的。記錄正確的筆記,把它們放到安全的地方,可以在今後的某些時候節省你幾個小時的時間。你也要仔細確認你的辦法真的有效。不然你可能會發現確鑿的證據,證明你所認為的辦法其實沒有效果。這樣的證據有時不止一條。在你把它記下來之前,嘗試確認你處理的任何問題完全解決了。有時你需要終端使用者幫你確認。或者你可以用 su 命令切換到終端使用者,自己確認修好了沒(我經常這麼幹)。
習慣 5: 記錄你的工作
通常來講,Unix 管理員不喜歡把他們做的事情記錄下來,但有些事真的有必要花些時間和精力把它文件化。我曾經編譯了一些很複雜的工具,很值的記錄下來,但我沒有這麼做,因此我不得不通過記憶來回想每個程式到底是如何工作的。例如,我有一些程式,包含幾個視覺化指令碼,跑在 windows 虛擬伺服器上給一臺 Unix 伺服器發文件,此伺服器用 Perl 格式化這些檔案,為把它們放入 Oracle 資料庫做準備。
如果別人接手了這項任務的安裝,會花很長時間來理解這些指令碼片段,它們跑在哪裡,它們在幹什麼,它們是怎麼彼此配合的。實際上,我有時必須停下來問自己 “等一下;這個是怎麼回事?” 一些我為自己準備的最好的文件,列出了每個程式和哪一部分在哪執行,展示出程式每個階段的資料樣本並且詳細介紹了每個程式如何工作和何時執行。
習慣 6:修復問題並向解釋給使用者
好的 Unix 管理員對他們支援的使用者總是積極響應,他們會回覆使用者反饋的問題並且在為使用者解決問題的時候也會讓使用者知曉。如果你花時間回覆使用者反饋的問題,在解決這個問題的同時通知反饋問題的使用者,並在問題被修復後告訴使用者,你的使用者可能不會感到沮喪而會感激你花時間來幫助他們。
更進一步,如果你花時間解釋哪裡出了問題和為什麼會出現問題,這可能會讓他們以後能夠自己解決問題而且還會佩服你的直覺。
習慣 7:給自己留點時間
正如我曾經在文章說過的,工作不是你的全部。照顧好自己也是做好工作的重要部分。不要把自己拴在辦公桌上。不時的到處走走,讓腦袋放鬆放鬆,並保持學習 — 尤其是你感興趣的。
如果你在意你的幸福,調養生息,並短暫脫離工作,你可能會更幸福並且在人生的各個方面都更成功。
打賞支援我翻譯更多好文章,謝謝!
打賞譯者
打賞支援我翻譯更多好文章,謝謝!