Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: hajiborojobo 20 Března 2017, 14:05:26
-
Čauky, poprosím o radu, mám jednoduchý sh script(nazývejme A), občas nechám script killnout a potřeboval bych,aby jiný script (B) kontroloval,zda úloha A jede,pokud ne,aby úlohu A znovu spustil. Jedná se o jednoduchý feh s prezentací.(script B neboli kontrolovač úlohy A) bych hodil do crontabu s 10min intervalem,ale to zž je jedno,existuje něco takového jednoduchého? Dík za tip ;)
-
Potrebujes aby sa ti ten skript spustil okamzite po zabiti toho skriptu A?Ja som tu riesil nieco podobne len s tym ze spustam skript dajme tomu podla teba A. Ja kontrolujem ci skript A bezi a ak ano tak ho zabije (killne) a hned ho znovu spusti.
#!/bin/bash
#nacita PID spustenych procesov s nazvom gamma0.75
#grep prepusti cisla PID procesu ktore su ine ako prave spustany a killne ich
pgrep "gamma0.75" | grep -v $$ | xargs kill -9
#tu zadas ten tvoj skript
Cize pri znovuspusteni skriptu sa beziaci zabije a spusti sa novy. "gamma0.75" nahrad nazvom tvojho skriptu.
Alebo inak napisane ten riadok iba doplnis na zaciatok tvojho skriptu.
-
děkuji,funguje parádně, jednoduchá a perfektní odpověď ;)
-
tak změna,pokud to spuštím jako spustitelný soubor,tak to jede parádně, přes crontab to jen jednou kilne a už nespustí,bude potřeba to editovat pro crontab použití?
-
S cron/crontab som este nerobil a neviem ake su tam podmienky, ale nasiel som dajake obmedzenia ktore tam su. Na konci clanku
https://www.pantz.org/software/cron/croninfo.html
Pripadne popis ako to mas nastavene. Spustas priamo ten skript alebo pustas skript ktori spusti ten tvoj skript.
Mozno to pomoze niekomu kto vie s crontab a poradi.
-
tak změna,pokud to spuštím jako spustitelný soubor,tak to jede parádně, přes crontab to jen jednou kilne a už nespustí,bude potřeba to editovat pro crontab použití?
Pokud pouštíš grafickou aplikaci, musíš nastavit systémovou proměnnou $DISPLAY, ta v shellu, který spouští cron, nastavena není. V terminálu si zjisti hodnotu:
echo $DISPLAY
a tu pak nastav v cronu, případně ve skriptu, ze kterého aplikaci spouštíš:
env DISPLAY=:0 /cesta/k/aplikaci
-
používám jednoduchou prezentaci pomocí feh
#!/bin/bash
pgrep "feh" | grep -v $$ | xargs kill -9
feh --quiet --reload 3 --recursive --slideshow-delay 10 --fullscreen '/cesta k fotkam/'
v crontabu mám nastaveno čas a /cesta ke skriptu feh.sh
edit: env display funguje dobře,vložil jsem to přímo do skriptu.
Děkuji všem za skvělé rady ;)