osx使用launchctl添加定时任务

osx使用launchctl添加定时任务

近期想做一个每天都要检查的脚本,然后发送执行结果信息到通知里。

其实思路很简单,就是写脚本,然后加入到launchctl里。

在这个过程中踩了几个坑,所以记录一下。

  1. 脚本对应的plist文件存放路径 - ~/Users/asdsut/Library/LaunchAgents/

  2. 脚本使用launchctl start执行的问题

    在进行测试的时候,观察/var/log/system.log总是没有东西,并且指定的标准输出和错误输出也没有文件生成。归根结底是因为使用命令的问题。假如我们的plist是com.xyz.check.plist,那么执行的时候应该是

    launchctl start com.xyz.check,而不是launchctl start com.xyz.check.plist

  3. 脚本权限的问题

    这个通过观察/var/log/system.log是可以看得出来的

  4. plist可执行程序写在哪的问题

    有两种写法:

    <?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>cn.kevin.checkin</string>
      <key>ProgramArguments</key>
      <array>
          <string>/path/script</string>
          <string>check</string>
      </array>
      <key>StartCalendarInterval</key>
      <dict>
          <key>Hour</key>
          <integer>10</integer>
          <key>Minute</key>
          <integer>00</integer>
      </dict>
      <key>StandardErrorPath</key>
      <string>/tmp/mycommand.err</string>
      <key>StandardOutPath</key>
      <string>/tmp/mycommand.out</string>
    </dict>
    </plist>
    
    

    另外一种写法:

    <?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>cn.kevin.checkin</string>
      <Program>/path/script</Program>
      <key>ProgramArguments</key>
      <array>
          <string>check</string>
      </array>
      <key>StartCalendarInterval</key>
      <dict>
          <key>Hour</key>
          <integer>10</integer>
          <key>Minute</key>
          <integer>00</integer>
      </dict>
      <key>StandardErrorPath</key>
      <string>/tmp/mycommand.err</string>
      <key>StandardOutPath</key>
      <string>/tmp/mycommand.out</string>
    </dict>
    </plist>
    

    看起来应该都是一样的,但是执行后发现只有第一种方法可以正确执行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值