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

Cron任务日志出现“No space left on device”错误但实际存储空间充足的排查求助

Cron任务日志出现“No space left on device”错误但实际存储空间充足的排查求助

我来帮你捋捋这个问题,先看你提供的日志细节:

--2022-12-09 19:32:08-- https://www.example.com/dosomething.php
Resolving www.example.com (www.example.com)... x.x.x.x
Connecting to www.example.com (www.example.com)|x.x.x.x|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 0 [text/html]
dosomething.php.962181: No space left on device
Cannot write to 'dosomething.php.962181' (Success).

这里有个关键细节你可能没注意到:wget默认会把下载的文件保存到当前工作目录,而不是你指定日志的/var/log目录!你用df和df -i检查的大概率是/var所在分区,但cron任务默认的工作目录是执行该任务的用户的home目录(比如/home/cesar),问题很可能出在这个home目录所在的分区——要么空间满了,要么inode耗尽了。

给你几个排查和解决的具体思路:

  • 先检查cron工作目录的状态:执行df ~和df -i ~,看看这个用户home目录所在分区的存储空间和inode是不是真的耗尽了。
  • 调整wget命令,避免生成临时文件:因为你只是要触发这个PHP脚本执行,根本不需要保存下载的文件内容,直接改成下面的命令就行:
    * * * * * wget -O - https://www.example.com/dosomething.php >> /var/log/myjob.log 2>&1
    
    这里-O -表示把下载的内容输出到标准输出,再重定向到日志文件,wget就不会在工作目录生成dosomething.php.xxxxxx这类临时文件,自然就不会触发空间错误了。
  • 手动验证问题:切换到cron的工作目录(比如执行cd ~),然后尝试创建一个测试文件touch test.txt,如果提示“No space left on device”,那实锤就是这个目录的空间/配额问题。
  • 检查用户磁盘配额:有些服务器会给单个用户设置磁盘配额,哪怕分区整体有空间,用户配额用完也会报错,你可以用quota -u $(whoami)查看自己的配额使用情况。

备注:内容来源于stack exchange,提问作者Cesar Bielich

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 07:34:11