Portál AbcLinuxu, 12. května 2025 07:29

Dotaz: Jak restartovat vlastní program

16.9.2015 16:34 Jára
Jak restartovat vlastní program
Přečteno: 650×
Odpovědět | Admin
Ahoj, už 2 hodiny se snažím najít kloudný způsob, jak restartovat svůj program v Pythonu pro uplatnění změn. Bohužel jsem vůbec nic nevymyslel. Neporadí někdo ? Dík

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

16.9.2015 16:58 NN
Rozbalit Rozbalit vše Re: Jak restartovat vlastní program
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zabijes ho a pustis znovu?
16.9.2015 20:28 Jára
Rozbalit Rozbalit vše Re: Jak restartovat vlastní program
Co že to mám udělat ?
16.9.2015 21:34 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Jak restartovat vlastní program
Spustený program sa volá proces. Proces vznikne spustením programu a zanikne buď tým, že sám dobrovoľne skončí, alebo dostane signál, aby skončil. Signál je možné poslať príkazom kill. Na to potrebuješ číslo procesu. Ten možno získať ako výstup programu ps alebo nejakým iným programom na správu procesov (tam detaily závisia na použitom prostredí a distribúcii). Ak bol program spustený z commandline-u, tak terminál je spravidla nastavený tak, že poslednému spustenému programu pošle signál po stlačení kombinácie kláves Ctrl+C.

Ak chceš lepšiu radu, tak popíš podrobnejšie, ako si program spustil.
17.9.2015 00:54 nobody
Rozbalit Rozbalit vše Re: Jak restartovat vlastní program
cislo procesu (pid) je mozne ziskat pomoci "pidof nazev_binarky"
pripadne misto "kill pid_procesu" lze pouzit "killall nazev_binarky"
17.9.2015 09:01 Jára
Rozbalit Rozbalit vše Re: Jak restartovat vlastní program
Spuštění programu provádím z cl takto /root/myscrs.py

Jinak nechápu, jak můžu zabitý program spustit sám sebe :(
17.9.2015 09:30 NN
Rozbalit Rozbalit vše Re: Jak restartovat vlastní program
Odpoved odpovida dotazu. Nenapsal jsi, ani co je to za program, ani co jsou to "zmeny". Takze laskave napis o co se jedna a snaz se podrobne popsat o co jde.
Řešení 1× (Michy)
16.9.2015 20:42 Václav Vanc | skóre: 14
Rozbalit Rozbalit vše Re: Jak restartovat vlastní program
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkus:
import sys
 
os.execv(__file__, sys.argv)
17.9.2015 09:06 pb
Rozbalit Rozbalit vše Re: Jak restartovat vlastní program
Odpovědět | | Sbalit | Link | Blokovat | Admin
Aby program sám sebe zabil a spustil se znovu, to není obvyklé. Lze, to, ale spíš se to dělá tak, že je něco, co ten program spustí, hlídá, zda došlo ke změnám, a pokud ano, tak zabije a spustí znovu. Případně ještě jako bonus hlídá, jestli program nechcípnul sám, a spustí ho znovu. Řeší to vpodstatě všechny pythonové webové frameworky, když se pouští s nějakým parametrem --reload. Najdete to třeba v pyramid pserve

https://github.com/Pylons/pyramid/blob/master/pyramid/scripts/pserve.py

Dobrou chuť!
Václav 17.9.2015 09:10 Václav "Darm" Novák | skóre: 26 | blog: Darmovy_kecy | Bechyně / Praha
Rozbalit Rozbalit vše Re: Jak restartovat vlastní program
To už bych raději našel způsob jak aplikovat změny bez restartu…
Cross my heart and hope to fly, stick a cupcake in my eye!
Řešení 1× (mimi.vx)
17.9.2015 09:55 mimi.vx | skóre: 37 | blog: Mimi.VX | Praha
Rozbalit Rozbalit vše Re: Jak restartovat vlastní program

a co tohle ..https://docs.python.org/3/library/imp.html?highlight=reload#imp.reload , staci se podivat do dokumentace , jinak v py2 je to builtin funkce reload

USE="-gnome -kde";turris
xxxxxx avatar 17.9.2015 19:22 xxxxxx | skóre: 23
Rozbalit Rozbalit vše Re: Jak restartovat vlastní program
Odpovědět | | Sbalit | Link | Blokovat | Admin
Myslím, že by mohlo fungovat ho spouštět bash skriptem:
#!/bin/bash

PID=$(pgrep $1)

if [ ${PID:-null} = null ]
then
    kill $PID
    $1.py
fi
Takže po napsání změn spustit ./ten_restart_skript.sh nazev_skriptu_bez_py

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.