MacOS 上的 launchctl Daemon / Agent 管理

2018-03-11 MacOS

最近接獲報案在 MacOS 上的 Apache 被啟動關不掉,依稀記得 MacOS 上有內建 apache,從 ps ax 看起來是使用者誤開內建的 apache

$ ps ax | grep apache
2031 ?? S 0:00.35 /usr/sbin/httpd -D FOREGROUND

 

先講解決辦法,用 launchctl unload 來把 apache 停用,並且不會在開機的時候啟動

$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

 

談談 launchctl 這個東西

如果你稍微了解系統,應該會知道 init(sysvinit)、systemctl(systemd) 這兩個管理服務工具,而 MacOS 的管理工具就是 launchctl 來管理整個作業系統的 services 及 processes,而 Launch 分為兩種:

  • Launch Daemon:在開機時載入 (load) 。
  • Launch Agent:在使用者登入時載入。
  • XPC Service
  • Login Items:在使用者登入時載入,這個在於「偏好設定」->「使用者與群組」->「登入項目」這邊可以找到設定。

 

太詳細的東西在 Reference 可以點進去看,這邊只講淺的(太嫩)

 

大部分的設定檔會放在以下位置的 plist

  • /System/Library/LaunchDaemons
  • /Library/LaunchDaemons
  • /System/Library/LaunchAgents
  • /Library/LaunchAgents

 

利用 launchctl list 可以看到會被自動帶起來的 service / processes

 

 

 

 

Reference:

Mac OS X 的 Launch Daemon / Agent

Daemons and Services Programming Guide

Technical Note TN2083: Daemons and Agents

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱