[Tutor] Process problem
Alberto Troiano
albertito_g at hotmail.com
Thu Jun 16 00:04:48 CEST 2005
Hey
Let me make you understand
I need that levantamuertos.py run cotascamon.py (every script with it
differents arguments that are passed) and then die letting the cotascamon.py
scripts running independently
Now, I don't know if my code is right, and thinking now you're right,
levantamuertos.py waits until cotascamon.py finish.
What can I do since cotascamon will never die (and it doesn't have to die)?
Maybe a different approach will be the solution but I can't find a way to do
it
Best Regards
Alberto
>From: Hugo González Monteverde <hugonz-lists at h-lab.net>
>To: Alberto Troiano <albertito_g at hotmail.com>
>CC: tutor at python.org
>Subject: Re: [Tutor] Process problem
>Date: Wed, 15 Jun 2005 13:30:30 -0500
>
>Hi Alberto,
>
>Mmm I'm not sure if I get this all right. Why do you want to keep
>cotascamon running after levantamuertos dies?? If you're using system(),
>levantamuertos is waiting for cotascamon to finish completion before it
>continues running, there should be no point where levantamuertos *runs*
>while cotascamon also does (levantamuertos is sleeping)
>
>One advice though: it is easier and more elegant if you, instead of
>parsing the output of "ps" for a single process, you send it signal 0.
>This will do nothing to the process itself, but will complain with a
>traceback (OSError) if the pid does not exist. Like this:
>
>from os import kill
>from signals import SIG_DFL
>
>pid = 16
>try:
> kill(pid, SIG_DFL)
>except OSError:
> print "Process does not exist..."
>
>Please note this is untested as I'm os a Windows machine right now.... =/
>
>
>Hope it helps,
>
>Hugo
>
>
>
>Alberto Troiano wrote:
>>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
>>
>>
>>_______________________________________________
>>Tutor maillist - Tutor at python.org
>>http://mail.python.org/mailman/listinfo/tutor
>>
>
Gaucho
More information about the Tutor
mailing list