我看網上都是教一些判斷語法 , 沒找到常用的執行程式
工作上每天要做的工作 , 有哪些需要寫 shell script 呢 ?
寫 script 的重點就三個字:自動化
你可以把每天要重複好幾次做到很無聊的事情自動化,例如除錯時需要複製資料庫來重現問題,步驟是:
前四個動作一直重複又沒什麼需要注意的,直接弄成 script 讓步驟變成:
這個 script 可能頂多跑個十幾次就再也用不到了,不習慣的人大概覺得不必要花時間寫 script。但對於平常就用指令處理步驟 1 到 4 的人來說,做成 script 只是把相同的指令貼到文字檔而已,花費不用一分鐘。
你也可以把好久才要做一次,然後每次都忘記細節要怎麼弄,查一陣子才想起來的事情自動化。例如程式發佈新版本,網站要放上最新消息,修改下載連結,軟體頁的版本與歷史版本都要更動。包含多國語系的頁面,哩哩扣扣要修改將近十個檔案。即使詳細的步驟都寫成筆記了,有一次還是漏改了檔案,乾脆讓 script 自動去處理。從此發佈新版我只要將版本號與版本說明設好,網頁要改的東西都自動處理好了。
另一個久久才跑一次的例子是伺服器環境的安裝與設定。我們一次更新機器就是幾十台,伺服器上面除了常用的那些套件以外,還要跑自行開發的幾個服務。我在進公司以後遇到第一次更新伺服器就花時間將所有東西自動化了,過幾年第二次更新機器大約四十幾台,我先花一個小時在其中一台跑自動安裝的 script,用另一個 script 檢查所有該動的都有動,有問題就修正自動安裝的 script。剩下的幾十台讓修正後的 script 自己跑一跑大約半小時就全部上線開始負載流量了。包含安裝作業系統,分割硬碟,設定磁碟陣列,安裝套件,設定各種服務,檢查所有的東西都正常就緒,如果要用滑鼠一台一台點慢慢檢查,看你一個星期能不能出機房?
最後一個例子,是某個沒用版本控管的網站。檔案修改後要先傳到 develop 去,修改過的檔案要移到備份資料夾並加上時間戳,確認沒問題才能傳到 production。有一次在找誰把 develop 的東西丟到 production 去,我說不是我,因為全部都 script 自動在跑,這東西跑幾個月都沒事所以不可能今天突然傳到錯的機器去。當然也不可能發生忘了備份就把檔案覆蓋的事情。
感謝你寫這麼多指導 , 感覺 script 是針對多台伺服器才需要這麼做 , 如果只有2-3 台也需要這麼做嗎 ? 另外要發現異常, 是不是需要登錄檔分析工具,會比較容易分析問題?
感覺 script 是針對多台伺服器才需要這麼做
我舉那麼幾個例子, 也只有一個提到比較多伺服器, 事實上我大都是用在重複單調的作業上, 或是怕手動操作恍神失誤的地方, 還有懶的記詳細步驟的小事情上
差不多每個軟體專案我都至少會有四個以上的 script 幫我簡化處理各種無聊事情
可以分享你的script 給我嗎?還有你都怎麼分析log?
分享給你也沒有用啊, 那都是針對我個人需求弄的, 如果是想看別人寫的東西來學習, 那你可以去看 clonezilla 的原始碼, 他用了很多 shell script
log 有現成的就用現成的軟體, 你現在會用到的別人大都已經寫好了
clonezilla 是一套備份軟體嗎 ? log 有那些現成軟體 , 我是初學者不太懂 . 謝謝!