gpt4 book ai didi

python - 在 crontab 的 shell 脚本中使用 python3

转载 作者:太空狗 更新时间:2023-10-29 18:05:13 26 4
gpt4 key购买 nike

我尝试使用运行 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 每当我手动运行它时,但当我在 cron 中运行它时,甚至在运行任何 python 脚本之前都不会。

直接从 cron 运行 python 脚本之一是可行的,但是即使我将与在 cron 中运行的完全相同的行复制粘贴到 shell 文件中,也没有任何反应。

最佳答案

这个问题有很多组成部分。我忽略了 MTA 错误,因为这只是您的 cron 作业完成时的电子邮件通知。我还假设您已正确设置权限,并且您的脚本在 shell 中手动运行时运行良好。

最大的问题是 CRON 命令与从终端“shell”运行命令不同。您必须指定您的脚本使用 bash 运行。更改您的 cron 作业:

*/5 * * * * /home/group_name/path/to/script/run.sh 

到:

*/5 * * * * bash /home/group_name/path/to/script/run.sh

This question有更多信息和解决问题的附加选项。

关于python - 在 crontab 的 shell 脚本中使用 python3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48834638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com