mac os 定期任务配置

本文来自:http://www.netingcn.com/mac-os-plist.html

在linux下执行定期任务可以使用crontab,目前mac os也可以使用它,不过已不推荐使用。推荐做法是采用plist脚本,plist脚本可以设置执行的动作,时间间隔等其他一些信息。另外crontab的最小时间间隔是一分钟,使用plist脚本原则上时间间隔可以为一秒。

plist脚本存放路径为/Library/LaunchDaemons或/Library/LaunchAgents,其区别是后一个路径的脚本当用户登陆系统后才会被执行,前一个只要系统启动了,哪怕用户不登陆系统也会被执行。

可以通过两种方式来设置脚本的执行时间。一个是使用StartInterval,它指定脚本每间隔多长时间(单位:秒)执行一次;另外一个使用StartCalendarInterval,它可以指定脚本在多少分钟、小时、天、星期几、月时间上执行,类似如crontab的中的设置。

一个简单例子如下:


<?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.yangyz.cron.test.plist</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/yangyz/plist-test.sh</string>
    </array>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <true/>
    <key>StartInterval</key>
    <integer>60</integer>
</dict>
</plist>

其中key是plist脚本定义的属性,紧跟着的下一行是该属性对应的值。上述脚本是每间隔60秒执行一次/Users/yangyz/plist-test.sh这个shell脚本,也可以使用StartCalendarInterval来替换StartInterval达到同样的效果,例如:

<key>StartCalendarInterval</key>
<dict>
  <key>Minute</key>
  <integer>0</integer>
</dict>

上述设置的意思为每天的每个小时的第0分钟执行,也即使每60秒执行一次。

plist脚本中定义的属性以及具体的含义,可以参看苹果官方网站的说明,地址为:launchd.plist(5) Mac OS X Manual Page

launchctl命令可以控制plist脚本停止或重新加载。例如:

停止脚本com.yangyz.cron.test.plist运行
launchctl unload /Library/LaunchDaemons/com.yangyz.cron.test.plist 

启动脚本com.yangyz.cron.test.plist运行
launchctl load /Library/LaunchDaemons/com.yangyz.cron.test.plist

如果执行上面命令看到launchctl: Dubious ownership on file (skipping): /Library/LaunchDaemons/com.yangyz.cron.test.plist这样的错误,其原因是该脚本的owner和当前执行操作用户不一致。使用chown修改一下即可。

参考资料:
http://www.devdaily.com/mac-os-x/launchd-plist-examples-startinterval-startcalendarinterval
http://www.devdaily.com/mac-os-x/mac-osx-startup-crontab-launchd-jobs

欢迎转载,转载请注明文章出处,谢谢!



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mac下,可以使用以下两种方法设置定时任务: 1. 使用cronjob cronjob是Mac OS中自带的任务管理器。可以通过以下步骤设置定时任务: 打开终端,输入以下命令: ``` crontab -e ``` 这将打开cronjob的编辑页面。在页面中添加你想要执行的命令及其执行时间。例如,如果你想每天晚上8点执行一个Python脚本,可以添加以下内容: ``` 0 20 * * * /usr/bin/python /path/to/your/script.py ``` 这将在每晚8点执行script.py文件。 2. 使用launchd launchd是Mac OS的系统级别的任务管理器。可以通过以下步骤设置定时任务: 创建一个plist文件,该文件包含你想要执行的命令及其执行时间。例如,以下是一个用于每天晚上8点执行Python脚本的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.example.pythonjob</string> <key>ProgramArguments</key> <array> <string>/usr/bin/python</string> <string>/path/to/your/script.py</string> </array> <key>StartCalendarInterval</key> <dict> <key>Hour</key> <integer>20</integer> <key>Minute</key> <integer>0</integer> </dict> </dict> </plist> ``` 将该文件保存到~/Library/LaunchAgents目录中。 使用以下命令加载该任务: ``` launchctl load ~/Library/LaunchAgents/com.example.pythonjob.plist ``` 这将在每晚8点执行script.py文件。 无论使用哪种方法,都需要确保Python环境配置正确。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值