DigitalOcean Droplet中Cron任务无法以root身份运行问题排查
问题排查与修复步骤
1. 修正Cron时间表达式
你当前的Cron配置1 * * * *是每小时的第1分钟执行一次,并非每分钟运行。要实现每分钟执行,需修改为:
* * * * * /usr/local/bin/bash /root/test.sh >/root/crontest.log 2>&1
2. 修复Shell路径错误
任务里写的/user/local/bin/bash是错误路径,正确路径为/usr/local/bin/bash(是usr而非user)。此外,脚本已赋予执行权限,也可直接调用脚本路径:
* * * * * /root/test.sh >/root/crontest.log 2>&1
3. 检查Cron服务状态
确认Cron服务处于运行状态:
systemctl status cron # 旧版系统使用 service cron status
若服务未运行,启动并设置开机自启:
systemctl start cron systemctl enable cron
4. 修复脚本中的mkdir错误
脚本里的mkdir "/karan/washere"会因/karan父目录不存在而失败,添加-p参数自动创建父目录:
#! /bin/bash echo "hello" mkdir -p "/karan/washere"
5. 检查Cron日志位置
部分系统的Cron日志不写入/var/log/syslog,而是单独存放在/var/log/cron,直接查看该文件:
cat /var/log/cron
若文件不存在,检查rsyslog配置是否启用Cron日志:
打开/etc/rsyslog.d/50-default.conf,确保存在以下配置:
cron.* /var/log/cron
之后重启rsyslog服务:
systemctl restart rsyslog
6. 验证Cron任务是否正确添加
查看当前root用户的Cron任务列表:
crontab -l
若你是直接编辑/etc/crontab系统级文件,需在时间表达式后指定root用户:
* * * * * root /root/test.sh >/root/crontest.log 2>&1
内容的提问来源于stack exchange,提问作者Karan Janthe
相关产品推荐
相关产品推荐

