1. 概述

macOS开机启动项与其他类Unix比较麻烦,Linux配置rc.local文件即可。

macOS系统上开机启动这个叫法不准确,应该叫“自启动”或则“登录时启动”。
macOS上启动项可分为登录项(Login Items)和启动项(Startup Items):

  • Login Items在用户登录后立即启动并一直运行,直到用户退出登录或者手动终止才会停止运行;
  • Startup items在系统装载的最后阶段启动,苹果官方不再推荐使用。

2. macOS启动项管理

2.1 使用登录项添加自启动项

这种方式支持有用户界面的程序。
进入:设置–> 用户与群组–>登录项,点击+号找到想自动启动的软件,选择后确定即可。
删除启动项,点击 - 号删除即可。

2.2 使用launchctl工具添加启动项

从OS X 10.4 Tiger开始,Apple要求开发者使用launch daemons and agents配置自启动项,launch daemons和launch agents由launchd进程管理。launch是macOS下用于初始化系统环境的关键进程,它是内核装载成功之后在OS环境下启动的第一个进程。采用这种方式来配置自启动项只需要一个plist文件,该plist文件存在以下目录,各目录决定了其启动的先后和拥有的权限:

~/Library/LaunchAgents //特定用户登录以后以当前用户运行,第三方程序一般都放这里;
/Library/LaunchAgents //任一用户登录后以当前用户启动,管理员使用;
/System/Library/LaunchAgents //系统组件,任一用户登录后以当前用户启动
/Library/LaunchDaemons // 系统装载时以root用户启动,管理员使用
/System/Library/LaunchDaemons //系统组建,系统装载时以root用户启动


(跟上面的一样,只是分组的方式不一样,便于理解)

/Library/LaunchDaemons: 系统启动时运行,用户不登录也会运行
/Library/LaunchAgents: 用户登录后运行
~/Library/LaunchAgents: 用户自定义的用户启动项
/System/Library/LaunchDaemons: 系统自带的启动项
/System/Library/LaunchAgents: 系统自带的启动项

2.3 各目录区别

/System/Library //存放Apple开发的系统组件
/Library //存放系统管理员安装的程序
~/Library //存放普通用户安装的程序

2.4 launch daemons和launch agents区别

它们本质上都是守护进程,launch daemons在系统装载时启动,属于所有用户;launch agents是某个用户拥有的程序,在这个用户登录后启动。

3. plist文件

每个.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/>

4. 创建plist

vim ~/Library/LaunchAgents/aria2.plist
写入以下xml
<?xml version="1.0"encoding="utf-8"?>
<!DOCTYPE plist PUBLIC"-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict><key>KeepAlive</key><true/><key>RunAtLoad</key><true/><key>Label</key><string>aria2</string><key>ProgramArguments</key><array><string>/usr/local/bin/aria2c</string><string>-D</string></array><key>WorkingDirectory</key><string>/Users/Roy/Downloads</string></dict>
</plist>

检查plist语法是否正确

plutil ~/Library/LaunchAgents/aria2.plist

修改文件权限

chmod 644 ~/Library/LaunchAgents/aria2.plist

添加启动项

//launchctl 工具提供了一系列接口方便launchd程序
launchctl load ~/Library/LaunchAgents/aria2.plist

启动自启动项

launchctl start aria2

删除自启动项

launchctl unload ~/Library/LaunchAgents/aria2.plist

查看当前所有自启动项

launchctl list

5. Homebrew安装的程序可使用Homebrew Service设置开机启动

5.1 设置开机启动

brew service start mysql //如果Homebrew安装了mysql;

5.2 只运行,不开机启动

brew service run mysql

5.3 停止运行不再开机启动(待验证)

brew service stop mysql

Homebrew安装的程序不全都支持这种方式,如果命令执行失败,需要手动设置plist文件,使用launchctl工具添加启动项。

macOS开机启动项设置相关推荐

  1. 虚拟服务器启动顺序,虚拟机开机启动项设置方法

    虚拟机开机启动项设置方法 内容精选 换一换 本章节用于Nginx虚拟机场景的调优,其他场景无需执行.配置虚拟机的CPU.内存.网络.以虚拟机vm1为例.参数说明如表 vcpu与物理CPU绑定参数说明所 ...

  2. win7计算机开机启动项设置,启动项管理,教您电脑开机启动项怎么设置

    在使用电脑的过程中,我们的装的软件越来越多,以至于系统开机越来越慢.这是因为很多软件安装好以后,就随着我们的系统启动而自动启动了.所以,我们要把一些不需要开启启动的软件给禁止掉.那电脑开机启动项怎么设 ...

  3. win10设置开机启动项_如何进行win7开机启动项设置

    开机启动项是开机的时候系统会开启的程序.有时电脑开机启动会自动加载很多程序,严重拖慢电脑的开机速度.我们该如何设置开机启动项来取消这些加载的程序呢?下面小编解析如何进行win7开机启动项设置吧. wi ...

  4. linux学习-----开机启动项设置,ntp服务,防火墙服务,rpm服务,cron服务

    Linux自由服务(2) 1.设计主机名: FQDN(全限定域名) 1.临时设计主机名 语法:    hostname 设计的主机名 2.永久设置主机名 方法:    /etc/sysconfig/n ...

  5. w7运行里的计算机怎么设置,win7开机启动项怎么设置?win7开机启动项设置方法...

    电脑现在在我们生活中有着非常重要的地位,所以不仅仅电脑在市面上有着很好的销量,连带着电脑的周边产品也在不断发展,电脑系统就是其中一种.windows系统是最早出现的电脑系统,迄今为止也很少有系统可以超 ...

  6. win7开机启动项设置

    我们知道电脑新装系统,开机速度很快,但使用一段时间后会发现开机启动越来越慢,其实导致开机启动越来越慢的原因有很多,因为电脑使用久了,不知不觉启动的项目就多了,系统垃圾也多了,并且磁盘反复读写与删除等都 ...

  7. win7开机启动项设置_win7系统如何修改开机启动项 电脑修改开机启动项操作方法【图文】...

    在正常的情况下如果用户想要修改开机启动项都是通过第三方软件来修改的,其实电脑本身也是能够修改开机启动项的,只不过很多用户们还不知道怎么修改,那么win7系统怎么修改开机启动项呢?今天为大家分享win7 ...

  8. win7开机启动项设置_Win7系统电脑使用注册表查看开机启动项操作方法

    Win7电脑如何查看注册表启动项?我们都知道开机启动项可以用msconfig命令打开,那么除了msconfig命令之外还有什么方法可以查看开机启动项呢?我们还可以通过第三方工具来查看开机启动项,因为有 ...

  9. Windows使用笔记_Windows xp之开机启动项设置

    使用Windows系统久了,总会莫名其妙的多了很多开机启动的程序,严重拖慢了电脑的开机速度.安装第三方的系统管理软件虽然可以禁止一些开机启动项,但是第三方系统管理软件也本身也增加了系统的负担. 那有没 ...

  10. win7开机启动项设置_Win7电脑如何提高开机速度?

    Win7系统使用时间长了,我们就会发现电脑的开机启动速度变慢了,其实除了关闭相应的启动项之外,我们还可以对电脑进行相关的系统配置,来使电脑能够更加快速的启动.下面好系统重装助手就来告诉你怎么解决Win ...

最新文章

  1. Chrome 技术篇-console控制台检测xpath、css唯一性
  2. android学习笔记17——对话框(PopupWindow)
  3. [bzoj 4811] 由乃的OJ(贪心 + 树链剖分)
  4. 前9个免费的Java流程监视工具以及如何选择一种
  5. 状态栏编程(显示系统时间和进度条)
  6. es6 import 命令
  7. Stanford机器学习---第十一讲.异常检测
  8. 爆米花现象_芯片爆米花现象以及解决办法
  9. 使用NHibernate, Oracle Clob/NClob无法插入
  10. 滴滴passport设计之道:帐号体系高可用的7条经验
  11. map赋值给另一个map_如何写出一个能让面试官直呼“666”的深拷贝?
  12. 忘了是出自雪中还是剑来或者就是癞蛤蟆?反正应该是烽火大太监的句子吧。还掺杂了许多别家的,记不清谁写的了,或许有西藏的佛陀
  13. C语言循环语句的用法——while循环
  14. vs2013调试nginx
  15. 刘晓艳老师的考研单词记忆
  16. ai人工智能将替代人类_人类与人工智能
  17. 看完 2021 CSS 年度报告,才知道 CSS 发展这么快
  18. 性能魔方七剑下天山之由龙剑:世界级监测、完整且免费
  19. 2019秋招|从春招到秋招,Java岗经验总结(收获AT)
  20. 2017年总结,2018的新目标

热门文章

  1. 《皇帝新脑》读书笔记(一)
  2. NP实验-1 华为MSTP+VRRP练习题
  3. 用Java实现一个视频聊天软件
  4. 电力网络故障的计算机算法,电力系统故障分析的计算机算法.pdf
  5. Visual Studio 2019 c#的winform开发,基本操作
  6. C# winform开发的考试系统
  7. Ubuntu安装sqlmap
  8. iOS 虚拟GPS 就是为了玩pokemon go 哈哈哈哈
  9. 基于ThinkPHP6.0 - 宝塔搭建漫画CMS管理系统源码实测
  10. 2018八大流行网页设计趋势