[Tutor] Process problem

Alberto Troiano albertito_g at hotmail.com
Wed Jun 15 16:42:26 CEST 2005


Hey all

I have a problem with a program

You see, I have a python script made in Python 2.2 that runs every 15 
minutes on Linux Red Hat 9.0
This program (which code is attached below) named levantamuertos.py (spanish 
for death weakener) has to check in a database if the pids stored are 
running (note that it will be more than one pid) and if they are not it has 
to start again the process and it will store the new pid on the database

The problem is that when I call it it runs and weaks all dead process but 
when it dies, he takes all his sons with him.

How can I make that the cotascamon.py keep running although 
levantamuertos.py die?

Thanks in advanced and here is the code

Alberto

##################
### levantamuertos.py ###
##################
import os
import sys
import MySQLdb
import time

class conexion(object):
    def __init__(self):
        self.db = MySQLdb.connect(host="localhost", user="administrador", 
passwd="123456",db="seguridad")

    def consulta(self,query,args=None):
        try:
            self.cursor=self.db.cursor()
            self.sql=self.cursor.execute(query,args)
        except:
            self.cerrar()
        else:
            self.cerrar()

    def cerrar(self):
        self.db.close()

query="SELECT PID,user,cam,ruta from proceso where user='DMALAKIAN'"
cur=conexion()
cur.consulta(query)
res=cur.cursor.fetchall()
if len(res)>0:
    for elem in res:
        pi=elem[0]
    ps_command = 'ps -p %s' % pi
    pidchk = os.popen(ps_command).readlines()
    count = 0
    for line in pidchk:
        count +=1
    if count > 1:
        print "Encontre el proceso"
    else:
        query="update proceso set PID=%s where user='DMALAKIAN'"
        p=os.getpid()
        args=(p)
        cur=conexion()
        cur.consulta(query,args)
        query="SELECT PID,user,cam,ruta from proceso where user <> 
'DMALAKIAN'"
        cur=conexion()
        cur.consulta(query)
        res=cur.cursor.fetchall()
        if len(res)>0:
            for elem in res:
                pid=elem[0]
                user=elem[1]
                cam=elem[2]
                ruta=str(elem[3])
                ps_command = 'ps -p %s' % pid
                pidchk = os.popen(ps_command).readlines()
                count = 0
                for line in pidchk:
                    count +=1
                if count > 1:
                    pass
                else:
                    os.system("python2.2 /root/cotascamon.py 
"+str(ruta[19:len(ruta)])+" "+user+" "+str(cam))
        else:
            pass
else:
    query="insert into proceso values('DMALAKIAN',0,%s,'NO HAY RUTA PARA 
ESTE USUARIO')"
    p=os.getpid()
    args=(p)
    cur=conexion()
    cur.consulta(query,args)
    query="SELECT PID,user,cam,ruta from proceso where user <> 'DMALAKIAN'"
    cur=conexion()
    cur.consulta(query)
    res=cur.cursor.fetchall()
    if len(res)>0:
        for elem in res:
            pid=elem[0]
            user=elem[1]
            cam=elem[2]
            ruta=str(elem[3])
            ps_command = 'ps -p %s' % pid
            pidchk = os.popen(ps_command).readlines()
            count = 0
            for line in pidchk:
                count +=1
            if count > 1:
                pass
            else:
                os.system("python2.2 /root/cotascamon.py 
"+str(ruta[19:len(ruta)])+" "+user+" "+str(cam))
    else:
        pass




More information about the Tutor mailing list