jak zjistit jestli je zapnuty jiny skript

Odpovědět
Yenc
Příspěvky: 16
Registrován: stř 24. črc 2019 4:45:08
Dal poděkování: 4 poděkování
Dostal poděkování: 1 poděkování

jak zjistit jestli je zapnuty jiny skript

Příspěvek od Yenc » úte 28. led 2020 8:14:49

Ahoj,

s pythonem teprve začínám a potřeboval bych asi pomoct.

Snažím se udělat skript, který bude hlídat druhý skript.

první skript pracuje s mariadb, ale když restartuju mariadb službu, tak skript spadne.

moje vize je taková, že by druhý skript hlídal jestli běží první skript a jestli jede databaze.

v terminále se dá zjistit jestli ten skript jede "aux ps | grep program.py | grep -v grep", to ale vyplivne cely řádek ale jak docílit toho, že když mi dotaz vrátí tento řádek, tak aby mi python vyfiltroval, nebo řekl že je to v ok nebo nok?

snad je to pochopitelné :D
jiri.tusla
Příspěvky: 29
Registrován: ned 08. zář 2019 15:45:09
Dal poděkování: 5 poděkování
Dostal poděkování: 11 poděkování

Re: jak zjistit jestli je zapnuty jiny skript

Příspěvek od jiri.tusla » úte 28. led 2020 11:10:46

Předně bych se nejdřív zamyslel, jestli by master skript nedokázal provést zotavení po odpojení/restartu DB.

A jako druhé bych si v master skriptu udělal heartbeat server a ten hlídal watchdog skriptem.
Python multithreading umí. Jsem se teď koukal a jsou toho plné interfernety. :P
Yenc
Příspěvky: 16
Registrován: stř 24. črc 2019 4:45:08
Dal poděkování: 4 poděkování
Dostal poděkování: 1 poděkování

Re: jak zjistit jestli je zapnuty jiny skript

Příspěvek od Yenc » úte 28. led 2020 11:38:26

jiri.tusla píše:
úte 28. led 2020 11:10:46
Předně bych se nejdřív zamyslel, jestli by master skript nedokázal provést zotavení po odpojení/restartu DB.

A jako druhé bych si v master skriptu udělal heartbeat server a ten hlídal watchdog skriptem.
Python multithreading umí. Jsem se teď koukal a jsou toho plné interfernety. :P
o to zotaveni jsem se snazil ale skript zjistil, ze je databaze funkcni a kdyz hned po tom probehl restart sluzby, tak to skoncilo s chybou, proto jsem chtel ten druhy skript ktery by hlidal DB + ten prvni a pokud by padl ten prvni, tak by spustil/restartoval DB a nahodil by znovu ten skript
jiri.tusla
Příspěvky: 29
Registrován: ned 08. zář 2019 15:45:09
Dal poděkování: 5 poděkování
Dostal poděkování: 11 poděkování

Re: jak zjistit jestli je zapnuty jiny skript

Příspěvek od jiri.tusla » úte 28. led 2020 12:26:29

Uživatelský avatar
PetrSmetana
Příspěvky: 105
Registrován: pon 22. črc 2019 9:06:45
Bydliště: za humny ČB
Dal poděkování: 11 poděkování
Dostal poděkování: 23 poděkování
Kontaktovat uživatele:

Re: jak zjistit jestli je zapnuty jiny skript

Příspěvek od PetrSmetana » úte 28. led 2020 12:40:00

Potom co jsem nedávno napsal svůj první skript v pythonu k tomu mám určitě spousty co říct :)

V jednoduchosti je krása. Celý hlavní program bych obalil cyklem a v něm bych použil blok na odchycení výjimky - https://www.w3schools.com/python/python_try_except.asp

Pokud se výjimka přihodí uspi proces na pár sekund - https://www.w3schools.com/php/func_misc_sleep.asp

A následně se zkus spojit do DB znova - což se stane díky cyklu, který bude nově celý program obalovat.

V docházce kde jsem python použil (místní sekce projekty) používám stejně watchdog v cronu, který kontroluje různé výstupy a v případě potřeby restartuje celé RPi - primárně kvůli tomu, že se mi při výjimce nepodařilo nahodit nízkoúrovňové IO - MOSI/MISO.

Jinak multithreadig je taky řešení, ale to co popisuji výše mi přijde efektivnější, ale třeba tam máš celkově jinak postavenou architekturu té apky a potřebuješ to jinak :)
Modré z nebe na počkání, zázraky do dvou dnů.
Uživatelský avatar
PetrSmetana
Příspěvky: 105
Registrován: pon 22. črc 2019 9:06:45
Bydliště: za humny ČB
Dal poděkování: 11 poděkování
Dostal poděkování: 23 poděkování
Kontaktovat uživatele:

Re: jak zjistit jestli je zapnuty jiny skript

Příspěvek od PetrSmetana » úte 28. led 2020 12:42:47

jo a napadlo mě ještě jednodušší řešení - pokud ti to spadne, tak si to prostě spusť jako službu pomocí systemd a můžeš si tam restart sám definovat :)

V docházce to mám nastavené takto:

/etc/systemd/system/dochazka.service - https://experimentaal.org/dochazka/dochazka.service

Kód: Vybrat vše

sudo systemctl enable dochazka.service
Modré z nebe na počkání, zázraky do dvou dnů.
Yenc
Příspěvky: 16
Registrován: stř 24. črc 2019 4:45:08
Dal poděkování: 4 poděkování
Dostal poděkování: 1 poděkování

Re: jak zjistit jestli je zapnuty jiny skript

Příspěvek od Yenc » úte 28. led 2020 15:40:52

PetrSmetana píše:
úte 28. led 2020 12:42:47
jo a napadlo mě ještě jednodušší řešení - pokud ti to spadne, tak si to prostě spusť jako službu pomocí systemd a můžeš si tam restart sám definovat :)

V docházce to mám nastavené takto:

/etc/systemd/system/dochazka.service - https://experimentaal.org/dochazka/dochazka.service

Kód: Vybrat vše

sudo systemctl enable dochazka.service
Ahoj,

Diky, toto me nenapadlo :) dobry napad..

jen na okraj, ta malina bude ridit stary elektrokotel, ktery v sobe nema nic co by ho ridilo, akorad dva startery, ktere zpozduji stykace :)..

ted uz to tam bezi v podstate od zacatku topne sezony a kupodivu to funguje (hlida teplotu v kotli a na ukor ji to zapina/vypina spirály pri ruznych stavech (v zavislosti jestli je drahy/levny proud, jestli je zapnuty/vypnuty termostat atd.
chci to ale cele predelat :D
Uživatelský avatar
PetrSmetana
Příspěvky: 105
Registrován: pon 22. črc 2019 9:06:45
Bydliště: za humny ČB
Dal poděkování: 11 poděkování
Dostal poděkování: 23 poděkování
Kontaktovat uživatele:

Re: jak zjistit jestli je zapnuty jiny skript

Příspěvek od PetrSmetana » úte 28. led 2020 16:56:39

Yenc píše:
úte 28. led 2020 15:40:52
Ahoj,

Diky, toto me nenapadlo :) dobry napad..

jen na okraj, ta malina bude ridit stary elektrokotel, ktery v sobe nema nic co by ho ridilo, akorad dva startery, ktere zpozduji stykace :)..

ted uz to tam bezi v podstate od zacatku topne sezony a kupodivu to funguje (hlida teplotu v kotli a na ukor ji to zapina/vypina spirály pri ruznych stavech (v zavislosti jestli je drahy/levny proud, jestli je zapnuty/vypnuty termostat atd.
chci to ale cele predelat :D
Super! Kdyby ses chtěl podělit o své řešení, tak určitě zabrus do projektů :)
viewtopic.php?f=41&t=28
Modré z nebe na počkání, zázraky do dvou dnů.
Odpovědět