gen999 Napisano Maj 16, 2012 Zgłoszenie Share Napisano Maj 16, 2012 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 More sharing options...
Mentat Napisano Maj 17, 2012 Zgłoszenie Share Napisano Maj 17, 2012 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 More sharing options...
gen999 Napisano Maj 17, 2012 Autor Zgłoszenie Share Napisano Maj 17, 2012 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 More sharing options...
@WalDo Napisano Maj 17, 2012 Zgłoszenie Share Napisano Maj 17, 2012 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 More sharing options...
gen999 Napisano Maj 18, 2012 Autor Zgłoszenie Share Napisano Maj 18, 2012 tutaj chodzi nie tyle o instalator z rpm tylk taki skrypt który doda ta moja niby usluge do autostartu fedory. Sposób z init.d juz rozpracowalem ale nie umiem sie zabrac za ten sposób z systemd Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
SeeM Napisano Maj 18, 2012 Zgłoszenie Share Napisano Maj 18, 2012 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 More sharing options...
Mentat Napisano Maj 18, 2012 Zgłoszenie Share Napisano Maj 18, 2012 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 More sharing options...
Rekomendowane odpowiedzi
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ę