Python subprocess.popen在cronjob中不返回任何输出

Python subprocess.popen在cronjob中不返回任何输出,python,linux,bash,cron,Python,Linux,Bash,Cron,我有一个python脚本,它需要在linux中收集命令行实用程序的输出。我使用以下子流程方法读取输出: proc = subprocess.Popen(["cmd","arg"], stdout=subprocess.PIPE, shell=True) (raw_domain, err) = proc.communicate() 当我从bash手动执行脚本时,它工作得非常好并返回命令输出,但是当我将此脚本执行添加到crontab时,subprocess.popen不会返回任何输出 Cronta

我有一个python脚本,它需要在linux中收集命令行实用程序的输出。我使用以下子流程方法读取输出:

proc = subprocess.Popen(["cmd","arg"], stdout=subprocess.PIPE, shell=True)
(raw_domain, err) = proc.communicate()
当我从bash手动执行脚本时,它工作得非常好并返回命令输出,但是当我将此脚本执行添加到crontab时,subprocess.popen不会返回任何输出

Crontab表达式:

* * * * root python /apoorv/cleanup_null_domain.py
我使用日志验证了“空白”返回,对此我非常确定


我想提到的是,我也使用了os.popen方法。相同的结果:(

您正在代码中捕获stdout和stderr,因此它显然不会输出任何内容。要么打印值,要么更好,将它们写入日志文件。

编辑脚本并将其放在第一行

#!/usr/bin/env python

并使其可执行

chmod +x /apoorv/cleanup_null_domain.py
然后在crontab中

* * * * root /apoorv/cleanup_null_domain.py

尝试指定应用程序的完整路径(例如:使用“/usr/bin/more”而不是“more”)。因为默认情况下用户bash环境未在cron进程中加载。请定义“不返回任何输出”。您已经在
raw_domain
中捕获了stdout,在
err
中捕获了stderr,因此除非您打印它们,否则它们不会显示在任何日志中。目前的问题无法解决,所以最好提供真实代码,而不是一些手工样板行。您没有捕获stderr(您需要在Popen调用中使用
stderr=subprocess.PIPE
)您没有检查返回代码。请使用返回代码记录错误以了解发生的情况。我遇到了您最近所做的一些编辑,您在问题末尾添加了“提前感谢”。请不要这样做。类似的内容应该删除而不是添加。有关详细信息,请参阅。CheersOk,现在我应该如何仅编辑代码(格式化代码)如果规则不允许只添加代码,并且需要一些文本???我能做什么?好问题。例如,删除“请帮助!”如果你仔细阅读的话,还有很多小东西可以修复。这是另一个用户拒绝编辑后所做的事情。对于没有其他东西可以改变的情况,考虑编辑是否真的是必要的。如果是,请留下评论或要求某人编辑它。t到2000次,编辑长度没有限制。谢谢。我会考虑的。
* * * * root /apoorv/cleanup_null_domain.py