开发环境: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




    Label
    com.vix.cron
    ProgramArguments
    
        /usr/sbin/cron
    
    KeepAlive
    
        PathState
        
            /etc/crontab
            
        
    
    QueueDirectories
    
        /usr/lib/cron/tabs
    
    EnableTransactions
    

注意里面有个KeepAlive的条件是 /etc/crontab 是否存在:

KeepAlive
    
        PathState
        
            /etc/crontab
            
        
    

所以呢,那就看看是否是因为这个 /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 (删除工作作)