其实原理很简单,使用Launchd创建一个开机启动的服务,然后这个服务关联/etc/rc.local文件,那么接下来操作rc.local就和Linux下一样的了。

当然,这种思路还可以直接使用在~/.bashrc文件上,但是这种方式有个弊端,就是权限不是root,所以适用范围小很多。而通过这个服务创建的文件,在里面执行脚本的用户是root,权限是最高的。

说明:关于launchd的用户直接上苹果开发者网站查询,线索可以是这个launchctl

实现步骤:

进入/Library/LaunchDaemons目录

cd /Library/LaunchDaemons

创建一个plist文件

sudo vim local.localhost.startup.plist

复制以下内容到文件保存。(按【Esc】,然后输入【:wq!】,回车)

<?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>local.localhost.startup</string>
<key>Disabled</key>
<false/>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<false/>
<key>LaunchOnlyOnce</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/etc/rc.local</string>
</array>
</dict>
</plist>

使用launchctl添加为服务

sudo launchctl load -w ./local.localhost.startup.plist

最后创建rc.local文件,

sudo vim /etc/rc.local

在里面写好需要开机执行的命令。记得赋予rc.local文件x权限(可执行)

sudo chmod +x /etc/rc.local

参考:

http://blog.csdn.net/maxsky/article/details/55061453(以上内容部分转自此篇文章,删减了对话)

http://blog.csdn.net/abby_sheen/article/details/7817198

Mac下用Launchd实现使用rc.local执行开机启动命令的更多相关文章

  1. Ubuntu 18.04 启用 rc.local 设置开机启动

    ubuntu18.04 不再使用initd管理系统,改用systemd. 然而systemd很难用,改变太大,跟之前的完全不同. 使用systemd设置开机启动为了像以前一样,在/etc/rc.loc ...

  2. /etc/rc.d/rc.local 自定义开机启动程序

    /etc/rc.d/rc.local 用于用户自定义开机启动程序,可以往里写开机要执行的命令或脚本,线上的配置如下: [root@localhost ~]$ cat /etc/rc.d/rc.loca ...

  3. ubuntu16.04 下通过rc.d(rc.local)实现开机启动(未登录)anydesk

    先编辑anydesk-X.X.X/init/anydesk文件,将"DAEMON=//usr/bin$NAME"改成"DAEMON=/XXX/anydesk-5.1.1/ ...

  4. 除了/etc/init.d/加启动脚本 或者在/etc/rc.local中加启动命令,还可以通过crontab来完成服务器重启后自动启动服务的操作

    @reboot /bin/sh /opt/soft/percona/bin/mysqld_safe --defaults-file=/mnt/perconadata/my.cnf --basedir= ...

  5. CentOS中在/etc/rc.local添加开机自启动项启动失败

    应项目要求需要在开机的时候启动自己的Agent程序,想当然的直接就往/etc/rc.local当中添加启动命令,结果重启之后发现什么都没有发生....一开始还以为是Python路径的问题,结果改成绝对 ...

  6. Ubuntu 16.04设置rc.local开机启动命令/脚本的方法

    Ubuntu 16.04设置rc.local开机启动命令/脚本的方法       Ubuntu 16.04设置rc.local开机启动命令/脚本的方法(通过update-rc.d管理Ubuntu开机启 ...

  7. Ubuntu 16.04设置rc.local开机启动命令/脚本的方法(通过update-rc.d管理Ubuntu开机启动程序/服务)

    注意:rc.local脚本里面启动的用户默认为root权限. 一.rc.local脚本 rc.local脚本是一个Ubuntu开机后会自动执行的脚本,我们可以在该脚本内添加命令行指令.该脚本位于/et ...

  8. RedHat Linux下注册Apache为系统服务并设为开机启动

    1.系统环境: 操作系统:Red Hat Enterprise Linux Server release 5.4 Apache版本:httpd-2.2.19 2.注册服务 #将apachectl复制到 ...

  9. Centos7下rc.local文件开机不执行…

    在Centos7下,rc.local文件,开机默认是不执行的 /etc/rc.local链接的是  /etc/rc.d/rc.local文件,该文件默认不开机启动,官方建议添加一个service来实现 ...

随机推荐

  1. java MD5 并发

    Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 1321(R.Rives ...

  2. HRBUST1310 火影忍者之~鸣人 2017-03-06 16:01 104人阅读 评论(0) 收藏

    火影忍者之-鸣人 火影忍者的男主角漩涡鸣人,因为身上封印着邪恶的九尾妖狐,无父无母的他受尽了村人的冷眼与歧视,他下定决心要成为第六代火影,让所有人都认同他的存在,火影是动漫火影忍者中主人公鸣人所在的国 ...

  3. Struts+Spring+Hibernate整合

    这段笔记三两年前写的,一直因为一些琐事,或者搞忘记了,没有发.今天偶然翻出了它,就和大家一起分享下吧. 1.导入jar包 Struts的jar包: Spring的jar包: Hibernate的jar ...

  4. eclipse中不能找到dubbo.xsd报错”cvc-complex-type.2.4.c“的 两种解决方法

    配置dubbo环境过程中的xml文件,安装官网的demo配置好后,出错: "Description Resource Path Location Type cvc-complex-type. ...

  5. Sqlite 快速插入数据到本地表中

    用原始Insert方法太慢,网上找到了https://www.cnblogs.com/yisen-code/p/6897524.html 思路是: 开启事务,开启预处理,然后把SQL用参数传入具体值来 ...

  6. 为已经存在的TFS团队项目配置SharePoint集成

    配置好TFS团队项目集合与SharePoint站点集的集成后,就可以在新建TFS团队项目时集成SharePoint站点,也可以为已经存在的团队项目配置SharePoint站点的集成,如下图:   Fi ...

  7. 10-12Linux流编程的一些知识点

    第五章  Linux 的流编程 Linux流操作基础      流和文件的关系:流相当于一个缓冲区,可以将文件描述符和流关联,获得相应的缓冲区,以此来提高系统对磁盘的存取速度.     流的结构和操作 ...

  8. PARTITION BY函数

    1.PARTITION BY 开窗函数, 使用场景,在合同表里,获取所有房源在最新的合同编号.或者获取每个班级每次考试的第一名. 区别聚合函数:对于每个每个分组返回多行,而聚合函数对于每个分组只返回一 ...

  9. pageadmin网站制作 怎么验证sql用户名和密码的正确性

    使用pageadmin建站系统的时候,不懂可以参考官网教程. 1.打开SQL Server Management Studio会弹出如下界面. 第一个箭头指向的就是服务器名称,如果用ip无法连接sql ...

  10. 「BZOJ1426」收集邮票

    题目链接 戳我 \(Solution\) 我们首先转换一下问题: 假设我们进行了k轮得到了所有种类的邮票 则所花费用为: \[(1+2+5+...+k)=\frac{(1+k)*k}{2}=\frac ...