logging - 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 正在运行,但我想要运行的实际功能不是。我正在尝试查看日志文件中的错误(或输出),而不是收到有关它的电子邮件。
我可以做些什么来获取文件而不是电子邮件中的实际错误或输出日志?
任何帮助都感激不尽!
解决方案
对于那些需要查看 cron 作业的错误日志的人:
删除 rsyslog 中 cron 中的 #
- 可以
rsyslog.conf
通过 `sudo nano /etc/rsyslog.conf访问
- 可以
安装后缀:
sudo apt-get install postfix
并选择local only
并单击全部下一步在 中
crontab -e
,选择您希望日志转到的文件:如
/var/log/user.log
, 并将文件的权限更改为sudo chmod 775 -R /var/log sudo chmod 664 /var/log/user.log
然后当 cron 运行时,它会将任何问题输出到文件中。
推荐阅读
- roles - Add a new firebird-db user with acces to specific tables?
- jquery - FadeOut JQuery 函数不适用于每个对象
- html - Trying to get property 'name' of non-object when trying to click next page using pagination
- oracle - 在 Oracle 11 中识别系统表
- c# - 如何以一种更简洁、更短、更高效的方式编写具有空值检查的哨兵循环?
- notepad++ - 删除从 > 到在记事本++中使用正则表达式的所有行
- fortran - 在无效操作中返回 NaN (gfortran)
- javascript - 我可以在其他两个函数中调用相同的函数吗?
- actframework - actframework 无法使用 $.merge 保存在数据库中
- excel - 从 excel 电子表格复制到 Blazor 应用程序