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: sehy 05 Srpna 2014, 12:24:55

Název: Problém s sh skriptem
Přispěvatel: sehy 05 Srpna 2014, 12:24:55
Zdravím,
mám problém s sh skriptem. Snažím se napsat skript který bude kontrolovat běžící službu. Když poběží ukončí se, když bude vypnutá zapne ji. Problém se v tom že když je služba vypnutá tak ji program spustí (služba se spouští cca 45 s) tak vyhodí chybu (myslím si že je to tím že se nestihne spustit). Jak docílím toho že skript počká na to až se služba spustí a nebude pokračovat v programu (skriptu)?

Kód: [Vybrat]
#!/bin/bash
  SERVICE="core"

  PSV=$(ps aux | grep -v "grep" | grep $SERVICE | wc -l)

  if [ $PSV == "0" ];
    then

      # Vypnuta!
      echo "$SERVICE vypnuta"
      /etc/init.d/edvrserver restart
      else

      # Zapnuta
      echo "$SERVICE zapnuta"

  fi

  unset SPHINXPID
  unset SERVICE

  exit 0

Název: Re:Problém s sh skriptem
Přispěvatel: Mariocz 05 Srpna 2014, 13:07:26
po spuštění pužij příkaz sleep 50. počká padesát sekund a pak pokračuje
Název: Re:Problém s sh skriptem
Přispěvatel: ntz_reloaded 05 Srpna 2014, 13:52:02
protoze ten skript je celej naprosto spatne ;)
Název: Re:Problém s sh skriptem
Přispěvatel: Cuore 05 Srpna 2014, 16:22:55
takhle ne použij smyčku...
Název: Re:Problém s sh skriptem
Přispěvatel: ntz_reloaded 05 Srpna 2014, 16:33:29
takhle ne použij smyčku...

na co, */N * * * * /teh/script.sh v cronu je mnohem lepsi nez smycka ;) .. kdyz uz jsme u toho, tak spis at:

1) odstrani tu hruzu PSV=$(ps aux | grep -v "grep" | grep $SERVICE | wc -l)
2) at nepouziva VELKA pismena na sve promenne .. kua .. shared/systemove promenne jsou velkejma .. uz se to prosim lidi naucte a prestante tam busit ten UPPERCASE
3) At normalne cekuje pomoci /etc/init.d/foo status, jestli service bezi a nebo ne
Název: Re:Problém s sh skriptem
Přispěvatel: GdH 05 Srpna 2014, 17:40:10
Citace
ps aux | grep -v "grep" | grep $SERVICE | wc -l

Kód: [Vybrat]
if pgrep $SERVICE; then ....by bylo elegantnější a pokud by to mělo prohledávat celý příkaz, ne jen jména procesů, pak pgrep -f. To jen pro info.

Jinak ale bude rozumnější co psal ntz, případně to celé předat upstartu, či systemd, které to umí hlídat samy.

Edit: smazal jsem poznámku, která ze mě dělala vola :)