crontab:python脚本正在运行,但不执行OS命令

2024-10-01 17:30:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个crontab配置设置和下面的脚本。

MAILTO="abc@avc.com"
41 15 * * * /usr/bin/python /home/atweb/Documents/opengrok/setup_and_restart.py >       /home/atweb/Documents/opengrok/restart_log.txt 2&>1

python脚本是这样的

^{pr2}$

这是输出日志

Tue, 27 Aug 2013 22:41:01 +0000
Running opengrok index..

脚本的其他部分尚未完成,但脚本的某些部分尚未开始运行。 我不确定是操作系统故障还是cron故障,还是python错误。当我从命令行调用脚本时,它本身运行良好。

有人知道为什么会这样吗?在


Tags: 脚本comhomebinusrsetupdocuments故障
2条回答

有两件事:cd将为该子进程设置目录,该子进程将立即退出:

subprocess.call(["cd", "/home/atweb/Documents/opengrok"])

换句话说,这是一个浪费的步骤。在

下一个子流程对前一个子流程的环境一无所知:

^{pr2}$

…所以它不能运行了。如果要在该目录下运行所有程序,请使用:

os.chdir("/home/atweb/Documents/opengrok")

在任何subprocess.call()行之前。在

您需要shell来运行cd命令。在crontab中,将sh或{}定义为SHELL。在

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO="abc@avc.com" 
# m h dom mon dow   command
41 15 * * * /usr/bin/python /home/atweb/Documents/opengrok/setup_and_restart.py >       /home/atweb/Documents/opengrok/restart_log.txt 2&>1

或者在python中将shell作为子进程打开。在

相关问题 更多 >

    热门问题