从shell脚本调用python脚本cron
我有一个shell脚本cron从同一个目录调用python脚本,但是当这个cron正在执行时,我没有从我的python脚本得到预期的输出,当我手动执行它时,我的python脚本的输出如预期的那样。从shell脚本调用python脚本cron
我已经提供了Python脚本路径像 在/ usr/bin中/ Python的room_wise.py
,并给出了shell脚本的所有外壳PARAMS以及但是我的Python脚本没有使用shell脚本的cron调用。
任何人都可以帮助我吗?
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,则可以将目录位置作为参数传递。
此外,您可以看到我已将所有输出定向到日志文件。这是一个非常好的主意,因为如果出现问题,调试过程有时非常困难。
如果你还没有这样做,记得在你的python脚本的开头添加#!/ usr/bin/env python。从cron中的bash脚本执行软件时,这也是一个很重要的方面。 –
管线末端的'2>&1'线做了什么? –
你有没有试过'/ usr/bin/python/path/to/room_wise.py'? – Nepho
是的@Nepho,我已经尝试了这两个东西, – Sid
是否按预期方式输出了'which/python'/usr/bin/python'? – Nepho