linux-crontab执行脚本不生效

本文讲述了如何排查脚本定时任务在Ubuntu上不执行的问题,涉及cron.log配置、邮件服务器和环境变量设置,以及如何通过调整rsyslog和crontab找到并修复了aws命令未找到的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、现象

正常运行的脚本放在定时任务里却不能正常执行了

50 1 * * 4 /usr/bin/python3 /python_project/tiup_bak.py >> /python_project/logs/tiup_bak.out

二、排查与解决

因为ubuntu的cron.log不是自动开启的,所以这里需要调整下

1.编辑配置文件

vim /etc/rsyslog.d/50-default.conf 

2.开启cron.log

cron.*              /var/log/cron.log #将cron前面的注释符去掉

3.重启rsyslog

sudo  service rsyslog  restart 

4.查看定时任务日志的内容

crontab[9784]: (tidb) BEGIN EDIT (tidb)
crontab[9784]: (tidb) REPLACE (tidb)
crontab[9784]: (tidb) END EDIT (tidb)
cron[1084]: (tidb) RELOAD (crontabs/tidb)
CRON[9958]: (tidb) CMD (/usr/bin/python3 /python_project/tiup_bak.py >> /python_project/logs/tiup_bak.out)
CRON[9957]: (CRON) info (No MTA installed, discarding output)
CRON[10287]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)

这里No MTA installed是因为crontab执行脚本时是不会直接错误的信息输出,而是会以邮件的形式发送到你的邮箱里,这时候就需要邮件服务器了,如果你没有安装邮件服务器,它就会报这个错,这块是因为我的输出方式写错了,换成下面这么写就写

50 1 * * 4 /usr/bin/python3 /python_project/tiup_bak.py >> /python_project/logs/tiup_bak.out 2>&1

5.查看输出日志

经由上面的改动,输出日志便可以正常输出信息,所以看到了如下信息

sh: 1: aws: not found

这个就很容易理解了,要么是没有安装aws客户端,要么是代码里没有有全路径,因为crontab执行时所开启的子shell的环境变量里并没有aws的信息,所以需要写全路径,或者加全局变量,将脚本里的aws命令改写为如下全路径方式即可成功

/usr/local/bin/aws
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值