Crontab 执行 Python 问题

0 投票
4 回答
2893 浏览
提问于 2025-04-17 18:39

我想让cron每10分钟执行一次这个命令;

(在/home/pi/myst-myst/这个文件夹里)

python myst.py `./monitor.sh`

我几乎尝试了所有方法,但cron就是不能正确执行这个命令。现在我有的设置是;

*/1 * * * * /usr/bin/python /home/pi/myst-myst/myst.py `./monitor.sh`

任何帮助都非常感谢。

有没有其他可以替代crontab的办法?我可以用一个bash脚本来执行python,然后再用cron来运行这个bash脚本吗?

4 个回答

0

你的脚本是否依赖于一些环境变量,比如 PYTHONPATH

如果是这样的话,当这个脚本通过定时任务(cron)运行时,这些环境变量就会缺失。

你可以尝试:

*/1 * * * * PYTHONPATH=/my/python/modules/ /usr/bin/python /home/pi/myst-myst/myst.py `./monitor.sh`
1

你可以这样做:

*/10 * * * * cd /home/pi/myst-myst/;/usr/bin/python /home/pi/myst-myst/myst.py $(./monitor.sh)

在运行命令之前,先更改工作目录。

补充说明:替换了反引号。

2

我在用cron直接调用python和perl的时候遇到了一些问题。对于perl来说,问题主要是因为LIBPATH的默认设置不够用。

我建议把你的命令放在一个shell脚本里,并加上“set -x”来跟踪问题。

#!/bin/sh
set -x
export PYTHONPATH=/my/python/modules:$PYTHONPATH
/usr/bin/python /home/pi/myst-myst/myst.py $(/home/pi/myst-myst/monitor.sh)

先直接调用这个脚本,确保它能正常工作,然后再通过cron来调用。记得把标准输出和错误输出都重定向,这样可以捕捉到任何错误信息。

 */10 * * * * /home/pi/myscript.sh > /home/pi/stdout 2> /home/pi/stderr

撰写回答