开发环境:mac. 有时需要使用laravel 启动定时任务。
执行命令
crontab -e
输入
*/1 * * * * /bin/date >> /Applications/MAMP/htdocs/match/time.txt
*/1 * * * * php /Applications/MAMP/htdocs/match/artisan schedule:run
但是没有得到需要的结果. 这时需要启动crontab 如何启用crontab 首先,既然OS X的定时任务统统都由 launchctl 来管理了,就看看 cron 任务有没有在里面:
$ LaunchAgents sudo launchctl list | grep cron
83968 0 com.vix.cron
果然在里面。那就检查下这个启动项的配置:
➜ ~ locate com.vix.cron
WARNING: The locate database (/var/db/locate.database) does not exist.
To create the database, run the following command:
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
Please be aware that the database can take some time to generate; once
the database has been created, this message will no longer appear.
database 不存在啊,那就创建一个吧。
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
// 这个指令会花费一定时间
再执行
locate 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 任务是否成功启动... 果然能成功启动了!
crontab的一些用法
crontab [-u username] //省略用户表表示操作当前用户的crontab -e (编辑工作表) -l (列出工作表里的命令) -r (删除工作作)