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

时间:2015-02-28 02:36:48

标签: python cron subprocess crontab

我有一个我无法解释的最奇怪的问题。这个脚本在直接执行时工作正常,但在一台机器上通过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()

直接执行./audit_checker.py,每次都执行正确的操作。

通过crontab执行,“result”始终为空(不是None,只是空白),导致调用notify_helpdesk。

是的,审计服务正在运行。

这是crontab条目:

0 * * * * /local/sbin/audit_checker.py

这个完全相同的脚本,在具有完全相同操作系统的另一台机器上,使用完全相同的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)

0 个答案:

没有答案