gpt4 book ai didi

python - 用 pexpect 杀死一个 sudo/root 进程

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:31 25 4
gpt4 key购买 nike

给定一个使用 sudo 打开的预期衍生进程,如下所示:

#!/usr/bin/env python
import pexpect

cmd = ['sudo', 'bash', '-c', '"some long-running sudo command"']
cmd = ' '.join(cmd)
child = pexpect.spawn(cmd, timeout=60)

i = child.expect([
'success',
'error'])
if i == 0:
print('ok')
else:
print('fail')
# insert code here

我如何在失败(或成功,就此而言)时终止此进程?

我尝试了以下方法(替换 # insert code here):

child.kill(0)
child.close(force=True)

两者都给出以下错误,这是有道理的,因为 Python 脚本不是根进程,并且它正试图杀死根进程。 p>

Traceback (most recent call last):
File "./myscript.py", line 85, in <module>
requires_qemu()
File "./myscript.py", line 82, in requires_qemu
child.close(0)
File "/usr/lib/python2.7/site-packages/pexpect/__init__.py", line 747, in close
raise ExceptionPexpect('Could not terminate the child.')
pexpect.ExceptionPexpect: Could not terminate the child.

由于文件权限的原因,无法以 root 身份运行脚本(从阻止 root 访问的共享 NFS 驱动器运行)

最佳答案

使用 sudo 以 root 身份杀死它:

subprocess.call(['sudo', 'kill', str(child.pid)])

关于python - 用 pexpect 杀死一个 sudo/root 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23445208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com