linux crontab 使用conda env 运行 python脚本 不生效 怎么解决

news/2024/11/17 21:22:21/

写了一个python脚本,想每天定时运行,但是任务一直没有开始,脚本里的都是绝对路径,命令行是能正常运行的,查阅各种资料一步步排查。

最初的crontab 定时任务命令是:

# m h d mon w command
30 9 * * * python /root/tmp/a.py >> /root/tmp/a.log

1. 检查服务是否已开启

service crond status

显示Active: active (running),说明服务已经正常开启

2.检查配置是否已正常载入

crontab -l

显示有我写的任务,说明cron也载入了我的任务

3.怀疑系统时间不对,date命令看系统时间也是对的,还是改为1分钟执行一次测试一下

*/1 * * * * python /root/tmp/a.py >> /root/tmp/a.log

还是没有正常结果输出

4.查看 cron 运行日志

tail /var/log/cron

也能找到我这个脚本的python执行命令,和执行时间,排除时间问题

5.查看邮件错误日志在/var/spool/mail/路径下对应的账户名

tail /var/spool/mail/root

终于找到了程序报错的详细信息,提示库没安装,说明cron用的python路径不对,在python脚本文件的第一行,写明pythoh的路径,#!/root/miniconda3/bin/python,还是报同样的错误,说明conda env环境没激活

6.crontab -e改命令。第一行将crontab的解释器改成bash,不然cron没法用source命令。第二行指定conda安装路径。第三行激活conda的base环境后运行,脚本运行结束关闭使用base环境。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/root/miniconda3/bin:/root/miniconda3/condabin
*/1 * * * * source activate base; python /root/tmp/a.py >> /root/tmp/debug.log; conda deactivate

可以正常运行了,最后改为每天9点30运行。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/root/miniconda3/bin:/root/miniconda3/condabin
30 9 * * * source activate base; python /root/tmp/a.py >> /root/tmp/a.log; conda deactivate


http://www.ppmy.cn/news/40994.html

相关文章

【设计模式之美 设计原则与思想:规范与重构】36 | 实战二(上):程序出错该返回啥?NULL、异常、错误码、空对象?

我们可以把函数的运行结果分为两类。一类是预期的结果,也就是函数在正常情况下输出的结果。一类是非预期的结果,也就是函数在异常(或叫出错)情况下输出的结果。比如,在上一节课中,获取本机名的函数&#xf…

【Golang Mac环境安装教程】

Golang Mac 安装教程 1.使用Homebrew安装 Homebrew是Mac下一个流行的软件包管理器,有良好的国内源支持。以下是使用Homebrew安装Golang的命令: 安装Homebrew /bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/i…

C++总结(二)

二叉搜索树(搜索二叉树、二叉排序树) 二叉搜索树又称二叉排序树,它要么是一棵空树,要么是具有以下性质的二叉树: 1.若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 2.若它的右子树不为空,则右子树所有节点的值都大于根节点的值 3.它的左右子树也分别为二叉…

【跟着陈七一起学C语言】今天总结:C语言的输入/输出相关知识

友情链接:专栏地址 知识总结顺序参考C Primer Plus(第六版)和谭浩强老师的C程序设计(第五版)等,内容以书中为标准,同时参考其它各类书籍以及优质文章,以至减少知识点上的错误&#x…

python 变量类型标注

目录 一、概述 1、描述 2、常用的数据类型 3、mypy模块 二、使用 1、基本使用 2、函数参数返回值添加类型标注 1. 指定多个参数的方式 2. Callable 3. Iterator 2、混合类型检查改进 1.联合运算符 3、类型别名更改 一、概述 1、描述 变量类型注解是用来对变量和函…

matplotlib 齐次坐标系 绘制 2D 闪烁斑点

绘制闪烁的斑点群,需要考虑几个群体属性:群体的生成位置 (xylim),斑点数量 (n),斑点的半径均值 (r),斑点的寿命均值 (delta) 而对于每一个斑点,又需要考虑斑点个体属性:出生时间 (start)、出生位…

Makefile学习6 - 条件判断

一. 前言 条件判断语句可以根据一个变量的值来控制make执行或者忽略Makefile的特定部分。条件语句可以是两个不同变量或者变量与常量值的比较。条件语句只能用于控制make实际执行的Makefile文件部分,不能控制规则的shell的执行过程。Makefile使用条件控制可以做到处…

Java知识点学习(第5天)

重载和重写的区别 重载:发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同、方法返回值和访问修饰符可以不同,发生在编译的时候。 重写:发生在父子类中,方法名、参数列表必须相同&#…