usługa w systemie Linux

0

Długo się zastanawiałem gdzie taki temat otworzyć. Wyjaśnie po krótce o co mi chodzi. Mam aplikacje w Linuxie, która z powodzeniem mogłaby działać jako usługa systemowa, konkretniej serwer. Chciałbytm napisać do niej drugi program, który by mi ją właśnie w ten sposób odpalał. Głównie o to chodzi abym mógł np w stylu apache'a go uruchamiać, restartować oraz zatrzymywać. Całość zamierzam pisać w Pythonie, ponieważ C widziałem ostatni raz jakieś 5-6 lat temu i nie wiele pamiętam, a poza tym nie bardzo umiałem w nim programować w Linuxie. Problem mój jest taki, że o ile wiem jak uruchomić aplikacje w oddzielnym wątku, wiem jak zrobić deamona, o tyle już nie wiem jak nią sterować, aby ubić blać. Przynam szczerze, że nie bardzo wiem z której strony sie do tego zabrać. Jeżeli ktoś by mógł poradzić o czym poczytać, czego poszukać byłbym wdzięczny. Nie wiem może równiez zaprzeganie Pythona to za dużo, może by wystraczył bash, ale skryptów jego również nie potrafie pisać :/

0
#!/bin/sh
case $1 in
    start)
        /usr/local/bin/mojprogram -c /etc/mojkonfig.conf &
        echo "Uruchamianie mojprogram"
        ;;
    stop)
        killall mojprogram
        echo "Zatrzymanie mojprogram"
        ;;
    reload)
        killall mojprogram && /usr/local/bin/mojprogram -c /etc/mojkonfig.conf &
        echo "Restartowanie mojprogram"
        ;;
    *)
        echo "Uzycie: $0 {start|stop|reload}"
       

Wiele wariacji...
Możesz killować i restartować na pdst zapisanego procesu PID w jakimś pliku, potem
zamiast killall program:

kill -9 cat /var/run/mojprogram.pid

Zależy czy program oferuje własny PID

0

Dzięki, przyznam, że nie sadziłem iż to takie proste. Program nie oferuje swojego pid niestety. Tylko o ile rozmumiem progrma nie uruchomi się jako demon więc i tak musze go uruchomić za pomoca pythona, ale to już nie stanowi wielkiego problemu.

0

Ale pisząc demon masz na myśli, żeby pracował w tle, żeby odpalał się razem z systemem czy jak?
Jeżeli masz na myśli "praca w tle", to po to jest & na końcu polecenia.

Ten skrypt używam do zarządzania serwerem FTP (vsftpd)

Skrypt odpala 3 demony (ftp, ftp ipv6, i anonftp).
Skrypt znajduje się w /usr/local/etc/rc.d , ma flagę wykonywania i system sam go odpala (używając "sh skrypt.sh start"), oraz sam zamyka ("sh skrypt.sh stop")

0

skrypty startowe demonow pod linuksem zazwyczaj znajduja sie albo w /etc/init.d albo w /etc/rc.d, bywa, że jedna lokacja jest linkiem do drugiej. obejrzyj sobie jak wygladaja wrzucone tam skrytpy. powinien miedzy nimi byc jakis 'skeleton' 'skel' czy podobnie, taki skrypt jest 'czysty', skopiuj przemianuj na nazwe swojej uslugi i wyedytuj dopisz co i gdzie trzeba. do dodania skrytpu do skryptow startowych powinienes miec programik chkconfig, moze inserv. slack ma inaczej, klasycznie jak w bsd, pojedynczy skrypt w ktorym samemu sie wybiera co ma byc odpalane

karol: background=YES w vsftpd.conf :)

//dzieki :) btw chyba background=1 - L

0

Chce aby pracował w tle, a prpos wiem gdzie się znajdują skrypty startowe, więc fajnie że & powoduje odpał w tle. Jeszcze raz dziekuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1