温馨提示×

怎样调试debian crontab

小樊
65
2026-10-08 03:57:27
栏目: 智能运维

在 Debian 上调试 crontab 通常可以按下面几个步骤来做,从“看日志”到“模拟执行”,基本能解决 90% 的问题。


一、确认 cron 服务在运行

systemctl status cron

如果没运行:

sudo systemctl start cron
sudo systemctl enable cron

二、查看 cron 日志(最重要)

Debian 默认使用 rsyslog,cron 日志通常在:

sudo tail -f /var/log/syslog | grep CRON

或(某些版本):

sudo tail -f /var/log/cron.log

如果 没有 cron 日志,需要开启:

sudo nano /etc/rsyslog.conf

确保有这一行(去掉注释):

cron.*  /var/log/cron.log

然后:

sudo systemctl restart rsyslog

三、测试 cron 是否真的执行

在 crontab 里加一行测试:

* * * * * echo "cron test $(date)" >> /tmp/cron_test.log

等一分钟看:

cat /tmp/cron_test.log

✅ 有内容 → cron 正常
❌ 没内容 → cron 没运行或用户不对


四、常见坑(非常关键)

1️⃣ 环境变量问题(最常见)

cron 的环境非常“干净”,没有 PATH、HOME 等。

✅ 正确写法:

* * * * * /usr/bin/python3 /home/user/script.py >> /tmp/log 2>&1

❌ 错误写法:

* * * * * python3 script.py

建议在脚本里写死路径,或在 crontab 顶部加:

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

2️⃣ 用户问题

  • crontab -e → 当前用户
  • 系统级:/etc/crontab(需要指定用户)
* * * * * root /root/script.sh

查看当前用户的任务:

crontab -l

3️⃣ 权限问题

确保脚本可执行:

chmod +x script.sh

五、手动模拟 cron 环境(高级调试)

env -i /bin/bash --noprofile --norc

然后在里面运行你的命令,看是否报错。


六、调试脚本本身

在脚本里加:

set -x
exec >> /tmp/script.log 2>&1
date

七、推荐调试流程总结

  1. ✅ 看 systemctl status cron
  2. ✅ 看 /var/log/syslog | grep CRON
  3. ✅ 用 echo 测试 cron 是否执行
  4. ✅ 写绝对路径
  5. ✅ 重定向输出 >> log 2>&1

如果你愿意,可以把 你的 crontab 内容 + 脚本路径 + 现象 发出来,我可以直接帮你定位问题。

0 踩