¿Hay alguna forma de iniciar / detener los procesos de Linux con Python?

Quiero poder iniciar un proceso y luego poder eliminarlo.

Echa un vistazo al módulo de subprocess . También puede usar primitivas de bajo nivel como fork() través del módulo os .

Aquí hay un pequeño script de Python que inicia un proceso, comprueba si se está ejecutando, espera un momento, lo mata, espera a que termine y luego vuelve a verificar. Utiliza el comando ‘kill’. La versión 2.6 del subproceso python tiene una función de eliminación. Esto fue escrito en 2.5.

 import subprocess import time proc = subprocess.Popen(["sleep", "60"], shell=False) print 'poll =', proc.poll(), '("None" means process not terminated yet)' time.sleep(3) subprocess.call(["kill", "-9", "%d" % proc.pid]) proc.wait() print 'poll =', proc.poll() 

La salida progtwigda muestra que se terminó después de unos 3 segundos, y no 60 como sugiere la llamada a la suspensión.

 $ time python prockill.py poll = None ("None" means process not terminated yet) poll = -9 real 0m3.082s user 0m0.055s sys 0m0.029s 

Una función simple que utiliza módulo de subproceso:

 def CMD(cmd) : p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) return (p.stdin, p.stdout, p.stderr) 

Consulte los documentos para la bifurcación primitiva () y los módulos de subproceso , multiprocesamiento , multiproceso.

Si necesita interactuar con el subproceso, recomiendo el módulo pexpect ( enlace de texto ). Puede enviar entradas al proceso, recibir (o “esperar”) a cambio, y puede cerrar el proceso (con force = True para enviar SIGKILL).