Ubuntu系统下 使用crontab 执行虚拟环境下py文件错误之一

最近在做一个需要每分钟执行的python脚本监控流量,并且还需要在虚拟环境下执行,纠错了很久,总结一下crontab的整体使用方法:

0. 打开终端:

1. 查看crontab服务是否开启:

systemctl status cron.service

没有开启的话是用

sudo systemctl start cron.service

开启,或者查看下crontab的服务名称是不是cron.service(一般都是开启的)

2. 确认开启cron.service后,如果是用crontab触发用户级的命令,是用

crontab -e

cronotab -e是针对用户来设计的,如果是系统的例行性任务,需要编辑/etc/crontab这个文件,编辑完所有用户都会受其影响:

3. 错误重点在此:然后就是进入文件中进行编辑,cron的语法参考别的博文即可,我这里是需要每分钟触发,所以是* * * * * [command]

由于我以为需要先进入虚拟环境,所以就用了

* * * * * /home/user/anaconda3/bin/activate && python PATH_TO_py_file

的方式来每分钟触发进入虚拟环境然后执行python的方法,结果是就算后面加了重定向输出日志,也没看见日志的踪影。

从最后纠错结果来看,这里可能有两个错误:

第一个是用了 && 作为分隔符,虽然我看很多文章都这样写,但是我的系统就出现了错误,应该是使用 ; 作为分隔符

* * * * * [command1] ; [command2]

第二个是没有用绝对路径,包括python解释器。这里全部路径都用绝对路径是比较好的,包括python文件内涉及到文件名的话!

所以我改成

* * * * * PATH_TO_VIRTUAL_PYTHON PATH_TO_PY_file >> PATH_TO_LOG 2>&1 &

就好了!上面三个都是绝对路径:虚拟环境下的python解释器的路径;你要执行的py文件的路径;输出log的路径

(貌似直接用anaconda3虚拟环境文件夹下的python解释器就好了,甚至可以不用source激活虚拟环境,至少我是可以)

4. 如果还是有问题,那就先看看能不能启动cron服务,可以的话,在你的命令下面加一条每分钟的cron指令,找地方输出一个log,看看有什么问题

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值