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

时间: 2024-10-10 05:42:56

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

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

注意:rc.local脚本里面启动的用户默认为root权限. 一.rc.local脚本 rc.local脚本是一个Ubuntu开机后会自动执行的脚本,我们可以在该脚本内添加命令行指令.该脚本位于/etc/路径下,需要root权限才能修改. 该脚本具体格式如下: #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the scrip

rc.local中的memcached命令不执行

碰到了个问题, rc.local 中启动memcached 的命令没有执行, 手动输入却可以. memcached 改成绝对路径之后就好了. 究其原因在于: rc.local 在PATH环境变量指示的路径中寻找 memcached. 在rc.local 执行时, PATH 中还不包括 /usr/local/bin. 手动输入可以, 是因为PATH 中已经包含 /usr/local/bin/ 了. 请写绝对路径. rc.local中的memcached命令不执行,布布扣,bubuko.com

CentOS 64-bit下安装JDK和Tomcat并设置Tomcat开机启动操作步骤

准备文件如下: 1.CentOS-6.4-x86_64-bin-DVD1.iso 2.jdk-7u67-linux-x64.rpm 3.apache-tomcat-7.0.55.tar.gz 安装步骤如下: 一.安装JDK [[email protected] /]# java -versionbash: java: command not found [[email protected] /]# rpm -ivh /soft/jdk-7u67-linux-x64.rpmPreparing...

用rc.local工具开机自启动

对于一些程序来说,无法直接开机自启动.那么我们可以利用开机自启动来执行一些命令,达到开机自启动的效果!!! 下面用tomcat来举个例子 tomcat启动的命令一般是./startup.sh 那么我们就把他的命令放到rc.local目录下,来达到开机自启动的效果!! 首先得给rc.local的执行的权限!! chmod +x /etc/rc.d/rc.local 然后把想让系统开机执行的命令放到文件里就可以了!! 原文地址:https://www.cnblogs.com/yeyu1314/p/1

Centos 7.0设置/etc/rc.local无效问题解决

安装centos7以后按照以往习惯修改rc.local添加开机启动命令,但重启后发现无效,再次重启发现依然如故 检查系统rc.local服务运行情况 systemctl | grep "rc.local" # rc-local.service loaded active running /etc/rc.d/rc.local Compatibility 发现运行正常 随后查看rc.local文件 vim /etc/rc.local 发现这么一句话 Please note that you

centos7 /etc/rc.local需要chmod +x /etc/rc.d/rc.local

Centos 7.0设置/etc/rc.local无效问题解决 安装centos7以后按照以往习惯修改rc.local添加开机启动命令,但重启后发现无效,再次重启发现依然如故 检查系统rc.local服务运行情况 systemctl | grep "rc.local" # rc-local.service loaded active running /etc/rc.d/rc.local Compatibility 发现运行正常 随后查看rc.local文件 vim /etc/rc.lo

Mac下部署Android开发环境附加NDK

2014-12-25 20:45:22http://www.cpplive.com/html/1941.html--点击数:2150 作为开发者,我们深有体会,不管是进行什么开发,为了部署开发环境,我们往往需要折腾很长时间.查阅很多资料才能完成,而且这次折腾完了,下次到了另一台新电脑上又得重新来过,整个部署过程记得还好,要是不记得又得重新开始,而且遇到 Android 这种GFW阻隔了开发资源下载 链接 的环境部署,又尤其浪费时间.所以这也是我写下这篇教程的初衷跟动力源泉,希望大家参考了这篇教程

Mac 下利用 Launchctl 自启动 mysql

在Mac下安装好了mysql, 想设置成开机自启动,原来以为和一般的linux系统一样,也是在rc.d这样目录放置启动脚本.在网上查了一些资料,发现苹果应该是把它完全封闭了,只能利用Mac系统里的Launchctl来做这个事. Launchctl其实就是写一个*.plist的文件,它的作用和linux里的Crontab的作用是一样的.下面的代码是我写的一个com.mysql.plist: Plist代码 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST

/etc/rc.local /etc/init.d

1. /etc/rc.local    这是使用者自订开机启动程序,把需要开机自动运行的程序写在这个脚本里   --------引用----------------------  在完成 run level 3 的服务启动后,如果我还有其他的动作想要完成时,举例来说, 我还想要寄一封 mail 给某个系统管理帐号,通知他,系统刚刚重新开机完毕,那么,是否应该要制作一个 shell script 放置在 /etc/rc.d/init.d/ 里面,然后再以连结方式连结到 /etc/rc.d/rc3.