Quiero poder iniciar un proceso y luego poder matarlo después¿hay alguna manera de iniciar/detener procesos de Linux con Python?
Respuesta
Eche un vistazo al módulo subprocess
. También puede usar primitivas de bajo nivel como fork()
a través del módulo os
.
una función simple que utiliza el módulo 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)
ver documentación para tenedor primitiva() y módulos subprocess, multiprocessing, multithreading
Si necesita interactuar con el sub proceso en absoluto, recomiendo el módulo pexpect (link text). Puede enviar datos de entrada al proceso, recibir (o "esperar") resultados a cambio, y puede cerrar el proceso (con force = True para enviar SIGKILL).
Aquí hay un pequeño script de Python que inicia un proceso, verifica si se está ejecutando, espera un momento, lo mata, espera a que termine y luego vuelve a verificar. Utiliza el comando 'matar'. La versión 2.6 del subproceso python tiene una función kill. 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 temporizada muestra que se terminó después de aproximadamente 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
- 1. ¿Hay alguna manera de descompilar Linux .so?
- 2. ¿Hay alguna distribución de Linux que viene con python 3?
- 3. ¿Hay alguna manera de crear complementos de Eclipse con Python?
- 4. ¿Hay alguna manera de dibujar primitivas en 3D con Python?
- 5. ¿Hay alguna manera de instalar solo el cliente mysql (Linux)?
- 6. ¿Hay alguna manera de inspeccionar el rpath actual en Linux?
- 7. ¿Existe alguna manera ligera de obtener la cantidad actual de procesos en Linux?
- 8. ¿Hay alguna manera de cambiar el nombre del proceso efectivo en Python?
- 9. ¿Hay una mejor manera de controlar los archivos de registro? (Linux/python)
- 10. ¿Hay alguna manera de acceder al hardware directamente en Python?
- 11. ¿Hay alguna manera de identificar un método heredado en Python?
- 12. ¿Hay alguna manera de mejorar el rendimiento de las tuberías de linux?
- 13. ¿Hay alguna manera de determinar si un PID de Linux está en pausa o no?
- 14. Python/Matplotlib - ¿Hay alguna manera de hacer un eje discontinuo?
- 15. ¿Hay alguna manera de mezclar cadenas en Python?
- 16. ¿Hay alguna manera de agregar múltiples receptores en Python SMTPlib?
- 17. Biblioteca de Python para la gestión de procesos de Linux
- 18. Monitoreo de procesos remoto simple con Python
- 19. ¿Hay alguna manera de hacer un volcado dinámico en vivo con ibm-jdk para Linux?
- 20. Administración de procesos de Python
- 21. Alto iowait con procesos java en Linux
- 22. Temas/Comparación de procesos en Linux/Windows
- 23. ¿Hay alguna manera de determinar la cantidad de RAM de video gratuita en Linux?
- 24. Sumando listas en python: ¿hay alguna otra manera mejor?
- 25. ¿Hay alguna manera de omitir el parámetro?
- 26. ¿Hay alguna manera de animar diseños? [Android]?
- 27. ¿Hay alguna manera de desarrollar SmartArt personalizado?
- 28. ¿Hay alguna manera de evitar recursiones innecesarias?
- 29. ¿Hay alguna manera de usar ConcurrentDictionary.TryUpdate con una expresión lambda?
- 30. ¿hay alguna manera de "excluir" un archivo con PHP?
puede usar 'os.kill (..)' para matar el proceso –
o incluso 'proc.terminate()' 'o proc.kill()' Como Python 2.6 –