mac startup 启动项设置

  • /Library/LaunchAgents 用户登录后运行
  • /Library/LaunchDaemons 系统启动时运行,用户不登录也会运行 -守护进程
  • ~/Library/LaunchAgents 用户自定义的用户启动项
  • ~/Library/LaunchDaemons 系统启动后立即启动的进程 -守护进程
  • /System/Library/LaunchAgents 登录之后 系统自带的启动项
  • /System/Library/LaunchDaemons 系统启动后立即启动的进程 -守护进程

每个 .plist 文件中,有 3 个属性控制着是否会开机自动启动

KeepAlive:决定程序是否需要一直运行,如果是 false 则需要时才启动。默认 false

RunAtLoad:开机时是否运行。默认 false。

SuccessfulExit:此项为 true 时,程序正常退出时重启(即退出码为 0);为 false 时,程序非正常退出时重启。此项设置时会隐含默认 RunAtLoad = true,因为程序需要至少运行一次才能获得退出状态。

所以其实针对这三项,不同的值有不同的表现:

如果KeepAlive= false:

当RunAtLoad= false 时:程序只有在有需要的时候运行。

当RunAtLoad= true 时:程序在启动时会运行一次,然后等待在有需要的时候运行。

当SuccessfulExit=  true / false 时:不论RunAtLoad值是什么,都会在启动时运行一次。其后根据SuccessfulExit值来决定是否重启。

如果KeepAlive= true :

不论RunAtLoad/SuccessfulExit值是什么,都会启动时运行且一直保持运行状态。

如果不希望开机自动运行,则需要:

1. 找到对应程序的 .plist 文件

2. 删除 SuccessfulExit 属性。

3. 将 RunAtLoad / KeepAlive 均设为 false

相关操作

1.通过launchctl load xxx.plist或launchctl unload xxx.plist命令添加和删除指定启动项;

2.直接创建、修改、删除相关目录下面的plist文件。

plist 字段意义

Label 用来在launchd中的一个唯一标识,类似于每一个程序都有一个identifies一样。

UserName 指定运行启动项的用户,只有当Launchd 作为 root 用户运行时,此项才适用。

GroupName 指定运行启动项的组,只有当Launchd 作为 root 用户运行时,此项才适用。

Leave a Reply

Your email address will not be published. Required fields are marked *