我尝试使用运行python3脚本的crontab运行一个shell脚本。crontab用于用户组。现在,它运行脚本,但不运行其中的python3脚本。我试着调试它,但我不知道会发生什么。可能是权限问题或路径问题,但我不知道。这是crontab行
*/5 * * * * /home/group_name/path/to/script/run.sh正如我所说的,cron作业是执行的,或者至少我是这么想的,因为当我运行sudo grep CRON /var/log/syslog时,我得到的行如下
Feb 16 20:35:01 ip-**-**-*-*** CRON[4947]: (group_name) CMD (/home/group_name/path/to/script/run.sh)在下面,我还得到了一条可能与问题有关的线
Feb 16 20:35:01 ip-**-**-*-*** CRON[4946]: (CRON) info (No MTA installed, discarding output)最后,run.sh看起来像这样
#!/bin/bash
# get path to script and path to script directory
SCRIPT=$(readlink -f "$0")
SCRIPTPATH=$(dirname "$SCRIPT")
echo "set directory"
cd "$SCRIPTPATH"
echo "run first script"
/usr/bin/python3 ./first_script.py > ./log1.txt但是,当cron作业执行时,什么都不会发生,当我手动运行它时,数据库的cahnges就会按预期发生。这个组织和我一样有同样的权利。shell文件可以由我执行,而这个组和python文件不能由我执行,所以我不知道这个组为什么需要这样做。
PS:我想在shell中执行python脚本,因为我们有很多脚本,有时有很多参数,因此crontab会过度填充,有些脚本必须按照一定的顺序执行。
编辑:每次我手动运行exec >> /tmp/output 2>&1时,都会在#! /bin.bash将回显写入/tmp/output之后添加它,但在运行任何python脚本之前都不会在cron中运行它。
直接从cron运行一个python脚本可以工作,但是即使我将与cron中的脚本完全相同的一行粘贴到shell文件中,也不会发生任何事情。
发布于 2018-02-16 20:56:24
bash脚本中的最后一行包含相对路径(./),我认为这就是问题所在
https://stackoverflow.com/questions/48834638
复制相似问题