通过crontab执行失败使用Popen的超级简单脚本

2024-10-02 10:20:28 发布

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

我有一个我无法解释的奇怪问题。此脚本在直接执行时工作正常,但在一台计算机上通过crontab执行时无法正常工作,但在另一台机器的crontab上工作正常(相同的操作系统,RHEL 6):

#!/usr/bin/python

from subprocess import Popen, PIPE

def notify_helpdesk(result):
    ...

def main():
    proc = Popen("service auditd status", stdout=PIPE, shell=True)
    result = proc.stdout.readline()
    if "is running" not in result:
        notify_helpdesk(result)

if __name__ == "__main__":
    main()

直接执行,/审核_棋盘格.py,每次都执行正确的操作过程。在

通过crontab执行,“result”总是空的(不是None,只是空的),导致调用notify_helpdesk。在

是的,auditd服务正在运行。在

这是crontab条目:

^{pr2}$

这个完全相同的脚本,在另一台操作系统完全相同的机器上,使用完全相同的Python(2.6.6)版本,并通过crontab进行完全相同的调用,其执行方式与cronjob完全相同。在

我尝试了这个方法,但遇到了同样的问题:

proc = Popen("service auditd status", stdout=PIPE, shell=True)
out, err = proc.communicate()
if "is running" not in out:
    notify_helpdesk(out)
if err:
    notify_helpdesk(err)

Tags: 脚本机器ifmainstdoutnotifyprocresult

热门问题