Shell脚本在终端调用Python成功但在Cron中失败
我有一个shell脚本,内容如下:
export PYTHONPATH=/usr/local/lib/python
cd /home/skip/workspace/UAM
for file in *.txt
do
echo $file >>log.fil
/usr/bin/python push.py -s $file
done
return 0
这个脚本在命令行中运行得很好。它会把每个文件名打印到日志文件里,并且按预期运行python push.py命令。(这个命令会创建一个目录并填充内容。)
但是当我尝试通过cron来运行它,使用这个crontab:
3 * * * * /home/skip/workspace/UAM/RunAllTest.sh
我在日志文件中看到了记录,但push.py没有正常运行。(目录没有被创建,也没有填充内容。)
任何帮助都会很受欢迎。
2 个回答
1
明白了。感谢licorna的热心帮助。
发生的事情是,我的“push.py”脚本在调用另一个程序(pybot,也就是机器人框架)时,没有指定完整的路径。
我把“pybot”改成了“/usr/local/bin/pybot”,现在一切都正常了。
3
检查一下push.py这个文件是否需要一些环境变量,而这些环境变量在crontab的环境中可能没有被设置。如果是用户的crontab(不是root用户的cron),那么这个文件会像是同一个用户执行的那样运行,但不一定会在同样的环境下运行(比如在初始化文件中设置的别名和路径可能不一样)。