首页 > 解决方案 > cron 输出到文件中

问题描述

设置:

在我的 gcp vm 实例中,我有以下 cron 作业:

*/2 * * * * /usr/bin/php /var/www/cron/mycron.php init >> /var/log/myjob 2>&1

mycron.php有一个简单的功能

if (!empty($argv[1])) {        
    switch ($argv[1]){
    case 'init':
        cron_test();
        break;
    }
}
function cron_test() {
    $time = date(DATE_RFC822, time());
    write_log("Start:" . $time);   //outputs debug to my own log file   
};

但是,我没有得到任何响应,我需要一种查看错误日志的方法:

我做了什么:

因此,在 中/etc/rsyslog.conf,我删除#cron.* /var/log/cron.log以获取日志。

cron.log我得到以下日志:

(CRON) info (No MTA installed, discarding output)` earlier).

所以,我安装sudo apt-get install postfix并选择了no configuration.

现在我得到以下...

mysite CRON[31304]: (mysite) CMD (/usr/bin/php /var/www/cron/mycron.php init >> /var/log/myjob 2>&1)
mysite CRON[31305]: (mysite) MAIL (mailed 64 bytes of output but got status 0x004b from MTA#012)

我想弄清楚的是:

我可以看到 cronjob 正在运行,但我想要运行的实际功能不是。我正在尝试查看日志文件中的错误(或输出),而不是收到有关它的电子邮件。

我可以做些什么来获取文件而不是电子邮件中的实际错误或输出日志?

任何帮助都感激不尽!

标签: loggingcron

解决方案


对于那些需要查看 cron 作业的错误日志的人:

  1. 删除 rsyslog 中 cron 中的 #

    • 可以rsyslog.conf通过 `sudo nano /etc/rsyslog.conf访问
  2. 安装后缀:sudo apt-get install postfix并选择local only并单击全部下一步

  3. 在 中crontab -e,选择您希望日志转到的文件:

    /var/log/user.log, 并将文件的权限更改为

      sudo chmod 775 -R /var/log
      sudo chmod 664 /var/log/user.log
    

然后当 cron 运行时,它会将任何问题输出到文件中。


推荐阅读