Mac下用Launchd实现使用rc.local执行开机启动命令

Posted Jim

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mac下用Launchd实现使用rc.local执行开机启动命令相关的知识,希望对你有一定的参考价值。

其实原理很简单,使用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执行开机启动命令的主要内容,如果未能解决你的问题,请参考以下文章

Mac 10.12通过Launchd创建自定义服务(基于MySQL 5.7.15的开机自启动)

Mac服务管理-Launchd(转)

Mac使用Launchd命令行lauchctl操作服务的简单用法

linux 使用 rc.local 实现自启动

Mac OS启动服务优化高级篇

Mac 开机启动后台程序