In einem Projekt an dem ich arbeite, gibt es einige Codes, der einen lang andauernden Prozess sudo
mit anläuft:Töten ein subProzess über sudo gestartet
subprocess.Popen(['sudo', '/usr/bin/somecommand', ...])
Ich mag diesen Prozess bereinigen, wenn die Eltern beendet. Momentan läuft der Unterprozess weiter, wenn der Elternteil beendet wird (natürlich wieder an init
angehängt).
Ich bin mir nicht sicher, die beste Lösung für dieses Problem. Der Code ist darauf beschränkt, nur bestimmte Befehle über sudo auszuführen, und das Gewähren der umfassenden Berechtigung zum Ausführen von sudo kill
wäre bestenfalls skizzenhaft.
Ich habe keine offene Pipe für den untergeordneten Prozess, den ich schließen kann (der untergeordnete Prozess liest nicht von stdin), und ich kann den Code des untergeordneten Prozesses nicht ändern.
Gibt es andere Mechanismen, die in dieser Situation funktionieren könnten?
Gute Frage.Ich glaube nicht, dass Sie einen Prozess beenden können, der (nicht mehr) Eigentum des Benutzers ist. Ich gehe davon aus, dass Sie '/ etc/sudoers' so konfiguriert haben, dass das Programm mit sudo ohne Passwort ausgeführt werden kann. Haben Sie darüber nachgedacht, das gleiche für 'killall/usr/bin/somecommand' zu tun? – goncalopp