x-kom hosting

[CentOS 6.5] Oporna usługa nie uruchamia się po bootowaniu

sigmaPi
utworzono
utworzono

Czołem.
Próbuję wymusić automatyczne uruchomienie usługi zaraz po włączeniu serwera. Zwykle wystarcza do tego chkconfig nazwaUslugi on, ew. z narzuceniem odpowiedniego "runlevel". Niestety jednej usługi nie mogę w ten sposób uruchomić. Co ciekawe, usługa ta wywołana ręcznie za pomocą /etc/init.d/nazwaUslugi start startuje bez problemu. W chkconfig --list nie doszukałem się żadnych nieprawidłowości - uruchamianie usługi jest włączone dla runlevel 2345, czyli teoretycznie powinna startować. Próbowałem rozwiązać ten problem poprzez próbę wywołania usługi z /etc/rc.d/rc.local - niestety z identycznym skutkiem.

 

Co może być przyczyną takiego stanu rzeczy i jakie w tej sytuacji pozostają mi dostępne rozwiązania?

MasterYoghourt
komentarz
komentarz

Być może jest to kwestia zależności od innej usługi. W uruchomionym systemie usługi, które miały się odpalić, już działają.

 

Jesli chodzi o kolejność uruchamiania usług, to jak dobrze pamiętam skrypt inicjujacy daną usługę ma w nazwie numer kolejności. Tak było kiedyś, ale czy dla Red Hat/CentOS 6.5 nadal tak jest, nie wiem, poczytaj dokumentację/many.

 

Druga sprawa, powinienes zaglądnąć wpierw w logi i zobaczyć czy twoja usługa nie pozostawiła po sobie jakiś komunikat, przy neudanej próbie uruchumienia.

  • Dobra wypowiedź 1
sigmaPi
komentarz
komentarz

Dzięki za pokierowanie mnie na właściwe tory. Rzeczywiście, w logu programu zauważyłem błąd dostępu do ścieżki pliku wykonującego program. Usługa pozyskuje ją z wbudowanych w program funkcji Pythonowskich. Program jako usługa wywoływany jest przez:

 su $USER -s /bin/bash -m -c "$PYTHON $APPDIR/$APPEXECUTABLE" >> $LOG 2>&1 & 

Gdzie $USER=apache, $PYTHON=python2.7, $APPDIR=`python2.7 -c 'import program_env;program_env.getInstallDir()'`, $APPEXECUTABLE=prog_monitor.py. Problem w tym, że podczas uruchamiania usługi przy bootowaniu ścieżka z $APPDIR jest obcinana i zamiast pełnej zwracana jest tylko jej część: /src/bin zamiast /opt/program/src/bin.

Jeszcze raz przypomnę, że gdy uruchomię usługę ręcznie z roota za pomocą /etc/init.d/nazwaUslugi start - wszystko gra.

Póki co zastąpiłem zmienną $APPDIR ręcznie wpisaną ścieżką, co podnosi usługę automatycznie po starcie systemu. Niemniej zastanawia mnie przyczyna wystąpienia tego problemu.

Z ciekawości przełączyłem się na użytkownika apache, w Pythonie zaimportowałem moduł programu i wywołałem getInstallDir(). O dziwo zwrócona została ścieżka prawidłowa. To samo gdy wywołam tą funkcję z roota.

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.