2010年1月3日 星期日

Mac OSX 的系統維護與疑難排解 2

接下來聊聊 Mac OSX 的自我維護功能,這個功能是來自 Unix 的特性,也就是 Daemon 的存在。Daemon 的中文意思是小惡魔 (?!),在 Unix-like 系統裡就是一些系統使用者,如果系統是一個工廠,一般使用者不見得每天都會來上班 (登入),但是 Daemon 就像是住在工廠的工友,每天也不做什麼特別的工作,就只在固定的時間,完成他所被指派的單一工作。在 Mac OSX 裡,關於系統維護的 Daemon 有三個 : daily、weekly 及 monthly,以下簡單地講一下他們的工作  (真的是講得很簡略,有興趣去網路上查查看就知道細節了) :

1. daily : 清除快取及系統垃圾,每天 03:15 發動
2. weekly : 重建 locate 及 whatis 資料庫,增加搜尋效率,每週六 03:15 發動 (10.3 之前是 04:30 發動)
3. monthly : 記錄使用者帳號的使用情形 (其實這我不是很懂 orz),每月一號的 05:30 發動

如此可以知道,為何 Mac 使用者不太需要使用第三方軟體去跑維護工作,原因就是這些動作都會自己來 [1]。可是有這麼順利嗎? 電腦是會休眠或關機的,如果每天凌晨時都是處關機狀態,那這些工作就完全不會進行了;另一方面如果是休眠狀態,Daemon 會延遲他們的工作時間,睡醒之後才跑這些維護的程序,這也是很多人鼓勵都用休眠不要關機的原因之一,不僅僅是回復到工作狀態的時間變短而已 [2]。

如果執行時間都必須關機怎麼辦? 其實手動去啟動即可,在終端機輸入 :

sudo periodic daily weekly monthly

輸入管理者密碼即可,後面可以自己決定要跑哪幾個 Daemon 的 maintenance scripts,如此簡單,根本不用安裝多餘的軟體。

除了自我維護的工作,很多人對於 Mac 的磁碟重組也是有許多疑惑,Mac OSX 到底需不需要磁碟重組? 其實是要的,只是不做也沒有很大的關係就是了。我稍微解釋一下,以 A、B、C 三個不同時間儲存的檔案片段來說,若是一般的檔案系統,資料存進去一定是隨便存,於是變成下面這樣 :

A  BA      CCABB   BBBBAAA   CBAA  .....

總之很亂就是了,Fat32 的磁區就是長得這副德性,但是 HFS+ 相當先進,在存檔時就會考慮 "單檔" 的連續性再存 :

AAAAAAAA       BBBBBBB  CCC

看出來了嗎? 單檔雖然是連續的,可是由於儲存時間不連續,故各檔案間是不連續的,所以使用久了也是一樣亂,只是存取單一檔案時不用到處找該檔案的片段而已,那為何說沒組也沒差呢? 原因大致有下面兩點 :

1. 沒有亂到不能接受的地步,在慢到受不了之前,硬碟可能已經壞了。
2. 重組磁碟是一個連續刪除讀寫磁區檔案的過程,其實對硬碟是一個耗損及傷害,如果重組完了之後對效能沒有一定程度的提升,根本不用做這種事情。

如果真的神經質非組不可,倒是可以提供一個軟體 iDefrag :
http://www.coriolis-systems.com/iDefrag.php


雖是商業軟體,但是風評還算不錯,只是我依然不推薦就是了,原因就像磁碟工具程式的 "修復磁碟" 一樣,一個系統在運作的磁碟時時刻刻都在讀寫,你居然對它做磁碟重組,這其實是很危險又荒謬的事情,所以我參考 MacUser 雜誌某一期的文章部分,提供兩個做磁碟重組的方法 :

1. 用另一顆有安裝 Mac OSX 及任何磁碟重組軟體的磁碟外接開機,以重組本機的磁碟。
2. 將本機磁碟的全部資料完全複製到外接的磁碟,之後把本機的磁碟完整格式化,最後再把所有的資料都從外接磁碟複製回來,藉由儲存時間的連續來間接重組。

很麻煩對吧,居然都要動用到外接磁碟,嫌麻煩就不要做了,Mac 本來的使用哲學就是不要讓你為這些電腦上的瑣事煩惱 [3]。

(待續)

附註
1. 相較之下,Windows 不自己去抓軟體來跑這種維護工作可不行,很有名的 CCleaner 就是在作這種事情。這類軟體很多,但其實大多都不可靠,因為亂刪登錄檔會導致系統出問題,所以老牌的 CCleaner 才會這麼受推崇,因為誤判率低。
2. 但是....不好意思,我不是每天都能用到我的 Mac,超過一天不用還是關機吧....orz
3. 我一直覺得 Windows 使用者對於本機 C 槽的磁碟重組是理所當然感到不可思議,還被教育成定期要做....我只能說 M$ 在台灣的滲透真是非常成功.....而且由於 Windows 不支援外接開機,所以我自己的 Windows 桌機也是那樣重組,不過我已經有心理準備了 XD,但是有趣的是我只有 MacBook 的硬碟有壞過........= =......嗯,桌機跟筆電這樣比不太公平....

2 則留言:

  1. sudo periodic daily weekly monthly
    這個指令打完沒有回應

    第一次打完有叫我輸入密碼
    可是沒有執行的感覺
    是一下子就結束了嗎?
    還是根本沒有執行
    第二次打一樣的指令他就不理我了
    完全沒反應
    只出現Davidteki-MacBook-Pro:~ David$
    請問是什麼問題

    回覆刪除
  2. 這是正常現象,打完該指令之後,它會先問你管理者密碼 (你必須使用管理者帳號來執行所有含 sudo 開頭的指令),打完之後就開始進行維護工作,此時是不會顯示出任何東西的,你也就擺著電腦讓它跑吧。跑完之後,它就會回到 "Davidteki-MacBook-Pro:~ David$" 讓你可以輸入下一個指令。

    我不清楚你的問題是從何而來,但是我本身看不出問題,只代表你的電腦速度很快 (CPU 及硬碟),或是你近期剛做過類似的維護工作 (比如說那三個 daemon 都會在凌晨自己執行),造成它一下子就結束了。

    話說 .... 第二次會很快是正常的吧?! (汗)

    回覆刪除