我有一个 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
您可以看到我添加了 PATH,因为这有时可能是某些操作系统发行版的问题。此外,该脚本与 bash 脚本存在于同一目录中,或者如果您修改 bash 脚本以将目录名包含为 $1,则可以将目录位置作为参数传递。
您还可以看到我已将所有输出定向到日志文件。这是一个非常好的主意,因为如果出现问题,有时很难调试进程。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)