首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在crontab的shell脚本中使用python3

在crontab的shell脚本中使用python3
EN

Stack Overflow用户
提问于 2018-02-16 20:48:23
回答 6查看 3.4K关注 0票数 11

我尝试使用运行python3脚本的crontab运行一个shell脚本。crontab用于用户组。现在,它运行脚本,但不运行其中的python3脚本。我试着调试它,但我不知道会发生什么。可能是权限问题或路径问题,但我不知道。这是crontab行

代码语言:javascript
复制
*/5 * * * * /home/group_name/path/to/script/run.sh

正如我所说的,cron作业是执行的,或者至少我是这么想的,因为当我运行sudo grep CRON /var/log/syslog时,我得到的行如下

代码语言:javascript
复制
 Feb 16 20:35:01 ip-**-**-*-*** CRON[4947]: (group_name) CMD (/home/group_name/path/to/script/run.sh)

在下面,我还得到了一条可能与问题有关的线

代码语言:javascript
复制
Feb 16 20:35:01 ip-**-**-*-*** CRON[4946]: (CRON) info (No MTA installed, discarding output)

最后,run.sh看起来像这样

代码语言:javascript
复制
#!/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文件中,也不会发生任何事情。

EN

Stack Overflow用户

发布于 2018-02-16 20:56:24

bash脚本中的最后一行包含相对路径(./),我认为这就是问题所在

票数 1
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48834638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档