logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

BASH - Skrypt w pętli bez zamrażania terminala, uruchamianie pyLoadCore.py

Gawcio90 21 Paź 2012 01:38 1491 5
REKLAMA
  • #1 11433320
    Gawcio90
    Poziom 16  
    Posty: 303
    Pomógł: 9
    Ocena: 10
    Witam. Mam problem kiedy próbuję uruchomić skrypt. Chciałbym aby działał w petli oraz po jego wywołaniu nie "zamrażał" terminala.

    Skrypt:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Skrypt uruchamiam następująco:

    REKLAMA


    ./check_mount.sh &


    Problemem jest ta linijka:
    python /usr/share/pyload/pyLoadCore.py --daemon


    Gdyby w tym momencie przykładowo było:


    Skrypt uruchomił by się prawidłowo.


    Próbowałem różnych sposobów jednak zawsze muszę nacisnąć jakiś klawisz aby "dokończyć" skrypt.

    Dlaczego?

    Pozdrawiam Gawcio
  • REKLAMA
  • REKLAMA
  • #3 11433574
    Gawcio90
    Poziom 16  
    Posty: 303
    Pomógł: 9
    Ocena: 10
    Witam.
    Próbowałem również uruchamiać skrypt pythona ze znacznikiem "&" na końcu lini jednak efekt taki sam.

    root@debian:/scripts# ./check_mount.sh &
    [1] 9662
    root@debian:/scripts# Daemon PID 9670
    []
    
  • REKLAMA
  • #4 11433903
    Sam Sung
    Poziom 33  
    Posty: 2015
    Pomógł: 227
    Ocena: 584
    Porada poprzednika wydaje się bez sensu, przecież skrypt ma wykonywać pythona jako główne zadanie, jedynie sam ma chodzić w tle. Jeśli python będzie uruchamiany ze skryptu w tle, to to całkowicie zaburzy logikę skryptu.
    Może skrypt pythona próbuje coś czytać z wejścia?
    Może spróbuj uruchomić główny skrypt z użyciem setsid, żeby odciąć go od terminala.
  • REKLAMA
  • #5 11434004
    Gawcio90
    Poziom 16  
    Posty: 303
    Pomógł: 9
    Ocena: 10
    Kiedy uruchamiam skrypt pythona bezposrednio z terminala to startuje normalnie. Wyswietla tylko numer procesu.

    Sprawdze jeszcze Twoja rade.

    EDIT:

    Próbowałęm wg Twojej rady jednak efekt taki sam. Macie jeszcze jakiś pomysł?

    EDIT:

    Skrypt po usunięciu pętli działa prawidłowo:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Wiem, że mógłbym go dodać w takiej postaci do crona jednak ciekawi mnie rozwiązanie pierwotnego pomysłu z pętlą.
  • #6 11444367
    hans512
    Poziom 15  
    Posty: 171
    Pomógł: 9
    Ocena: 16
    Ogolnie ten twoj skrypt jest bardzo zle napisany. Napisz lepiej dokladnie do czego ma sluzyc i ktos napisze ci tu poprawna wersje.

    if  [ -z "$(pgrep python)" ];
    To jest bardzo bardzo bardzo zle podejscie. Bo co jesli jakis inny proces czy uzytkownik akurat uruchomi sobie Python? Ma to zero zwiazku ze skryptem a moze go zablokowac.
REKLAMA