[CentOS]Crontab定时执行python无效解决过程

买了阿里云ECS,部署好后打算定时执行python程序

  • 首先,制定计划
crontab -e
  • 进入vim模式
命令 作用
s 插入字符
:wq 保存退出
:q 不保存退出
Esc 退出当前命令

每天8点执行,填写绝对路径

00 8 * * * /usr/bin/python3 /root/test.py
  • 检查是否添加成功
crontab -l
  • 检查服务状态
service crond status

正常显示 active(running)

此时,到指定时间程序没有任何反应,开始排查


  • 先按网上的办法,查看日志
tail /var/log/cron

报错信息为

MAIL (mailed 54 bytes of output but got status 0x004b#012)

然后

cat /var/log/maillog

提示没有log文件,不过现在知道了计划有运行过,再尝试其他办法

  • 切换到python程序目录,赋予可执行权限
chmod a+x test.py

更改配置文件

vim /etc/postfix/main.cf

inet_interfaces=localhost改为inet_interfaces=all

此时不再报错,但依然无效

  • 编辑python文件头部
#!/usr/bin/python3
# -- coding: utf-8 -
  • 无效,于是重定向输出日志
00 8 * * * /usr/bin/python3 /root/test.py 2>>/home/log

原因为python程序内引用的变量含有相对路径,
交给Crontab就无法识别了,
全部更改为绝对路径后正常执行

你可能感兴趣的:(其他)