我想获得服务状态,如果没有,请在电子邮件中发送状态(stdout)。
这个脚本计划由cron每小时运行一次
手动运行时,以下工作正常:
def is_service_running(name):
with open(os.devnull, 'wb') as hide_output:
proc = subprocess.Popen(['service', name, 'status'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
output = proc.stdout.read()
exit_code = proc.wait()
return exit_code == 0, output
但是当被cron运行时。 output
是空的。
如何在运行cron时捕获stdout
?
谢谢
答案 0 :(得分:0)
问题不是cron而是shell=True
显然,当使用shell=True
时,popen需要单个字符串而不是列表
所以当我更新我的电话时:
proc = subprocess.Popen(['service ' + name + ' status'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
一切顺利。