admin avatar

MacOS launchctl 啟動進程控制

🕧 by admin

MacOS不像Linux 有/etc/init.d/rc.local 以及service 的方式可以設置程序隨機啟動,而是使用plist 文件管理。你可以寫一個plist文件放到~/Library/Launch Agents/下面,文件裡描述你的程序路徑和啟動參數,那麼這個用戶登錄時就會啟動這個程序了,而且是殺不了的哦,被殺了之後會自動重新啟動

plist文件分佈在:

  1. /System/Library/LaunchDaemons/ (System-wide daemons provided by OS X)
  2. /System/Library/LaunchAgents/ (由Mac OS X為用戶定義的任務項)
  3. /Library/LaunchDaemons (由管理員定義的守護進程任務項)
  4. /Library/LaunchAgents (由管理員為用戶定義的任務項)
  5. ~/Library/LaunchAgents ( 由用戶自己定義的任務項)

這些配置文件由程序

launchctl 簡介

launchctl 管理MacOS 的啟動腳本,控制啟動計算機時需要開啟的服務。也可以設置定時執行特定任務的腳本,就像Linux cron一樣。launchctl需要root權限。

launchctl 常用命令

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1.显示当前的启动脚本
launchctl list

2.开机时自动启动Apache服务器
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist

3.设置开机启动并立即启动改服务
launchctl load -w   **.pist 

4. 设置开机启动但不立即启动服务 
launchctl load **.pist 

5. 停止正在运行的启动脚本
sudo launchctl unload [path/to/script]
6. 再加上-w选项即可去除开机启动
sudo launchctl unload -w [path/to/script]

執行定時腳本|設置開機啟動步驟

Bash:
1
2
3
4
5
6
7
1.写执行脚本 (通过 brew 安装软件 brew 会为我们自动生成。)
2. 去对应的目录下建立plist文件 
3. 加载服务
    >1 cd 进入指定 plist 文件目录 
    >2 launchctl load *.plist #加载 
       launchctl unload *.plist #取消 
    >3 launchctl list #查看服务

對服務設置別名方便操作

Bash:
1
2
3
4
5
1. vim ~/.bash_profile #编辑添加如下脚本 
2. 命名别名(以 nginx 为例)
    >启动:alias nginx.start=’launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist’ 
    >关闭:alias nginx.stop=’launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist’ 
    >重启:alias nginx.restart=’nginx.stop && nginx.start’

注意點

1. 在launchctl list 命令結果中出現的plist 文件才會有效。2. Agents文件夾下的plist是需要用戶登錄後,才會加載的,而Daemons文件夾下得plist是只要開機,可以不用登錄就會被加載

💘 相关文章

写一条评论

Based on Golang + fastHTTP + sdb | go1.16.4 Processed in 0ms