Digamos que tengo un PID, como 555. Quiero ver si ese pid se está ejecutando o se ha completado. Puedo verificar/proc/pero no tengo acceso a eso en mi entorno de producción. ¿Cuál es la mejor manera de hacer esto, salvo algún hackish como abrir una tubería para "ps"?En Python, sin usar el sistema de archivos/proc, ¿cómo puedo saber si se está ejecutando un PID determinado?
Respuesta
Utilice la función os.kill()
con un número de señales de 0. Si el proceso pid existe, entonces la llamada tendrá éxito, de lo contrario generará un OSError
excepción:
try:
os.kill(pid, 0)
print("process exists")
except OSError:
print("process does not exist")
La documentación para el kill(2)
mi sistema dice:
el matan función() envía la señal dada por sig a pid, un proceso o un grupo de procesos. Sig puede ser una de las señales especificadas en sigaction (2) o puede ser 0, en cuyo caso se realiza la comprobación de errores pero no se envía ninguna señal. Esto se puede usar para verificar la validez de pid.
Exactamente lo que estaba buscando. Terminé de matar por su nombre. Gracias. –
Usa os.kill()
como lo mencionó Greg, pero ten en cuenta que la llamada al sistema kill no comprueba si el proceso existe, pero si puedes enviar un kill al proceso. Un modo de falla es si el proceso no existe, pero otro es que no tiene permiso para matarlo. Para diferenciar, usted tiene que comprobar la excepción:
try:
os.kill(pid, 0)
print 'Process exists and we can kill it'
except OSError, e:
if e.errno == 1:
print 'Process exists, but we cannot kill it'
else:
raise
Esto no es necesario si usted sabe que siempre va a tener permiso para matar el proceso que está mirando para, por ejemplo, ya se está ejecutando como root o el proceso se sabe que se ejecuta bajo el mismo UID que el proceso que lo verifica.
- 1. ¿Cómo puedo verificar desde Ruby si se está ejecutando un proceso con un determinado pid?
- 2. ¿Cómo verificar si se está ejecutando un proceso con un PID determinado?
- 3. ¿Cómo puedo saber si un proceso se está ejecutando?
- 4. ¿Cómo saber si se está ejecutando un temporizador?
- 5. Cómo saber si el servidor de emacs se está ejecutando
- 6. ¿Cómo puedo saber si un proceso se está ejecutando en C?
- 7. ¿Cómo puedo saber en qué dispositivos/versiones de sistema operativo se está ejecutando mi aplicación iOS?
- 8. Dentro de un archivo por lotes, ¿cómo puedo saber si se está ejecutando un proceso?
- 9. ¿Cómo puedo saber si mi script de Perl se está ejecutando en Windows?
- 10. ¿Cómo saber si la actualización MATERIALIZED VIEW se está ejecutando?
- 11. ¿Cómo puedo saber si un script Perl se está ejecutando en contexto CGI?
- 12. ¿Cómo puede saber mi programa si Delphi se está ejecutando?
- 13. ¿Cómo puedo saber si el código de Rails se está ejecutando mediante rake o script/generate?
- 14. ¿Cómo puedo saber si mi aplicación se está ejecutando en una sesión de RDP
- 15. ¿Cómo puedo saber si un hWnd determinado sigue siendo válido?
- 16. Comprobar si el proceso se está ejecutando
- 17. ¿Cómo puedo saber si un proceso ya se está ejecutando usando C#?
- 18. ¿Cómo puedo saber si un archivo está en un sistema de archivos remoto con Perl?
- 19. ¿Cómo puedo saber si mi kernel OpenCL se está ejecutando en una GPU?
- 20. ¿Cómo puedo saber si se hace una rutina, sin bloquear?
- 21. ¿Cómo puedo saber si mi proceso se está ejecutando como administrador?
- 22. Python: variables condicionales basadas en si nosetest se está ejecutando
- 23. ¿Cómo saber si se está ejecutando una aplicación de pantalla completa?
- 24. cómo saber si la VM se está ejecutando en el modo de servidor o cliente?
- 25. ¿Cómo puedo saber si se está mostrando ModalViewController?
- 26. ¿Cómo puedo saber si un programa se está ejecutando desde la línea de comandos o desde la web?
- 27. ¿Cómo puedo probar si R se está ejecutando como Rscript?
- 28. ¿Puedo saber, en node.js, si mi script se está ejecutando directamente o está siendo cargado por otro script?
- 29. Cómo saber si el servicio se está ejecutando utilizando adb shell en android
- 30. ¿Cómo verificar si el servidor X se está ejecutando?
¿El comando Linux 'ps' en sí no usa/proc? – PleaseStand
No. De hecho, muchos entornos no usan el sistema de archivos/proc. –