使用launchd在系统启动时执行自定义任务

这个问题困扰了我好久,今天连续搞了6个小时终于搞定.

需要的工具: lingon 可以通过mac port安装最后一个免费的版本,或者可以从sourceforge上下载. 最新的版本已经不能免费使用了,可以从mac app store花几美元买到. 建议用这个工具的原因是因为自己写plist file难免出错.

 

进入正题, 假设我们要借助launchd在系统启动或者某个user login的时候执行一个任务, 本处以系统启动时创建一个ramdisk为例子. 先假设我们已经写好一个脚本叫ramdisk,路径是/usr/bin/ramdisk, make it executable, 那么剩下的就非常简单了.

1. 在/Library/LaunchDaemons/下创建一个plist文件, 比如叫做com.yourname.ramdisk.plist

2. 编辑文件如下

记住一定要将KeepAlive设置成true,否则launchd有可能并不会真正地去执行这个脚本,你用launchctl list看到com.yourname.ramdisk确实被load了,但是并没有PID.

 

3. 改变该文件的owner和权限

sudo chown -R root:wheel com.yourname.ramdisk.plist

sudo chmod 644 com.yourname.ramdisk.plist

 

4. reboot and bingo! you found ramdisk mounted. hurray!

 

注:

(1) launchctl是launchd的user interface

(2) 从osx 10.4 --> 10.5 --> 10.6 plist的规范都有些变化,比如在10.4中可以设置OnDemand,在10.6中OnDemand deprecated 所以就得设置KeepAlive.

(3) lingon可以很方便地帮助用户创建plist文件.

 

附: mount ramdisk的脚本,不保证没错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值