Crontab 执行 Python 问题
我想让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