记录一个crontab的中使用python脚本的坑

问题表现:java

每次手动执行这个python脚本运行,程序工做的很好,可是若是是经过crontab的方式来运行,就会有各类问题!python

处理:bash

*/15 * * * * sh /root/app/crypt/start.sh >> /root/app/crypt/res.log 2>&1app

发现了原来脚本中使用的路径用了相对的路径,修改成绝对路径后就正常跑crontab了。须要添加2>&1才能看到这段错误信息。spa

 command >> file 2>&1 是什么?debug

这也是今天在尝试让crontab打印出错误信息才学到的东西。blog

先说说下面的命令的意思:继承

command >> file 2>>filecrontab

这是说:正常的输出信息会添加到file之中,错误信息也会添加到file之中,可是是两个文件管道FD1跟FD2同时在抢,而且可能产生互相覆盖的现象配置

command >> file 2>&1

就不太同样了:首先正常的输出(到屏幕)信息会经过管道FD1会添加到file之中,错误信息会继承FD1也添加到file 之中。

当crontab命令加上这个后缀(2>&1) 以后,个人debug.log 之中终于出现以下图所示的错误信息(sh: l: java not found),也终于找到了解决问题的方向。

 

其余问题的解决方案:

解决方案 – 1 :加强型crontab

在crontab的命令里面增长source /path/to/configfile. 好比咱们的java是配置到/etc/profile之中,那么个人crontab命令就是:

* * * * source /etc/profile; cd XXXX && pythontask.py >> ~/debug.log 2>&1

可是发现这种方式在个人环境并没起做用

解决方案 – 2 : bash脚本出马

这种方式须要在增长一个bash脚原本调用python命令。参考下面:

#!/bin/bash
source /etc/profile
pythontask.py
相关文章
相关标签/搜索