Skocz do zawartości

Tworzenie Własnej Usługi W Fedorze I Instalatora Do Niej


gen999

Rekomendowane odpowiedzi

Witam

 

Jestem tutaj nowy i być może zostane skrytykowany za durne pytanie, ale do rzeczy.

 

Mam za zadanie napisać skrypt który będzie zachowywał się jak usługa tj. dostanie swój PID będzie można go zatrzymać uruchomić zrestartować i sprawdzić stan. Usługa ta ma działać w run levelu 3 i 5 w pozostałych ma zwracać komunikat "this service cannot run in this runlevel" czy coś w tym guście. Oczywiście usługa ma wstawać razem z systemem. Dodatkowo ma być utworzony instalator i deinstalator tej usługi.

 

poniższy skrypt jest zneziony w internecie i trochę zmodyfikowany ale nie spełnia warunków zadania. Tworzy plik blokady ale nie tworzy samego procesu to znaczy odpalając ps nie ma procesu o nazwie psikus

 

# !/bin/bash

. /etc/init.d/functions

 

start() {

 

#initlog -c echo "-n Starting psikus server "

#/path/to/PSIKUS &

### Create the lock file ###

touch /var/lock/subsys/PSIKUS

success $"PSIKUS server started"

echo

}

stop() {

echo " Stoping psikus service "

pkill PSIKUS

rm -f /var/lock/subsys/PSIKUS

echo

}

### main logic ###

case "$1" in

start)

start

;;

stop)

stop

;;

status)

status PSIKUS

;;

restart|reload|condrestart)

stop

start

;;

*)

echo $"Usage: $0 {start|stop|restart|reload|status}"

exit 1

esac

exit 0

 

Mam nadzieję że jasno wyraziłem o co mi chodzi i ktoś z Was pomoże mi rozwiązać mój problem

Odnośnik do komentarza
Udostępnij na innych stronach

W funkcji start masz wykomentowane wykonanie programu. Znak hash na poczatku oznacza komentarz. Ma tam byc pelna sciezka do programu.

Nie wiem czy specjalnie napisales wielkimi literami nazwe zeby byla bardziej widoczna. Pamietaj ze w Linuksie wielkosc liter ma znaczenie.

#/path/to/PSIKUS &

 

Inne skrypty mozesz podejrzec w /etc/init.d/. Jest ich juz niewiele w Fedorze 16 bo wiekszosc zostala przeportowana na systemd.

Odnośnik do komentarza
Udostępnij na innych stronach

w koncu zrozumialem o co chodzi w tym zadaniu i tak naprawde chodzilo o skrypt taki jak ponizej. Problem w tym ze nie wiem jak zrobic instalator takiej "pseudo-uslugi" i tak ja skonfigurowac zeby dzialala tylko w runlevelu 3 i 5 a w pozostalych nie oraz mam wykonac wersje instalatora dla fedory 16 i np dla 13

 

# !/bin/bash

 

function check

{

if [ -e /tmp/PSIKUS ]; then

echo "psikus dziala"

else

echo "psikus niedziala"

fi

}

 

function checkrun

{

if [ -e /tmp/PSIKUS ]; then

echo "psikus juz dziala"

else

crstart

fi

}

 

function crstart

{

touch /tmp/PSIKUS

echo "uruchomilem psikus"

}

 

function checkstop

{

if [ -e /tmp/PSIKUS ]; then

rm -f /tmp/PSIKUS

echo "zatrzymalem psikus"

else

crstop

fi

}

 

function crstop

{

echo "psikus nie jest uruchomiony!!"

}

 

start() {

checkrun

}

stop() {

checkstop

}

case "$1" in

start)

start

;;

stop)

stop

;;

status)

check

;;

restart|reload|condrestart)

stop

start

;;

*)

echo $"Usage: $0 {start|stop|restart|reload|status}"

exit 1

esac

exit 0

Odnośnik do komentarza
Udostępnij na innych stronach

Instalator to zapewne pakiet RPM. Dobry poczatek → http://wiki.fedora.pl/wiki/Rpmbuild

Uruchamianie serwisu na odpowiednich runlevels zapewniaja linki do skryptu serwisu umieszczone w odpowiednich katalogach (skrypt w /etc/rc.d/init.d i linkowanie do /etc/rc.d/rc3.d i rc5.d) - obejrzyj to zrozumiesz. Z tym, ze nalezy pamietac o tym co napisal Menant powyzej: o ile w F13 jest to OK, to w F16 powinny to juz byc skrypty systemd.

Odnośnik do komentarza
Udostępnij na innych stronach

To nie jest tak, ze stary init na nowych Fedorach nie dziala. Mozesz tez wykorzystac xinetd i oprzec sie na nim do wykonywania swoich uslug. Niby juz sie tego nie uzywa, ale równiez dziala. Takze jest kilka sposobów do wyboru.

Odnośnik do komentarza
Udostępnij na innych stronach

Musisz niestety troche poczytac. Pobiezne informacje sa pod adresem http://fedoraproject.org/wiki/Systemd.

Pliki opisujace uslugi sa kazdym razie w katalogu /lib/systemd/system/ i koncza sie na .service. W przeciwienstwie do skryptów wygladaja bardziej jak podstawienia zmiennych. Widze ze przypisuje sie np. komendy które nalezy wykonac aby uruchomic albo zatrzymac usluge.

Strona man: http://0pointer.de/p...md.service.html.

Strona projektu: http://www.freedeskt...oftware/systemd.

 

EDIT.

I jak SeeM napisal uslugi opisane w init dzialaja w F16, choc sa powoli wycofywane.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...