从shell脚本cron调用python脚本

时间:2017-10-13 11:25:01

标签: python bash shell cron

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

我提供了类似的python脚本路径 / usr / bin / python room_wise.py

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

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

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

您可以看到我添加了PATH,因为这有时可能是某些操作系统分发的问题。此外,该脚本与bash脚本位于同一目录中,或者如果修改bash脚本以将dirname包含为$ 1,则可以将目录位置作为参数传递。

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