Ahoj,

v adresari /proc/<PID>/ najdes vsetky potrebne udaje. Mimochodom, podla mojho 
nazoru existuju ovela lepsie sposoby, ako zarucit, aby sa aplikacia nespustila 
2x sucasne. Ja najcastejsie pouzivam vytvorenie 'PID suboru', ktory pri 
spusteni uzamknem cez fcntl.flock(). Uzamknutie je samozrejme mozne len raz, 
takze kazde dalsie spustenie danej splikacie zlyha. Subor je nutne pri ukonceni 
samozrejme odomknut (toto ale za teba urobi aj OS).

import sys
import fcntl

file_obj_lock = open("app.pid", "w")
try:
        fcntl.flock(file_obj_lock, fcntl.LOCK_EX | fcntl.LOCK_NB)
except IOError:
        file_obj_lock.close()
        sys.exit()
....
....
fcntl.flock(file_obj_lock, fcntl.LOCK_UN | fcntl.LOCK_NB)
file_obj_lock.close()


azur



______________________________________________________________
> Od: "\Ing. Vladislav Ludík\" <vl...@ludik.cz>
> Komu: Konference PyCZ <python@py.cz>
> Dátum: 10.03.2012 19:13
> Predmet: [python] Jak získat název procesu když znám PID procesu
>
>Zdravím všechny.
>
>Spouštím pythonovský program.py (pod Linuxem) a chci zajistit jeho 
>stabilní chod i v nepředvídatelných režimech.
>Zatím to dělám tak, že program o sobě dává vědět a jiný program check.py 
>to kontroluje.
>program.py je trvale spuštěn. Pokud check.py nedostane správnou odpověď 
>a včas, nastartuje jej znovu.
>Při testech jsem zjistil, že občas po nepředpokládané chybě program 
>neodpoví jak má, popřípadě včas.
>
>Abych vyloučil dvojí spuštění, hlídám jeho název a PID procesu:
>
>_prg = os.path.basename(sys.argv[0])   # název
>_pid = os.getpid()                                 # PID
>
>Potřebuji zjistit podle názvu a PIDu, zda je spuštěný a existuje.
>Zatím to dělám přes subprocess, příkaz ps -d
>
>cmd = ["ps", "-d"]
>proces = subprocess.Popen(cmd, stdout = subprocess.PIPE)
>proces.wait()
>out = proces.stdout.read()
>
>out pak čtu a hledám potřebné.
>
>Mimochodem linuxovský příkaz ps -d | grep program.py, který by 
>vyfiltroval jen to co hledám, funguje pod linuxem, ale přes subprocess ne.
>Hlásí:  ERROR: Garbage option.
>
>Takže k mému konkrétnímu dotazu:
>
>existuje nějaký os příkaz nalezení PID podle jména programu ?
>
>Díky
>
>V.L.
>
>_______________________________________________
>Python mailing list
>Python@py.cz
>http://www.py.cz/mailman/listinfo/python
>
_______________________________________________
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem