我在 X 分钟后创建了以下脚本来关闭Ubuntu机器。
import subprocess
def execute_command(command):
command = command.split()
try:
print(command)
command_process = subprocess.run(command,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
output = command_process.stdout.decode('utf-8')
output_message = "Command output: {}".format(output)
error = command_process.stderr.decode('utf-8')
error_message = "Command error: {}".format(error)
print(output_message)
print(error_message)
except Exception as error:
command_error = str(error)
print("Error: "+command_error)
command = "shutdown -h 50"
execute_command(command)
输出:
['shutdown', '-h', '50']
Command output:
Command error: Shutdown scheduled for Sat 2018-04-21 19:37:25 +06, use 'shutdown -c' to cancel.
我的问题:
stdout
为空?stderr
中?我的脚本中有错误吗?答案 0 :(得分:1)
你的代码似乎是正确的; shutdown
命令似乎将其输出发送到stderr:
$ shutdown +9 >/dev/null
Shutdown scheduled for Sat 2018-04-21 15:38:00 BST, use 'shutdown -c' to cancel.
而shutdown +9 2>/dev/null
不产生输出。
说明:
>
将stdout
重定向到文件2>
将stderr
重定向到文件/dev/null
是一个丢弃写入所有内容的特殊文件参考:TLDP