• Domingo 17 de Noviembre de 2024, 17:16

Autor Tema:  Proceso que se ejecute de forma continua ???  (Leído 2311 veces)

fpython

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Proceso que se ejecute de forma continua ???
« en: Domingo 31 de Marzo de 2013, 22:07 »
0
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

  • Miembro activo
  • **
  • Mensajes: 49
  • Nacionalidad: es
    • Ver Perfil
Re:Proceso que se ejecute de forma continua ???
« Respuesta #1 en: Martes 2 de Abril de 2013, 03:26 »
0
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: [Seleccionar]
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]

ryuz

  • Miembro activo
  • **
  • Mensajes: 29
  • Nacionalidad: ar
  • :)
    • Ver Perfil
Re:Proceso que se ejecute de forma continua ???
« Respuesta #2 en: Viernes 10 de Mayo de 2013, 11:21 »
0
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: [Seleccionar]
#!/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)

Los valores 1 y 0 de la función exit, se refiere a si se termino sin errores el programa (la lectura).