摘要:备份、日志切割、Shell 脚本在宝塔「计划任务」里失败时,先读任务日志与日志路径,再核对脚本权限、crond 服务、磁盘与 inode。依据宝塔官方文档与计划任务 API;查询日期 2026-11-07。affiliate_later。不写证书续期。
依据:宝塔面板计划任务 cron 设置指南、计划任务 API 概览、获取计划任务的执行日志、获取计划任务的日志存储路径。查询日期:2026-11-07(北京时间)。只放官网普通链接(
affiliate_later)。面板菜单名以你安装的版本为准。
证书快过期、续期报错,见本站 Let's Encrypt 续期失败与回滚;WordPress 自己的 WP-Cron 积压,见 WP-Cron 与系统 cron。本文只处理宝塔「计划任务」已经失败或看起来没跑的现场:读日志 → 查权限与路径 → 查磁盘 → 修 crond。

1. 先分清:没跑到,还是跑了但失败
登录宝塔 → 左侧 计划任务,找到那条任务:
- 看任务是否仍为启用状态(被禁用的不会到点执行)。
- 点该任务的 日志(面板会读出执行输出;官方 API 对应
action=GetLogs,无内容时常见提示「当前日志为空!」)。 - 需要落到文件时,用日志路径接口或在服务器上查面板生成的日志文件(常见在
/www/server/cron/一带,带.log后缀;以get_log_path返回或你机器实际路径为准)。
| 你看到的现象 | 多半卡在哪 | 先做的核对 |
|---|---|---|
| 日志为空,到点也没有任何新文件 | crond 没起来、任务被禁用、或脚本根本没被调用 | systemctl status crond(或 cron);面板任务开关;稍后 API 列表里的 get_crontab_service / repair_crontab_service |
| 有日志,里面是 Permission denied / 找不到命令 | 权限、解释器路径、cron 精简环境变量 | 脚本 chmod +x;命令写绝对路径;脚本头补 PATH |
| 有日志,备份/写文件报 No space / disk quota | 磁盘或 inode 满 | df -h、df -i;清备份保留份数、日志切割保留数 |
| 手动能跑、定时失败 | 工作目录或环境变量不同 | 脚本内全部改绝对路径;开头 source /etc/profile 或写死 PATH |
| 面板显示成功但业务没变化 | 脚本静默成功、写到了别的目录 | 临时加 echo/set -x,或命令末尾 2>&1 把错误收进日志 |
官方《计划任务 cron 设置指南》写明:提交前先确认脚本内容正确,否则会执行失败;Shell 任务还禁止 shutdown、init 0、mkfs、passwd、chpasswd、--stdin、mkfs.ext、mke2fs 等危险命令。备份类任务可配备份提醒 / 消息通道,失败时告警(文档链到「配置告警消息通道」)。

action=GetLogs,按任务 id 取日志内容(2026-11-07 截图)2. 权限与路径:现场最高频
按这个顺序,改一项看一眼日志:
- 脚本是否可执行
ls -l /你的脚本路径;没有 x 就 chmod +x。Python/PHP 任务写清解释器绝对路径,例如 /www/server/php/81/bin/php、/usr/bin/python3。
- 计划任务里的命令是否用绝对路径
cron 的工作目录不稳定。cd 进项目再跑相对路径,在 SSH 里成功、在定时里失败很常见。
- 以哪个系统用户跑
面板若可选运行用户,确认该用户对网站目录、备份目录有写权限;不要假设一定是 root 环境与你 SSH 登录时完全一致。
- Windows 编辑留下的 CRLF
日志里若出现 $'\r': command not found,用 dos2unix 转成 LF 后再挂回任务。
- 改完任务后
个别版本改完计划任务需要确认 crond 仍在跑;官方 API 提供 repair_crontab_service,面板侧也可在「计划任务」相关入口排查服务状态(以你版本菜单为准)。
备份网站/数据库时,文档写明默认可把文件落到 /www/backup/site、/www/backup/database 等路径,也可存到已安装的对象存储插件。保留份数默认常见为 3(日志切割类默认保留份数可到百级,以表单为准)。保留份数开太大 + 磁盘小,下一次备份就会在日志里报空间不足。
3. 磁盘与 inode:日志写不进去时
备份失败、日志一直空、或面板提示写入失败时,SSH 里先跑:
df -h
df -i
du -sh /www/backup/* 2>/dev/null
ls -lt /www/server/cron/ 2>/dev/null | head
核对项:
- 根分区或
/www挂载点使用率是否到 100%。 - inode 是否用尽(小文件极多的日志切割目录常见)。
- 备份保留份数:在任务编辑里下调保留数,删掉过期包后再手动执行一次。
- 日志切割任务:文档说明切割后会在所选目录下出现
history_backups;长期不清理会占满盘。 - 对象存储插件:若备份目标选了 OSS/COS 等,还要查插件凭证与远端桶是否可写,别只盯着本机磁盘。
整站备份策略与对象存储演练,可对照 网站定期备份、对象存储整站备份。

get_log_path 返回 log_path 与 size(2026-11-07 截图)4. crond 服务与任务类型
宝塔计划任务底层仍依赖系统 cron。官方 API 概览里除了增删改任务,还列了:
get_crontab_service:查 crond 服务状态repair_crontab_service:修复 crondGetLogs/get_log_path/download_logs:读、定位、导出日志set_execute_script:手动触发脚本(排障时用来对比「手动」与「到点」)
SSH 侧可先:
systemctl status crond || systemctl status cron
systemctl enable crond 2>/dev/null
systemctl restart crond 2>/dev/null
(发行版服务名可能是 cron 或 crond,以 status 能查到的为准。)
任务类型按官方添加页与 API:Shell、访问 URL、备份网站/数据库/目录、日志切割、释放内存、木马查杀等。排障时先确认你改的是同一条任务,而不是建了条新的「测试」却看着旧任务的日志。

5. 失败现场核对清单
- 记下任务名称、类型、执行周期,确认是启用状态。
- 打开面板「日志」;空则查
get_log_path//www/server/cron/下是否有新.log。 df -h与df -i;备份保留份数是否过大。- 脚本权限、绝对路径、解释器路径;必要时
dos2unix。 - 手动执行同一条命令;成功则查 crond 与环境变量。
systemctl status crond(或cron);异常时再考虑面板/API 的修复入口。- 修好后把周期临时改为较短间隔验证一次,再改回正式周期;需要时打开备份失败消息通道。
面板本身的暴露面与加固,见 宝塔面板优缺点与安全注意。404/502 与 CDN,见 网站 404/502 排查清单。
相关阅读
- 宝塔面板要不要装:优缺点与安全注意
- 网站定期备份方案:数据库与文件自动备份
- WordPress 定时任务与 WP-Cron:禁用、系统 cron 与积压排查
- 免费 SSL 续期失败:Let's Encrypt 常见报错与回滚
- 用对象存储做整站备份:同步、生命周期与恢复演练
官方来源(查询日期 2026-11-07,北京时间)
- 宝塔文档:计划任务 cron 设置指南(添加步骤、脚本预检、危险命令黑名单、备份路径与保留份数、失败提醒)
- 宝塔 API:计划任务概览、GetLogs、get_log_path
风险提示:在生产机上重启 cron、删备份、改脚本权限前先确认业务窗口;错误的 chmod/chown 可能导致网站无法写上传目录。本文不构成运维托管或安全审计承诺。