Programación Web y Scripting > Python
Proceso que se ejecute de forma continua ???
(1/1)
fpython:
Hola estoy empezando con pythone y estoy intentando ejecutar un proceso subprocess.popen para que se ejecute de forma continua y poder leer por líneas la salida, algo así como si hiciera desde que arranca el ordenador un tail -f /var/log/syslog y pueda leer todas las líneas que se generan en este fichero hasta que se apague el ordenador. Sería algo así como un proceso que está siempre a la escucha y procesa líneas que el propio sistema vaya generando.
A ver si alguien puede ayudarme.
Saludos y gracias.
$francisco:
si lo que quieres es leer la respuesta puede utilizar un bucle for para verla dentro de un while para poder seguir repitiendo comandos y decirle que cree un tubo entre la entra y la salida del proceso con stdin y stdout, y comunicarlo con comunicate:
--- Código: ---while True:
cmd = raw_input(">>>")
if cmd == "exit":
break
else:
for i in range(3):
p = subprocess.Popen('%s' %(cmd[cont]), shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE)
p.wait()
n = p.communicate()
print n[0]
--- Fin del código ---
ryuz:
Buenas :nosweat:, voy a proponer mi código y lo explico brevemente ya que no tiene gran complejidad.
Lo he creado en una instancia donde sea necesario leer continuamente un fichero de huellas (*.log).
--- Código: ---#!/usr/bin/python
from sys import exit #Importamos la función de salida de sys.
import subprocess #Importamos la libreria de subprocess
filename = "/var/log/checkServer.log" #Asignamos la ruta y fichero que leeremos.
command = "tail -f %s" % (filename) #Asignamos el comando y el fichero anteriormente asignado.
ps = subprocess.Popen(command,shell=True) #Creamos el subproceso.
if(ps): #Comprobamos que existe.
try: ps.wait() #Intentamos que se quede esperando hasta que interrumpa el programa o termine el mismo.
except: exit(1)
else: exit(0)
--- Fin del código ---
Los valores 1 y 0 de la función exit, se refiere a si se termino sin errores el programa (la lectura).
Navegación
Ir a la versión completa