在MAC OS X上如何启用crontab?
来源:互联网 发布:程序员联合网 编辑:程序博客网 时间:2024/05/21 14:09
project: blog
target: how-to-enable-crontab-on-osx.md
date: 2015-12-16
status: publish
tags:
- OS X
- MAC
- crontab
- 定时任务
categories:
- OS X
- crontab
背景
本本上又一些东东是比较重要的,我使用了git进行管理,从而可以将其备份到某个git仓库上。可是鄙人喜欢偷懒,不喜欢老是手动执行备份的一系列命令,于是乎我就想到了写个备份脚本,想通过 crontab 来定期备份。
脚本写好了,也加了一条crontab:
# m h dom mon dow command
30 11,17 * * * /Users/clarence/bin/daily-backup
可是,为啥到点没有执行呢?
问了下度娘和谷哥,结果很多文章都是关于如何用OS X现在自带的 launchctl 来执行定时任务的。可是呢,鄙人这个脚本是像每天上午和下午都要执行的,用 launchctl 来搞的话有点嫌麻烦。故今天非要探究下如何启用crontab。结果不一会儿就找到了原因,现分享如下:
如何启用crontab
首先,既然OS X的定时任务统统都由 launchctl 来管理了,就看看 cron 任务有没有在里面:
$ LaunchAgents sudo launchctl list | grep cron
83968 0 com.vix.cron
果然在里面。那就检查下这个启动项的配置:
$ LaunchAgents locate com.vix.cron
/System/Library/LaunchDaemons/com.vix.cron.plist
$ LaunchAgents cat /System/Library/LaunchDaemons/com.vix.cron.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>com.vix.cron</string>
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/cron</string>
</array>
<key>KeepAlive</key>
<dict>
<key>PathState</key>
<dict>
<key>/etc/crontab</key>
<true/>
</dict>
</dict>
<key>QueueDirectories</key>
<array>
<string>/usr/lib/cron/tabs</string>
</array>
<key>EnableTransactions</key>
<true/>
</dict>
</plist>
注意里面有个KeepAlive的条件是 /etc/crontab 是否存在:
<key>KeepAlive</key>
<dict>
<key>PathState</key>
<dict>
<key>/etc/crontab</key>
<true/>
</dict>
</dict>
所以呢,那就看看是否是因为这个 /etc/crontab 不存在导致 cron 里面的任务无法正常运行:
$ LaunchAgents ll /etc/crontab
ls: /etc/crontab: No such file or directory
果然,这个文件不存在。
那就创建吧!
$ sudo touch /etc/crontab
再试试 cron 任务是否成功启动... 果然能成功启动了!
target: how-to-enable-crontab-on-osx.md
date: 2015-12-16
status: publish
tags:
- OS X
- MAC
- crontab
- 定时任务
categories:
- OS X
- crontab
背景
本本上又一些东东是比较重要的,我使用了git进行管理,从而可以将其备份到某个git仓库上。可是鄙人喜欢偷懒,不喜欢老是手动执行备份的一系列命令,于是乎我就想到了写个备份脚本,想通过 crontab 来定期备份。
脚本写好了,也加了一条crontab:
# m h dom mon dow command
30 11,17 * * * /Users/clarence/bin/daily-backup
可是,为啥到点没有执行呢?
问了下度娘和谷哥,结果很多文章都是关于如何用OS X现在自带的 launchctl 来执行定时任务的。可是呢,鄙人这个脚本是像每天上午和下午都要执行的,用 launchctl 来搞的话有点嫌麻烦。故今天非要探究下如何启用crontab。结果不一会儿就找到了原因,现分享如下:
如何启用crontab
首先,既然OS X的定时任务统统都由 launchctl 来管理了,就看看 cron 任务有没有在里面:
$ LaunchAgents sudo launchctl list | grep cron
83968 0 com.vix.cron
果然在里面。那就检查下这个启动项的配置:
$ LaunchAgents locate com.vix.cron
/System/Library/LaunchDaemons/com.vix.cron.plist
$ LaunchAgents cat /System/Library/LaunchDaemons/com.vix.cron.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>com.vix.cron</string>
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/cron</string>
</array>
<key>KeepAlive</key>
<dict>
<key>PathState</key>
<dict>
<key>/etc/crontab</key>
<true/>
</dict>
</dict>
<key>QueueDirectories</key>
<array>
<string>/usr/lib/cron/tabs</string>
</array>
<key>EnableTransactions</key>
<true/>
</dict>
</plist>
注意里面有个KeepAlive的条件是 /etc/crontab 是否存在:
<key>KeepAlive</key>
<dict>
<key>PathState</key>
<dict>
<key>/etc/crontab</key>
<true/>
</dict>
</dict>
所以呢,那就看看是否是因为这个 /etc/crontab 不存在导致 cron 里面的任务无法正常运行:
$ LaunchAgents ll /etc/crontab
ls: /etc/crontab: No such file or directory
果然,这个文件不存在。
那就创建吧!
$ sudo touch /etc/crontab
再试试 cron 任务是否成功启动... 果然能成功启动了!
收工~
自己感觉:sudo touch /etc/crontab 这条命令最简单解决问题,但是具体原因和其他解决办法还是参考
https://superuser.com/questions/359580/error-adding-cronjobs-in-mac-os-x-lion 链接。
0 0
- 在MAC OS X上如何启用crontab?
- 如何在苹果系统(Mac OS X)上安装PyQt4
- 如何在苹果系统(Mac OS X)上安装PyQt4
- 如何在Mac os X上搭建本地服务器环境
- 如何在Mac OS X上安装 Ruby运行环境
- 如何在Mac OS X上安装 Ruby运行环境
- 如何在Mac OS X上安装 Ruby运行环境
- 如何在Mac OS X上安装 Ruby运行环境
- 如何在Mac OS X上安装 Ruby运行环境
- 如何在Mac OS X上安装 Ruby运行环境
- 如何在Mac OS X上安装 Ruby运行环境
- 如何在Mac OS X上安装 Ruby运行环境
- 如何在Mac OS X上安装 Ruby运行环境
- 如何在Mac OS X上安装 Ruby运行环境
- 如何在Mac OS X上安装 Ruby运行环境
- 如何在Mac OS X上安装 Ruby运行环境
- 如何在Mac OS X上安装 Ruby运行环境
- 如何在Mac OS X上安装 Ruby运行环境
- 互联网性能与容量评估的方法论和典型案例
- 前度构建工具gulp
- 工厂方法模式
- 164_集合_SortedSet_集合详解_01
- pom版本用原来的正式版本
- 在MAC OS X上如何启用crontab?
- C语言volatile用法,(没阅读,对错未知)
- C Language Standards Supported by GCC (GCC 支持的C语言标准)
- JAVA设计模式之单例模式
- javascript求1-100的平方和--三种实现方法
- Bootstrap VS Semantic VS Foundation 几个css框架比较
- Android 获取当前activity的屏幕截图
- 更改CMD默认的初始路径
- spring4学习记录02-spring AOP