【发布时间】:2023-05-28 09:38:02
【问题描述】:
我正在尝试使用子进程从 python 脚本执行此命令:sleep 10 && sudo /etc/init.d/tractor-blade restart &
我希望 Python 脚本完成(返回代码 0)。然后,10 秒后,我希望命令被执行。
这就是我所拥有的:
import sys, subprocess
command = ['sleep', '10', '&&', 'sudo', '/etc/init.d/tractor-blade', 'restart' '&']
p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
# Catch stdout
sys.stdout.flush()
for line in iter(p.stdout.readline, b''):
print(">>> " + line.rstrip())
但这就是发生的事情:
>>> sleep: invalid time interval `&&'
>>> sleep: invalid time interval `sudo'
>>> sleep: invalid time interval `/etc/init.d/tractor-blade'
>>> sleep: invalid time interval `restart'
>>> sleep: invalid time interval `&'
>>> Try `sleep --help' for more information.
我猜我的格式有误?
我需要在命令执行之前完成 python 脚本,这就是为什么我试图为命令添加延迟。我的 sudoers 允许使用 NOPASSWD 执行这个“拖拉机刀片”,因此不需要密码。
【问题讨论】:
-
我不想等待终止。我想延迟命令的执行并退出 python 脚本。然后我希望在 python 脚本退出 10 秒后执行命令。
-
是的,还是一样的问题。你不需要
wait。您只需要shell = True。
标签: python