Skrypt w bashu, prośba o pomoc :)

  • Sprawdź bezpośredni link do posta
  • Statsy wątku

MarkPL | 12.04.2018 19:07 | Odpowiedzi: 12 | Śledzony: 2 | Czytano: 1251 razy

Wątków: 1106 | Odpowiedzi: 7068

Witam Ikona: :)

Założenie jest takie:

Są powiedzmy 3 skrypty które muszą być wykonywane w kolejności
skrypt1.sh , skrypt2.sh , skrypt3.sh

No i oczywiscie skrypt1.sh && skrypt2.sh && skrypt3.sh działa ale problem jest nastepujący.

Czasem skrypt1.sh ( a dokładnie to co wykonuje - dokładnie inny plik w pythonie ) wywali bład i powinno przestać wtedy wykywać dalsze skrypty, ale je wykonuje....

Jak zrobić by jesli skrypt1.sh spowoduje jakiś błąd przestało wykonywać pozostałe skrypty ??

Skocz do ostatniej odpowiedzi | Pierwszy post na stronie

Odpowiedzi:

12.04.2018 19:24

Wątków: 57 | Odpowiedzi: 3187

...

np. to co spotkałem to skrypt 1 zakłada plik w /tmp o nazwkie skrypt1.pid
po błędzie ma zostać, po poprawnym zakończeniu usuwamy.
Przy kolejnym wykonaniu sprawdzamy czy jest jak tak usuwamy i zakładamy ponownie.

Skrypt 2 sprawdza czy istnieje plik skrypt1.pid jak tak to się nie wykonuje, reszta analogicznie.
Skrypt 3 sprawdza czy istnieje plik skrypt1.pid lub skrypt2.pid jak tak to nie wykonuje się.

...

  • Sprawdź bezpośredni link do posta

12.04.2018 19:34

Wątków: 1106 | Odpowiedzi: 7068

...

dobry pomysł Ikona: :)

A pomozesz przykładem jak taki pid "załozyc" i wpisac zaleznosc sprawdzenia i wykonania dalej ?

  • Sprawdź bezpośredni link do posta

12.04.2018 19:45

Wątków: 987 | Odpowiedzi: 21464

hmm

Wloz wszystko w jeden script Ikona: :P jak sie wywali to calosc ;P

https://www.youtube.com/watch?v=Z7dLU6fk9QY | 1% na KRS: 0000582875

  • Sprawdź bezpośredni link do posta

12.04.2018 19:47

Wątków: 1106 | Odpowiedzi: 7068

@frazir

to chyba sie tak nie da Ikona: :)

Szczegolnie ze skrypt1 uruchamia plik pythona.

Pomysł misiu77 jest dobry tylko potrzebuje jakis przykład jak to wykonać Ikona: :)

  • Sprawdź bezpośredni link do posta

12.04.2018 20:25

Wątków: 987 | Odpowiedzi: 21464

MarkPL

copy paste Ikona: :P

https://www.youtube.com/watch?v=Z7dLU6fk9QY | 1% na KRS: 0000582875

  • Sprawdź bezpośredni link do posta

12.04.2018 20:30

Wątków: 1106 | Odpowiedzi: 7068

...

Misiu777 nadzieja w Tobie Ikona: :)

12.04.2018 21:19

Wątków: 1 | Odpowiedzi: 181

MarkPL

Dodaj do każdego skryptu w drugim wersie (po shebang - #!/bin/bash):

set -e
Później już, tak jak wskazałeś na samym początku:
skrypt1.sh && skrypt2.sh && skrypt3.sh


'set -e' zatrzyma skrypt na pierwszym błędzie i wyjdzie z kodem błędu 127 zamiast 0, dlatego && teraz zadziała.

  • Sprawdź bezpośredni link do posta

12.04.2018 21:27

Wątków: 1106 | Odpowiedzi: 7068

...

Nawet jeśli skrypt1 wywołuje uruchomienie skryptu w python ?
I to ten python tak naprawdę generuje czasami ten błąd.

12.04.2018 21:32

Wątków: 1 | Odpowiedzi: 181

...

Tak, działa nawet w takiej sytuacji jak mówisz. Zresztą sam sprawdź Ikona: ;)

  • Sprawdź bezpośredni link do posta

12.04.2018 21:53

Wątków: 1106 | Odpowiedzi: 7068

Ok :)

A druga sprawa, dublują się czasami te same skrypty, procesy, da się jakoś zapisać w skrypcie sh że proces z tego skryptu może być uruchomiony wyłącznie 1 raz ??

12.04.2018 23:05

Wątków: 57 | Odpowiedzi: 3187

...

Ja dopiero teraz jestem.

w skrypcie nr 2 lub 3 sprawdzenie będzie typu


if [ ! -f /tmp/skrypt1.pid ]; then
python file.py
fi

usunięcie to wiadomo
rm /tmp/skrypt1.pid

jakbyś chciał OR to [! -f ....] || [! -f ....]

a założenie to pewnie wystarczy:
touch /tmp/skrypt1.pid

...

13.04.2018 18:05

Wątków: 1 | Odpowiedzi: 181

@MarkPL

Żeby skrypt sprawdzał czy już jest uruchomiana jego wcześniejsza instancja, możesz dopisać w kolejnej linii po 'set -e':

if [ "`pgrep -f $0 | wc -l`" -gt 2 ]; then
    exit 0
fi

Aby dodać odpowiedź zaloguj się.

Ostatnie tematy na boardzie
1. [GIEŁDA] Trochę nowego osprzętu/podzespołów na sprzedaż... 0 Hobordd Dziś 12:34
2. [BLOG] Olx.pl koniec darmowych ogłoszeń. 10 rms84 | smile Dziś 00:48
3. Outlook 2016 powiadomienia na pulpicie 1 Y4k | sztam 25.05.2018
4. [BLOG] Konto Epic. 3 rms84 | rms84 25.05.2018
5. News - Premiera Detroit: Become Human już dziś 3 daniel_wl | penetr_us 25.05.2018
Poprzednie-Następne
1. Domena zapytanie 2 BUDASTY | Marek1712 12.04.2018
2. [BLOG] [NIE]oficjalny zlot rowerowy (Bielsko-Biała) 409 Talar | Rzuf 12.04.2018
3. Rozterki AMD vs Intel 26 ^dimmu^ | grzech1991 12.04.2018
4. [BLOG] Muzyka na dziś 2 skaner458 | Milo 12.04.2018
5. News - Reddit ma gdzieś polityczną poprawność. "Rasizm jest.... 42 filip.m | LORD_ZED 13.04.2018
6. Problem z połączeniem VPN - blokowanie karty LAN 6 mario_34 | mario_34 13.04.2018