Crontab 中生成的文件为空

Posted

技术标签:

【中文标题】Crontab 中生成的文件为空【英文标题】:Generated file in Crontab is empty 【发布时间】:2016-03-28 16:43:37 【问题描述】:

我需要这方面的帮助。 crontab 正在运行 Artisan 命令来分析日志文件并生成 html 格式的报告。

这是 crontab 正在执行的命令中的代码行:

$today = date("d/M/Y");
exec('grep "$today" /path_to_logfile | goaccess -a > /path_of_generated_HTML_file');
exit();

不幸的是,cron生成的文件是空的,但是当你直接在终端中执行相同的代码时,它会成功生成一个html文件。感谢你们的帮助。

【问题讨论】:

很可能您对 PATH 变量有疑问。我会假设 cron 中的代码(特别是“goaccess”)不在 PATH 中。 【参考方案1】:

这很可能是因为您的PATHcrontab 下运行时配置不正确。对于crontab 的大多数实现,您只需在使用crontab -e 打开的crontab 文件的第一行指定PATH

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

如果您愿意,也可以在 php 中设置路径:

<?php

putenv('PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin');

$today = date("d/M/Y");
exec('grep "$today" /path_to_logfile | goaccess -a > /path_of_generated_HTML_file');
exit;

【讨论】:

以上是关于Crontab 中生成的文件为空的主要内容,如果未能解决你的问题,请参考以下文章

Linux crontab调用脚本中的ifconfig命令返回为空

您如何在 crontab 中取消设置 MAILTO?

Linux----------crontab计划任务的各种坑

Linux-crontab

crontab 例行任务

linux下使用crontab定时执行脚本