在从crontab调用的python脚本中执行bash命令

时间:2020-03-23 01:06:32

标签: python python-3.x cron

我正在编写python脚本,我想从crontab调用。它脚本调用xrandr命令并将其输出保存在变量中,如下所示: output = subprocess.run('xrandr', shell=True, stdout=subprocess.PIPE).stdout.decode('utf-8') 我希望将xrandr的输出保存在字符串中。 如果从终端执行它,一切正常,但是如果使用cron运行它,则变量output保持为空。 其余代码正常执行,因此cron并不是问题。 那么如何使该命令正确执行? 谢谢您的建议。

2 个答案:

答案 0 :(得分:0)

您要存储输出,可以在此处使用communicate()来提供帮助,如下所示:

from subprocess import PIPE
output = subprocess.run('xrandr', shell=True, stdout=subprocess.PIPE).stdout.decode('utf-8')
text = output.communicate()[0]
print(text)

或者也许是这样,在这种情况下,您可以不太确定地移除.stdout.decode('utf-8'),但可以在有或没有的情况下拍摄照片:

from subprocess import PIPE
output = subprocess.run('xrandr', shell=True, stdout=subprocess.PIPE).stdout.decode('utf-8')
print(output.stdout)

答案 1 :(得分:0)

我猜在cron环境中没有设置PATH变量,因此您应该提供xrandr的绝对路径(您可以通过which xrandr找到它)。 例如。如果此路径/usr/bin/xrandr试试

from subprocess import PIPE
output = subprocess.run('/usr/bin/xrandr', shell=True, stdout=subprocess.PIPE).stdout.decode('utf-8')
text = output.communicate()[0]
print(text)

我认为更好的方法是同时捕获stderr并在发生错误时记录错误。

相关问题