在我正在处理的项目中,有一些使用
sudo
启动长时间运行进程的代码:subprocess.Popen(['sudo', '/usr/bin/somecommand', ...])
我希望在父进程退出时能够清理这个进程。目前,当父进程退出时,子进程仍然在运行(当然会重新附加到init
)。
我不确定如何解决这个问题。该代码仅限于通过sudo运行某些命令,而授予运行 sudo kill
权限的普遍方式最多只是可疑的。
我没有一个可以关闭的子进程的开放管道(子进程不从stdin读取),我也无法修改子进程的代码。
在这种情况下,是否有其他机制可能会起作用?
/etc/sudoers
以允许使用 sudo 运行程序而无需密码。您是否考虑过对killall /usr/bin/somecommand
做同样的操作呢? - loopbackbee