[Mac OSX] 如何關閉開機啟動的應用程式?

有時候在電腦裝了一些應用程式的時候,他預設會是開機自動執行,隨著電腦的使用時間越久,開機啟動的程序越來越多,也會導致電腦開機的速度越來越慢,因為他要花很多時間載入這些應用程式,這是一件非常討厭的事情!是非常!
而且有時候自動開啟的程式根本不是自己開機的時候就要用的這實在是非常惱人。

Mac的開機啟動項目一般會在「系統偏好設定」 >「使用者與群組」>「登入項目」可以找得到。
如何新增或刪除可以在如何設定 Mac 電腦開機時啟動的程式,以及登入視窗顯示項目這篇文章中看到很詳盡的說明。

但是有時候也有例外。

前幾天安裝了遠端軟體Anydesk,因為平常Mac也不關機的,所以關閉程式之後一直沒發現。
但後來重開電腦之後發現Anydesk 一直跳出來,在應用程式的偏好設定中也沒有看到任何可以設定的地方,到上面介紹的系統偏好設定的登入項目中也完全找不到Anydesk。
原本以為是我關機的時候還在執行Anydesk,所以開機時自動回覆關閉前的應用程式。
但後來又重新開機了好幾次之後發現還是會一直跳出來。超煩!!!

後來知道原來是有分成登入項目(Login Items) 與 啟動項目(Startup Items)兩種。

Startup Items
早期版本的OS X依賴於兩個文件夾
 - /Library/StartupItems 和 /System/Library/StartupItems - 來保存指定在啟動Mac時加載的項目。Apple現在不鼓勵使用啟動項,但有些程序(主要是較舊的應用程序)仍然使用這種機制。通常你的 /System/Library/ StartupItems文件夾應為空; 但如果它包含您不再使用的內容,則可以將不需要的項目拖到廢紙簍中,以防止下次啟動Mac時自動加載。

Launch daemons and agents
自從OS X 10.4 Tiger以來,Apple已經為開發人員提供了另一種自動啟動項目的機制:啟動守護進程和代理,由launchd進程控制。此方法比登錄項或啟動項提供更大的靈活性,但對用戶而言不太透明。

UNIX窗簾背後: launchd不是直接打開應用程序,而是加載特殊格式的.plist文檔(XML首選項文件),指定應該啟動什麼以及在什麼情況下啟動。有時這些啟動項目在後台持續運行,有時它們按預定的時間間隔運行,有時它們會根據需要運行 - 例如,響應某個文件或文件夾中的更改等事件 - 然後退出。

launchd使用的.plist文件可以佔用五個文件夾中的任何一個,它們的位置決定了項目加載的時間和權限:
  • /Library/LaunchDaemons 和 /System/Library/LaunchDaemons中的項目在Mac啟動時加載,並以root用戶身份運行。
  • /Library/LaunchAgents 和 /System/Library/LaunchAgents 中的項在任何用戶登錄時加載,並以該用戶身份運行。
  • /Users/your-username/Library/LaunchAgents中的項僅在特定用戶登錄時加載,並以該用戶身份運行。
其中位於System文件夾中的/System/Library/LaunchDaemons 和 /System/Library/LaunchAgents 是作為OS X的一部分包含的組件,他們對於保持MAC的正常運行非常重要,千萬不要動他們!!!

對於其他文件夾中的項目,你可以依照需求隨意修改他們。例如禁用他們或更改他們運行的頻率。但在此之前,我們最好要瞭解他們的工作方式。

要查看Mac上所有當前加載的啟動項目列表,可以打開終端機(Terminal)
並使用以下指令
# sudo launchctl list  
然後輸入管理員密碼按下Enter鍵

我們也可以直接查詢一下 /Library/LaunchAgents 底下有什麼運行項目
找到了一個看起來是Anydesk的Launch Item - com.philandro.anydesk.Frontend
如果我們想要不重新開機的狀況停止它我們可以用下列指令
# launchctl unload /Library/LaunchAgents/com.philandro.anydesk.Frontend

我們這邊是希望重新開機的時候他不要在自動啟動他的應用程式
我們就來編輯一下這個Launch item
# subl /Library/LaunchAgents/com.philandro.anydesk.Frontend

在他的下面我們幫他設定一個disabled的選項
<key>Disabled</key>
<true/>

如下圖:

接著重新開機

成功!!
開機之後不會再自動啟動Anydesk了!!

Reference:
[1] Mac 開機啟動服務
[2] Mac OS X 的 Launch Daemon / Agent
[3] Take control of startup and login items

留言

  1. 請問我電腦輸入同樣的的指令(確認沒打錯),但結果是command not found, 該怎麼處理?

    回覆刪除
    回覆
    1. 請問哪一個指令 command not found 呢

      刪除
    2. subl /Library/LaunchAgents/com.philandro.anydesk.Frontend
      會出現 command not found

      subl 指令為 使用 sublime 來編輯,若沒有安裝 sublime 這套文字編輯器,可以使用 vim 來編輯

      刪除

張貼留言

這個網誌中的熱門文章

什麼是QEMU ? 什麼是KVM ? 什麼是QEMU-KVM?