mac 管理定时任务

2016 / 03 / 19 mac

自动执行下签到脚本啥的还是挺方便的。

一 编写sh文件

例如python_v2ex.sh

#!/bin/bash
/usr/bin/python /tmp/xx1.py 
/usr/bin/python /tmp/xx2.py

二 编写plist文件 python_sign.plist

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">  
<plist version="1.0">  
  <dict>
    <!-- 名称,要全局唯一 -->
    <key>Label</key>
    <string>com.uniflor.notifier</string>
    <!-- 命令, 第一个为命令,其它为参数-->
    <key>ProgramArguments</key>
    <array>
      <string>/Users/keeley/cron/sh/python_v2ex.sh</string>
    </array>
    <!-- 运行时间 -->
    <key>StartCalendarInterval</key>
    <dict>
      <key>Minute</key>
      <integer>0</integer>
      <key>Hour</key>
      <integer>22</integer>
      <!--
      <key>Day</key>
      <integer>1</integer>
      <key>Month</key>
      <integer>5</integer>
      <key>Weekday</key>
      <integer>0</integer>
      -->
    </dict>
    <!-- 运行间隔,与StartCalenderInterval使用其一,单位为秒
    <key>StartInterval</key>
    <integer>30</integer>
     -->
    <!-- 标准输入文件 -->
    <key>StandardInPath</key>
    <string>/Users/keeley/cron/log/run-in.log</string>
    <!-- 标准输出文件 -->
    <key>StandardOutPath</key>
    <string>/Users/keeley/cron/log/run-out.log</string>
    <!-- 标准错误输出文件 -->
    <key>StandardErrorPath</key>
    <string>/Users/keeley/cron/log/run-err.log</string>
  </dict>  
</plist>

存放任务列表的路径

~/Library/LaunchAgents 由用户自己定义的任务项
/Library/LaunchAgents 由管理员为用户定义的任务项
/Library/LaunchDaemons 由管理员定义的守护进程任务项
/System/Library/LaunchAgents 由Mac OS X为用户定义的任务项
/System/Library/LaunchDaemons 由Mac OS X定义的守护进程任务项

为用户定义的任务项,只以用户登陆后才会执行,守护进程任务项无论用户是否登陆都会执行 
根据添加的任务类型,把它拷贝到相应的目录,通过launchctl来加载

把编写好的plist移动到相应的目录(这里是软连接过去的)

cd ~/Library/LaunchAgents
ln -s ~/cron/plist/com.ttianjun.python_sign.plist .

launchctl 命令

launchctl list 查看所有任务
launchctl load com.ttianjun.python_sign 加载任务
launchctl unload com.ttianjun.python_sign删除任务

linux的cron命令

https://segmentfault.com/a/1190000002628040

参考

mac,launch官方文档
osc,在Mac上定时执行任务