Linux 私房菜(鳥哥):我和 Linux 的這些年,那些事

2021-02-20 高效運維


作者簡介:

鳥哥(蔡德明)

臺灣知名 Linux 網站站長,臺灣成功大學環境工程系博士,就學期間建立「鳥哥的 Linux 私房菜」網站,其著作《鳥哥的 Linux 私房菜 》是兩岸三地最暢銷的經典 Linux 入門書,曾任臺灣多家知名 Linux 教育中心講師。專長是 Linux 作業系統、網站規劃與維護、網絡安全,研究方向是網絡應用整合。

前言

文章整理自 蔡德明(鳥哥)在GOPS2017 · 深圳站的演講。高效運維社區致力於陪伴您的職業生涯,與您一起愉快的成長。

我叫蔡德明,人稱鳥哥。我姓蔡,外號菜鳥,大學三年級就會有學弟叫我菜鳥學長,我讓大家統稱鳥哥。

我英文不是很好,我想給名字叫 Vegetables Bird(VBird)。在求學過程中,我小時候讀鄉村學校,父親是捕魚郎,從來沒想要把我培養成讀書的小孩,他讓我讀到小學畢業,就買一艘船全家人出海捕魚。

有一個契機,國二時分到放牛班,我從來沒考過第二名,跟其他班級相比,我成績不算很好。這時候有一個很高的成就感,覺得念書蠻好玩的,隨便念念就能考第一名。高中考到臺灣南部高雄中學,大學是成功大學環境工程,讀完後對碩士有興趣,讀了成功大學環境工程所。

最有趣的是我們老師讓我讀博士,家裡人「說讀完博士出來後可能沒工作可以做」,我爸:「沒工作,老爸養你」。我就開始念博士,可以看到兩個很有趣的數字,從1996年入學到2006年畢業,這個博士學位我一口氣念了10年。

為什麼接觸 Linux?

是啊,為什麼接觸Linux? 我讀的是環境工程,在求學中不在求學過程中不可能動用電腦。當時,我蠻喜歡做 DOS Driver 的設定,只是為了打遊戲。那時打遊戲有聲音是很困難的事情,所以會做比較多的測試和實驗。那時,我連 UNIX 是什麼都不知道。

接觸 Linux 是 1998年念博士的,我的指導教授跟我說,我們跟別人籤約,兩年內要完成,機器已經買了,大概20萬人民幣左右。他讓我打開,裡面是 SOLARIS,這有點像 Windows,那時聽說它很厲害,一臺小小的PC電腦就100萬臺幣。 

關於 SPARC 操作的蠢事,工程師來維護說系統不能有太多的帳號,等他走了之後,我們把 ETC 的密碼刪除到兩個帳號,後來我們讓他再來一次,因為我們沒帳號了.,從此之後話不能亂講。

學人家用工作站,在臺灣用 Win98 Xdmcp,大家知道 Win98會遇到的問題,後來出來的 Win2000 讓我們很害怕。我們跑 Modeling 三天都不能關機。通常運作到兩天半會死機,Win98死機很正常,我們從來沒有怪它。 

當時被逼著學很多技能,包括 Fortran Programing、Compiling Program、C shell scripting。為什麼無法開機?查了半天是電源線沒有插,有時間開不了機,因為光碟沒有拿出來。跟我們接洽的運維人員蠻可憐的。

為什麼接觸 Linux Server?

因為實驗一次,呼喚兩次。我們覺得這個東西蠻好玩,上世紀(1998年)Mailbox 總體流量大概 50mb,一個檔案是 10mb,傳送就比較困難。後來出來 File transfer,唯一沒有的是防火牆,預設的服務都開了。我會看書學習,書上怎麼說,我就怎麼做,結果是重關。

我現在談的技術很低級,我是環境工程的人,永遠不知道什麼是 NAT。我的臺灣師傅 Netman 說「這麼大的人,不好好自己學習,自己去看資料」,我念書這麼久第一次被說不用功,所以我慢慢學習。

最後開始投入,光專有名詞就要找好幾個,那時候讀書是很辛苦的。我的結論是:書是人寫的,錯誤是存在的,人是欠罵的,我們運維人員常常會被到很多客戶罵,有時候被罵是很快樂的,不要相信教育機構說要「快樂的學習」。

為什麼會有私房菜?

小弟我特別健忘,今天見面,明天可能就忘記了,所以我是很健忘的人。

我會一直寫的原因是我讀了10年博士,我老闆第3年後,每年都對我說「你明年會畢業」,這就說了七年。

大家做事情的時候,我們拉著學生坐下,速度會很快,「你明天交給我」、「明天有點難」、「下個禮拜一定要交給我」,一直說到畢業,時間比較多,我開始做文章的撰寫,第一次聽到這件事的時候非常開心,但是實驗室需要有人管。


這是最早的文件,後來足足七年,慢慢補上,2002 年時比較有趣。接觸原廠大概是 2002 年,接觸到原廠的訓練文件,自己沒學到就不會想接觸它。我的 Netman 師傅邀請我來補習班,沒想到很痛苦,我要自學、上臺教課,要花心思如何教別人。

我纂寫的經過,開始時很隨興。我們希望讓一些朋友快速的進入IT產業,所以寫得比較輕鬆。各位有沒有翻過在大學記的筆記?如果你有記筆記的習慣,五年後你打開看看,發現看不懂自己的筆記。我連當時想到的笑話都寫進去了,我開始慢慢的編輯。

如果有興趣寫文章,不要一開始就想寫一本書,很多業界朋友開始時寫一本書,他寫了第一章就寫不下去,他開始覺得自己寫不好,又重新寫,反覆不斷的寫第一章,後面九章都沒寫,一拖就是三年。

寫完文章後會覺得自己真了不起,可以寫這麼多東西。「半瓶水響叮噹」,這是在論壇中回答的結果,這是在2002年的時候做的。真正吸引大家注意的原因,小弟是時勢造英雄,也不能說英雄,就是窮作家。

Linuxfab 當時是臺灣很厲害的論壇,十分之一講技術,十分之九講政治,裡面常常在吵架,所以裡面經常很熱鬧,倒了之後沒人有地方炒,慢慢跑到網站裡學習。

網站平時的總人數時是一兩百人,現在人數是四五個人,有時候有三十幾個就會很害怕。我們很多朋友是挑錯字魔人,你的字寫得不對,不要講政治。很多朋友說這說得不錯,業界有遇到這樣的問題,解答我的疑惑。

2002 年出現 TnLUG,在臺南億載金城,我們每月都會吃飯聚餐,當時年紀小,很青澀。裡面有一個大哥會免費把公司會議廳借給大家學習。

每個月都有演講,有朋友交 Xbox 拆解、如何泡妞等,不局限在 Linux 和 OpenSource,最後這個團隊就是為了聚餐。這是臺灣的社區論壇,我很感謝我的老闆留了我 10 年,其中 7 年讓我寫文章。

寫作需要傻勁,有一股傻勁就可以寫下來,你收到的會比當初貢獻的還多。Rookie 會比較有趣,因為那時候遇到很多問題,把它記載下來,可以幫助很多同輩。我現在寫不出常見的問題,還好我現在接觸很多 Rookie。

我的資料從來不是給高手看的,只是給 Rookie 看的。跟 Rookie 講話一定要多說,不然他不聽。他說我的書是神奇的橘黃色書皮,剛寫好,接受了出版社的邀稿。

第一本書有三成資料是錯的,但很多玩家覺得寫得很好,因為把他們的心聲寫出來,我遇到的蠢事,他們也遇到過。我們看到教科書上說絕對不會錯的流程,而我會說你會遇到什麼錯誤,只要你不寫「-IF 斜線」,都有救。init 變成 Systemd,學習的過程是痛苦的,什麼都是定製化處理。第四版將會在北京出版。

2006年畢業後,我到學校教書,遇到很多奇怪的問題,慢慢的把它們解決掉。這幾年在臺灣觀察的現象,比較有錢的企業不再自己維護機房,IT丟在雲裡,所以雲非常重要。

20 個人以下的小公司在臺灣非常多,老闆很怪異,要完成對公司任何訊息流的監控,他們希望所有信息進出都要通過這臺小 PC,因為他們不想請 IT 運維人員,直接請外包商做維護,臺灣外包商的收入還不錯,因為他只有老闆自己一個,老婆是會計,請了一個員工,一年的營業額可以達到 700 多萬臺幣,這是針對傳統產業設計開發的概念。

臺灣有很多自建的 Private Cloud,現在人力比較短缺。在大陸這方面發展很快,而在臺灣,這個部分才開始看到問題,開始培訓人才,速度比較慢,2013-2015 年,我經常到北京學習。

我在學校會做一些專題,解決我們的問題。開始我們要求廠商幫助我們裝還原卡系統,每次開機都會自動進入 Win XP,我們自己要裝軟體,Software 要安裝軟體,我們建議系主任把它撤掉,撤掉後誰來處理,我開始帶學生搞專題。

2008年前,解法是多重作業系統,我教 Linux 都會教破壞性教學,這時候會遇到很多問題,下一堂課的老師不能上課,開不了機。我想這樣不行,考試要先把環境整合在學校教師實際環境,固件不成功,這不是解法。常用的方式,我們找到了系統。

鳥哥名言「我沒有錢」,有一次參加研討會,有一個學生說鳥哥有一句名言,我真的發現我曾經說我沒有錢。我們發現要玩雲虛擬,沒有錢是玩不起的。這是我們當時遇到的問題,搭建雲虛擬系統,開始做了很多學習,學習是痛苦的,在痛苦裡找出自己的快樂、小確幸。

在學雲虛擬化的時候,發現用 RADI 效能的優化,早期把兩臺主機加了三個網卡,直接做串聯,後來發現只有一張網卡會生效,三張網卡除了浪費電以外,沒有任何的效果。我們遇到很多的問題,這是後來解決問題時學到的技巧。

 GoCloud,開始我們玩的瓶頸在這邊,因為沒有錢。那時候我們有一個網卡,插了網卡後,這邊都沒問題,瓶頸來到這邊,教室連到系統,帶寬不夠,內部跑很快,外部跑很慢,不斷的發展問題,不停的學習。剛剛幾位前輩提出問題,剛剛導入會想像不同的問題,慢慢調整,最後可以調整得蠻好的。

目前我們在做雲系統 Client 端的解決方案,主要是 Raspberry pi 和 PCI pass-through,現在用一臺 PC 插兩張顯卡,這是很 low 的技術,至少解決自己的問題。

如果經理或領導讓運維自己解決某個問題,這不是痛苦,而是一種成長,你學會這些技巧後,對大家往後的職場都很有幫助。


來自鳥哥的問候

鳥哥  GOPS 2017 深圳站合影 從左至右:簫幫主,鳥哥,大梁,趙班長

近期好文:

從無到有:熊貓直播 Rancho 發布系統構建之路

【原創故事】運維的一天:架構設計、故障處理、人員離職...

自動化運維之架構設計六要點 | 騰訊大梁專欄

親!用什麼來保護你,我的運維安全~

穩定性之王Debian Gnu/Linux 9 升級的新問題及解決方法

想了解

更多?

更深?

GOPS 2017 北京站有更多專家的分享喲

2017.7.28-7.29


點擊「閱讀原文」,關注 728·GOPS2017 北京站

相關焦點

  • 《Linux就該這麼學》與《鳥哥的linux私房菜》哪個更適合初學者?
    時不時在一起聚會中也會說到一些關於linux的話題,談及關於linux「升級」話題時,一致的表示linux是一個「先苦後甜」系統。學習使用的時候非常難,但是一旦學習成功,那就是步入一馬平川之境界。期初學習看書推薦:《Linux就該這麼學》,《鳥哥的linux私房菜》、《Linux 內核設計與實現》……三本相比來說更推薦《Linux就該這麼學》,原因是言簡意賅,不像鳥哥那麼厚重看一半就閒置了……;後面是命令:man、date、wget、reboot……;再後面就是實驗:修改文件、修改文件權限、建立不同帳戶、帳戶間的切換……;「但是最重要的別不是這些表面的東西,而是你是否能夠徹底了解linux系統的思想
  • 最近在學linux,大神們有什麼建議嗎?
    後來工作需要,花了半年時間,利用上下班把《鳥哥的linux私房菜》上下兩部讀了兩遍,我住在北京北5環,公司在南三環,天通苑北到宋家莊的路上,不換乘,是很適合讀書的;就這樣,我算是做了半個運維工程師;後來換工作去了創業公司,初始架構就是我設計搭建的,完全得益於鳥哥的這盤私房菜;慢慢理解了 linux 這個東西,我也開始折騰起來,嘗試各種發行版,搞各種裝機,什麼顯卡驅動,網絡驅動,反正就是折騰
  • 你眼中的Linux高手,都應該讀過這幾本書!
    涵蓋了大部分命令行工具和Shell編程。最主要的是它基於 CC 協議共享,任何人都可以免費下載。如果你想要學習Linux,強烈建議通過《鳥哥的Linux私房菜》這套書籍去學習,淺顯易懂,小編就是通過這套書籍學會Linux的.這的確是一本非常好的書,入門到精通的經典教程。
  • 選擇一本適合自己的Linux系統書籍
    如考前通宵看教材,因為教材上有考試用到的知識;而武俠、言情、奇幻小說,可使精神得到刺激和愉悅。再比如我最近常拿在手裡的兩本書,一本PHP聖經,為我提供寫程序需要的知識,一本三杯茶,講一個美國人在喜馬拉雅山上的巴基斯坦小山村蓋學校的故事,可以引起我精神上的共鳴。——摘自《紙質書存在的意義》
  • 我是如何學習 Linux 的
    苦於學校沒有專業的老師,只好一心撲在「聖賢書」之上,在經歷了半年的強制學習和強制灌輸,我產生了嚴重的自我懷疑:「學習 Linux 有什麼用?那麼多命令記到死啊?還比什麼賽,乾脆退賽完事」。這些不良的情緒直接阻礙了我學習的動力和效率,但試問這世間有什麼是容易的呢?還記得你敲出的第一條命令在一個「黑漆漆」的窗口中顯示了什麼樣的神跡嗎?
  • 新手大禮包 學習Linux必須知道的那些事
    初學者必讀的Linux基礎書籍要想學好Linux,你至少需要:一本好入門教材、一本linux指令參考手冊、linux系統管理手冊、講解linux系統原理的書。這裡我們推薦幾部公認的好書:《 鳥哥的Linux私房菜 基礎學習篇》 鳥哥 著;人民郵電出版社《 鳥哥的Linux私房菜 伺服器架設篇》 鳥哥 著;機械工業出版社《 Linux命令、編輯器與Shell編程》 [美]索貝爾(Sobell·M.G.)
  • Linux運維工程師真實的工作狀態到底是怎麼樣的?
    這些碎片知識都是不成體系的雞肋.如果沒有系統的學習一下,那麼你永遠搞不懂真正Linux,只有一知半解. 拿去哪裡尋找學習資料呢? 看《鳥哥的私房菜》怎麼樣.這個書的Linux知識的確非常好,但是適合作為辭典一樣 的工具書,因為講的太詳細了.看起來會讓你有昏昏欲睡的感覺.而最近火起來的而《linux就該這麼學》http://www.linuxprobe.com/這本書確實很適合用來學習,每一章都是知識模塊化的知識,有很多的實例操作圖片,不怕自己操作沒有正確參照物,非常容易理解。
  • 【開源專訪】臺灣鳥哥:希望再來大陸做交流
    學習Linux的人,《鳥哥的Linux私房菜》(以下簡稱《私房菜》)可謂是必備書籍,「鳥哥」這個名字大家也不陌生。
  • 2019 年總結我的 Linux 學習筆記
    回顧2019年,有了許多的新生事物?農藥、吃雞、抖音、頭條這些個詞,想必大家都耳熟能詳,就算你沒玩過,在這網際網路世界,你聽也得聽過。那麼,在這過去的一年你的娛樂時間是否大都花在其上呢,甚至學習時間也花在其上呢,如果是!找個安靜的地方花個一刻鐘,回顧一下你過去的一年,是不是覺得好空虛,不記得自己得到了什麼,收穫了什麼?
  • linux和windows的不同
    講解對象:linux和windows的不同作者:融水公子 rsgz注意:學習linux時候儘量忘記windows思維區分1 windows中的dos命令是不區分大小寫的2 linux中命令行是區分大小寫的3 linux中所有的東西都是文件形式保存(硬體,用戶,文件都是文件)特點:1 想要這些文件永久生效2 有些文件臨時生效,一旦重啟就沒有了
  • 推薦新手使用 Arch Linux 入門
    如果要問為什麼學習 Linux ,我也只能回答 Just for fun 。本文基本上是我個人見解,有不正確的地方懇請批評指正,另外本文只是推薦 Arch ,並沒有說 Arch 是最適合新手的。我這次懷著猶豫的心情去安裝了,安裝過程不像 Ubuntu 那樣順利,記得應該遇到過一點問題,但還是解決了。這次的 Debian 安裝讓我很滿意,我的電腦像復活了一樣,再也不會卡頓了。然而面對 Debian 我能幹什麼?我後來發現我什麼也沒幹,我不了解任何東西,我也只會用滑鼠點點,右鍵查看一下屬性,雙擊點個可執行文件 。
  • 每天一個 Linux 命令(23):Linux 目錄結構
    ,深入了解linux文件目錄結構的標準和每個目錄的詳細功能,對於我們用好linux系統只管重要,下面我們就開始了解一下linux目錄結構的相關知識。當在使用Linux的時候,如果您通過ls –l / 就會發現,在/下包涵很多的目錄,比如etc、usr、var、bin … … 等目錄,而在這些目錄中,我們進去看看,發現也有很多的目錄或文件。
  • 雖然我是醫生,但是我愛上了linux運維工作
    我 現在是一名醫學在校學生,當初由於受到父母醫學背景的影響,我毫無餘地的被迫選擇了一所本地的醫科大學,雖然我當時的理想很豐滿,現實真的很骨感的,不到 一年就很快就受夠了枯燥的醫學知識和閉塞的醫學環境,更讓我難以忍受和不能適應的是沉悶的學科。我開始後悔自己當時不夠叛逆,現在對未來根本不知道該何去 何從。於是大二開始就一度沉迷於網路遊戲之中,想要從這種虛擬的世界中找到一絲成就感。
  • 邪教Arch Linux
    江湖事,江湖人說。自從前輩大俠Unix隱居之後,windows希望一統武林,然而linux和mac不敢寂寞,在易用性和圖形界面上與之分庭抗禮。一時間江湖風起雲湧,英傑輩出。然而,在這競爭的如火如荼之時,有個少年Arch Linux踏入了這個江湖。
  • 在 Linux 下 9 個有用的 touch 命令示例 | Linux 中國
    每當我們使用 touch 命令更改文件和目錄的訪問和修改時間時,它將當前時間設置為該文件或目錄的訪問和修改時間。日期和時間可以使用以下格式指定:{CCYY}MMDDhhmm.ss其中:讓我們將 devops.txt 文件的訪問和修改時間設置為未來的一個時間(2025 年 10 月 19 日 18 時 20 分)。
  • Linux 內核學習:環境搭建和內核編譯
    內核學習之一:環境搭建--安裝Debian7.3本系列文章假設讀者已對linux有一定的了解,其實學習linux內核不需要有很深的關於linux的知識,只需要了解以下內容:linux基礎知識及基本shell命令;現代作業系統的基本概念;C語言和gcc基本使用。
  • vxworks和linux有什麼區別
    內核僅提供多任務環境、進程間通信和同步功能。這些功能模塊足夠支持VxWorks在較高層次所提供的豐富的性能的要求。 微內核便是將服務轉移到進程上的一種內核模式,主要應用在實時系統和嵌入式系統上,主要是因為通常這些系統都不帶磁碟,整個系統必須都放在EPROM中,常常受到存儲空間的限制,而且所需的服務也比較單一,如PSOS,VxWorks等。 宏內核是一種傳統的內核結構,它將進程管理,內存管理等各項服務功能都放到內核中去,通常用在通用式內核上,如UNIX,linux等。
  • Linux系統從入門到放棄?
    續上一個學期學完了的Linux基礎知識學習過程,這一學期的centos伺服器技術學完後,讓我對於Linux系統的學習又加深了許多。我知道了Linux只是個 內核。現在的Linux作業系統,都是用這麼一個內核,加上其它的應用程式構成的。
  • IT運維工程師們為什麼選擇使用Linux系統
    2.學習成本低:我相信看到這裡會有人問,linux對於程式設計師來講是底層的東西,對於一些,比如java的程式設計師而言似乎毫無用處。然而,優秀的程式設計師們有自己的追求,有自己的理想,他們往往熱衷於深入研究計算機原理,想要深入理解程序背後的本質東西,而不是簡單的停留在調用某個API上。我認為這是每個程式設計師都應該具備的品質。