从shell脚本cron调用python脚本

从shell脚本cron调用python脚本,python,bash,shell,cron,Python,Bash,Shell,Cron,我有一个shell脚本cron,它从同一个目录调用一个python脚本,但是当这个cron执行时,我没有从我的python脚本中获得预期的输出,当我手动执行它时,我的python脚本的输出与预期的一样 我提供了python脚本路径,如 /usr/bin/python room_wise.py 并且在shell脚本中也给出了所有shell参数,但仍然没有使用shell脚本cron调用我的python脚本 有人能帮我吗?cron作业中的大问题是绝对目录位置和相对目录位置。您需要首先拆分出相对路径,如

我有一个shell脚本cron,它从同一个目录调用一个python脚本,但是当这个cron执行时,我没有从我的python脚本中获得预期的输出,当我手动执行它时,我的python脚本的输出与预期的一样

我提供了python脚本路径,如 /usr/bin/python room_wise.py

并且在shell脚本中也给出了所有shell参数,但仍然没有使用shell脚本cron调用我的python脚本


有人能帮我吗?

cron作业中的大问题是绝对目录位置和相对目录位置。您需要首先拆分出相对路径,如图所示

#!/usr/bin/env bash
dirName=`dirname $0`
baseName=`basename $0`
arg1=$1
arg2=$2
cd ${dirName} && python ./room_wise.py arg1 arg2
然后使用crontab-e向用户cron作业添加项,并添加以下内容:

PATH=/usr/bin:/bin:/sbin
30 00 * * * /my/directory/containing/room_wise_py.sh arg1 arg2 > /my/directory/containing/output.log 2>&1
您可以看到,我添加了路径,因为某些操作系统发行版有时会出现问题。此外,该脚本与bash脚本存在于同一目录中,或者如果修改bash脚本以将dirname包含为$1,则可以将目录位置作为参数传递


您还可以看到,我已将所有输出定向到日志文件。这是一个非常好的主意,因为如果出现问题,调试过程有时会非常困难。

您是否尝试过
/usr/bin/python/path/to/room_-wise.py
?是的@Nepho,我已经尝试了这两种方法,是
哪个python
/usr/bin/python的输出吗?是的,要添加的是/usr/bin/pythonRemember/如果尚未执行此操作,请在python脚本的开头使用usr/bin/env python。这也是从cron中的bash脚本执行软件时要正确处理的一个重要方面。
2>&1
行在管道末尾做了什么?@3pitt它还将错误输出重定向到先前指定的日志文件