searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

[macOS]如何配置macOS自启动程序

2023-11-27 09:04:07
61
0

macOS系统的自启动项分为不同的用户级别,不同用户级别的自启动项的表现方式也不同。

1. 普通用户级别,配置为普通用户级别的启动项在用户登录完成之后启动,比如我们在“系统->设置->登录项”配置的自启动程序;

2. root用户级别,root用户级别的启动项面向所有的用户,可以在开机完成之后就启动,无需普通用户登录完成;

3. 系统级别,系统级别的自启动项无法进行修改,主要由系统内核进行管理;

 

macOS系统目前主要通过Launchd来进行启动项管理,Launchd是系统启动的第一个进程,其PID为1,主要用于管理后台程序、应用和脚本的运行。

1. Launchd启动之后会先扫描目录“/System/Library/LaunchDaemons”和“/Library/LaunchDaemons”下的plist文件并进行加载。

2. 用户完成登录操作之后,Launchd会扫描目录“/System/Library/LaunchAgents”、“/Library/LaunchAgents”、“~/Library/LaunchAgents”下的plist文件并进行加载。

Launchd加载plist文件会检查“RunAtLoad”和“KeepAlive”配置,只有其中一个为YES的情况才会启动对应的任务。

 

Deamons和Agents

Deamons和Agents的主要区别是所属用户不同。Agent是以当前用户权限执行(普通用户),而Daemon则是以root用户权限执行(所以Daemon对应的执行文件的owner必须配置为root)。

 

配置文件

配置文件以.plist结尾,实际结构为xml结构,以如下的plist文件为示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>             
    <string>com.ctyun.control</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/control</string>
        <string>-p</string>
        <string>7777</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/var/log/com.ctyun.control.log</string>
    <key>StandarOutPath</key>
    <string>/var/log/com.ctyun.control.log</string>
</dict>
</plist>

1. Label是为启动的程序设置一个唯一的标签;

2. ProgramArguments设置程序的启动参数,值为数组类型,可以直接把第一个参数配置为程序路径(也可以单独使用Program来配置程序路径);

3. RunAtLoad为是否加载即启动程序,如果false则需要主动启动程序;

4. KeepAlive为是否需要保活,如果为true,则Launcd检测到程序退出会再次启动;

5. StandardErrorPath和StandardOutPath配置日志输出目录,方便进行调试,NSLog的输出会打印到对应的日志文件;

 

launchctl

launchctl是用来管理启动项plist的工具

1. 查看所有由launchd管理的启动项进程:

launchctl list

2. 加载plist配置文件:

launchctl load -w /Library/LaunchDaemons/com.ctyun.control.plist

“-w”为可选项,表示是否立即启动程序。

需要注意,如果是LaunchAgents目录则plist文件owner为当前用户即可,如果是LaunchDaemons则需要修改文件owner为root用户:

sudo chown root com.ctyun.control.plist

3. 取消plist配置:

launchctl unload /Library/LaunchDaemons/com.ctyun.control.plist
0条评论
0 / 1000
l****n
14文章数
1粉丝数
l****n
14 文章 | 1 粉丝
原创

[macOS]如何配置macOS自启动程序

2023-11-27 09:04:07
61
0

macOS系统的自启动项分为不同的用户级别,不同用户级别的自启动项的表现方式也不同。

1. 普通用户级别,配置为普通用户级别的启动项在用户登录完成之后启动,比如我们在“系统->设置->登录项”配置的自启动程序;

2. root用户级别,root用户级别的启动项面向所有的用户,可以在开机完成之后就启动,无需普通用户登录完成;

3. 系统级别,系统级别的自启动项无法进行修改,主要由系统内核进行管理;

 

macOS系统目前主要通过Launchd来进行启动项管理,Launchd是系统启动的第一个进程,其PID为1,主要用于管理后台程序、应用和脚本的运行。

1. Launchd启动之后会先扫描目录“/System/Library/LaunchDaemons”和“/Library/LaunchDaemons”下的plist文件并进行加载。

2. 用户完成登录操作之后,Launchd会扫描目录“/System/Library/LaunchAgents”、“/Library/LaunchAgents”、“~/Library/LaunchAgents”下的plist文件并进行加载。

Launchd加载plist文件会检查“RunAtLoad”和“KeepAlive”配置,只有其中一个为YES的情况才会启动对应的任务。

 

Deamons和Agents

Deamons和Agents的主要区别是所属用户不同。Agent是以当前用户权限执行(普通用户),而Daemon则是以root用户权限执行(所以Daemon对应的执行文件的owner必须配置为root)。

 

配置文件

配置文件以.plist结尾,实际结构为xml结构,以如下的plist文件为示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>             
    <string>com.ctyun.control</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/control</string>
        <string>-p</string>
        <string>7777</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/var/log/com.ctyun.control.log</string>
    <key>StandarOutPath</key>
    <string>/var/log/com.ctyun.control.log</string>
</dict>
</plist>

1. Label是为启动的程序设置一个唯一的标签;

2. ProgramArguments设置程序的启动参数,值为数组类型,可以直接把第一个参数配置为程序路径(也可以单独使用Program来配置程序路径);

3. RunAtLoad为是否加载即启动程序,如果false则需要主动启动程序;

4. KeepAlive为是否需要保活,如果为true,则Launcd检测到程序退出会再次启动;

5. StandardErrorPath和StandardOutPath配置日志输出目录,方便进行调试,NSLog的输出会打印到对应的日志文件;

 

launchctl

launchctl是用来管理启动项plist的工具

1. 查看所有由launchd管理的启动项进程:

launchctl list

2. 加载plist配置文件:

launchctl load -w /Library/LaunchDaemons/com.ctyun.control.plist

“-w”为可选项,表示是否立即启动程序。

需要注意,如果是LaunchAgents目录则plist文件owner为当前用户即可,如果是LaunchDaemons则需要修改文件owner为root用户:

sudo chown root com.ctyun.control.plist

3. 取消plist配置:

launchctl unload /Library/LaunchDaemons/com.ctyun.control.plist
文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0