You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BASH问题:CRONTAB命令拼接目录与生成文件名时报错

解决Crontab中命令输出写入指定目录日志文件的报错问题

报错原因

  1. 目标目录不存在:/var/log/cron/目录可能未创建,crontab执行时不会自动生成缺失的目录。
  2. 路径写法错误:原命令中用单引号包裹目录部分,导致后续的date命令替换无法被shell解析;同时文件名包含空格,未正确包裹整个路径引发解析错误。

解决方案

步骤1:确保目标目录存在

先手动创建目录(若已存在可跳过):

mkdir -p /var/log/cron

如果需要在crontab中自动确保目录存在,可将创建目录的命令与执行命令合并:

mkdir -p /var/log/cron && php artisan mycommand:test >> "/var/log/cron/$(date +"%Y-%m-%d %H:%M:%S").log"

步骤2:修正日志路径的写法

推荐使用$()代替反引号(更易读且避免嵌套问题),并用双引号包裹整个路径,确保shell能正确解析命令替换和空格:

php artisan mycommand:test >> "/var/log/cron/$(date +"%Y-%m-%d %H:%M:%S").log"

如果你的需求是每日一个日志文件(而非每次执行生成带时分秒的文件),可以简化为:

php artisan mycommand:test >> "/var/log/cron/command-logs-$(date +"%Y-%m-%d").log"

额外注意事项

crontab的环境变量PATH通常比较有限,建议使用php的绝对路径(比如/usr/bin/php),避免因找不到php命令导致执行失败:

/usr/bin/php /path/to/your/project/artisan mycommand:test >> "/var/log/cron/command-logs-$(date +"%Y-%m-%d").log"

内容的提问来源于stack exchange,提问作者herostoky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 19:33:32