Python restarter úprava

Programovacie jazyky, rady, poradňa...
cumilko
Star
Star
Používateľov profilový obrázok
Príspevky: 699
Registrovaný: 23 júl 2008, 16:02
Bydlisko: BL

Python restarter úprava

Príspevok od používateľa cumilko »

Zdravím, kamarát mi spravil potrebný restarter na proces ak sa zaplní log tak to automaticky restartuje proces, všetko fajn funguje ale kedže kamarat momentálne nemá čas absolútne potrebujem script upraviť resp. pridať do neho aby kontroloval či proces beží (môže sa stať že z nejakého dôvodu sám spadne a už sa potom ked beží script nezapne) a ak nebeží znova ho spustil.

Kód: Vybrať všetko

import subprocess,os,time
serverpath = "F:/xxxxx/xxxxx/xxxxx.exe" #cesta k serveru
logpath = "F:/xxxxx/xxxxx/xxxxx/xxxxx.txt" #cesta k log suboru
velkost = 52428800 #velkost suboru v bytes
cmd = serverpath #windowsovy prikaz k spusteniu programu, resp. to co zadavame to prikazoveho riadku ak to chceme spustit, s kompletnou cestou
p = subprocess.Popen(cmd, stdout=subprocess.PIPE) #spusti server

while True:
	open(logpath, 'a').close()
	s = os.path.getsize(logpath) #zisti velkost logu
	s = int(s)
	print("[Log] "+str(s)+"B")
	if s > velkost: #ak je velkost logu vacsia ako velkost
		p.kill() #zabi server
		open(logpath, 'a').close()
		os.remove(logpath) #pre istotu vymaz log
		p = subprocess.Popen(cmd, stdout=subprocess.PIPE) #spusti server znova
	time.sleep(5) # ak log nieje vacsi ako velkost počkaj 5 sekund a kontroluj znova ci sa to nezmenilo!

v Skratke potrebujem zachovať presne to čo to robí tzn. ukončí a znova spustí process (server) keď log súbor presiahne 50mb a pridať to aby to kontrolovalo či process ( server) beží a náhodou nespadol, ak spadol tak aby to znova spustilo process (server) a ďalej kontrolovalo log.
Fabo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6810
Registrovaný: 16 nov 2007, 17:23
Bydlisko: 's Chravenhache
Kontaktovať používateľa:

Re: Python restarter úprava

Príspevok od používateľa Fabo »

Otazka, preco to robis a preco ten log mazes?
cumilko
Star
Star
Používateľov profilový obrázok
Príspevky: 699
Registrovaný: 23 júl 2008, 16:02
Bydlisko: BL

Re: Python restarter úprava

Príspevok od používateľa cumilko »

pretože sa random freezuje server a jediná podmienka ktorá sa tam dala implentovať aby sa zistilo že je vo freeze je že sa zaplnil log tzn. keď sa zaplnil log nad 50mb tak bol automaticky server vo freeze (pretože spamoval random logy) a trebalo ho restartnut, log sa maže automaticky pri novom starte servera ale kedže to mal na starosti skript tak ako náhle skript znova zistil velkost logu a mal nad 50mb tak znovu nespustil server a trebalo ten log najprv zmazať až potom spustil script server.
xadman
Medium Star
Medium Star
Príspevky: 305
Registrovaný: 09 mar 2011, 17:02

Re: Python restarter úprava

Príspevok od používateľa xadman »

pridaj si tam toto

Kód: Vybrať všetko

if p.poll() == None:
    pass
    #program bezi
else:
    pass
    #program nebezi
alebo použi Zabbix
cumilko
Star
Star
Používateľov profilový obrázok
Príspevky: 699
Registrovaný: 23 júl 2008, 16:02
Bydlisko: BL

Re: Python restarter úprava

Príspevok od používateľa cumilko »

netuším kam presne to implentovať na akú line keď som sa pokúsil tak som dostal "unindent does not match any outer indentation level"
xadman
Medium Star
Medium Star
Príspevky: 305
Registrovaný: 09 mar 2011, 17:02

Re: Python restarter úprava

Príspevok od používateľa xadman »

Kód: Vybrať všetko

while True:
    if p.poll() != None:
        #program nebezi
        p = subprocess.Popen(cmd, stdout=subprocess.PIPE) #spusti server znova
    open(logpath, 'a').close()
    s = int(os.path.getsize(logpath)) #zisti velkost logu
    print("[Log] "+str(s)+"B")
    if s > velkost: #ak je velkost logu vacsia ako velkost
        p.kill() #zabi server
        open(logpath, 'a').close()
        os.remove(logpath) #pre istotu vymaz log
        p = subprocess.Popen(cmd, stdout=subprocess.PIPE) #spusti server znova
    time.sleep(5) # ak log nieje vacsi ako velkost počkaj 5 sekund a kontroluj znova ci sa to nezmenilo!
cumilko
Star
Star
Používateľov profilový obrázok
Príspevky: 699
Registrovaný: 23 júl 2008, 16:02
Bydlisko: BL

Re: Python restarter úprava

Príspevok od používateľa cumilko »

Ďakujem, momentálne funkčné presne čo treba snáď tam nebude ešte nejaký háčik :)
Napísať odpoveď