Uruchom tomcat podczas uruchamiania z uprawnieniami administratora


23

Potrzebuję jednego procesu przed zalogowaniem się do systemu. Jak uruchomić to jak usługi? jak zrobić usługi w systemie Linux?

W Ubuntu i Fedorze? Usługa jest dostosowana tomcat


6
Sposób uruchamiania usług jest bardzo zależny od dystrybucji Linuksa. Poinformuj nas, co próbujesz osiągnąć (i jakie dystrybucje, a może środowisko pulpitu), ponieważ obecnie myślę, że prawdopodobnie nie myślisz dobrze o tym problemie.
Xenoterracide

Odpowiedzi:


23

Aby uruchomić usługę bez lub przed zalogowaniem się do systemu (tj. „Podczas rozruchu”), musisz utworzyć skrypt startowy i dodać go do sekwencji rozruchowej.
Skrypt serwisowy składa się z trzech części: start, stop i restart.
Podstawowa struktura skryptu usługi to:

#!/bin/bash
#
RETVAL=0;

start() {
echo “Starting <Service>”
}

stop() {
echo “Stopping <Service>”
}

restart() {
stop
start
}

case “$1″ in
start)
  start
;;
stop)
  stop
;;
restart)
  restart
;;
*)

echo $”Usage: $0 {start|stop|restart}”
exit 1
esac

exit $RETVAL  

Po dostosowaniu skryptu do własnych upodobań, po prostu umieść go w /etc/init.d/
I dodaj go do procesu uruchamiania usługi systemowej (w Fedorze nie jestem użytkownikiem Ubuntu,> D):

chkconfig -add <ServiceName>  

Usługa zostanie dodana do procesu uruchamiania systemu i nie będziesz musiał ręcznie jej ponownie uruchamiać.

Twoje zdrowie!


2
Zauważ, że podczas uruchamiania, zatrzymywania i restartowania zwykle wystarczają proste skrypty inicjujące. Prawdopodobnie chcesz również dołączyć akcję „status”, która jest łatwa w Debianie i innych dystrybucjach, które zawierają status_of_proc () w pakiecie funkcji init. Dobrze zarządzane pakiety będą zawierać wszystkie funkcje wymagane przez LSB ( refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/… ). Skrypt inicjujący dystrybuowany wraz z tomcat w Ubuntu zawiera wszystkie te akcje, prawdopodobnie warto po prostu tego użyć.
Steven D

19

W zależności od systemu init skrypt inicjujący tworzy się inaczej. Fedora daje możliwość wyboru i system do wyboru, i oczywiście kompatybilność z SysV.

Dorobkiewicz

  • utwórz plik definicji usługi jako /etc/init/custom-tomcat.conf
  • włóż do środka:

    start on stopped rc RUNLEVEL=3
    respawn
    exec /path/to/your/tomcat --and --parameters
    

Twój Tomcat powinien uruchomić się przy starcie systemu.

Systemd

  • utwórz definicję usługi w /etc/systemd/system/custom-tomcat.service
  • włóż do środka:

    [Service]
    ExecStart=/path/to/your/tomcat --and --parameters
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

i włącz swoją usługę za pomocą systemctl enable custom-tomcat.service. Będzie uruchamiany przy każdym normalnym rozruchu.

Oczywiście istnieje kilka dodatkowych opcji konfiguracji dla obu systemów inicjujących, możesz je sprawdzić w ich dokumentacji.


7

Tomcat jest dość powszechną usługą, polecam przejrzenie skryptu inicjującego dostarczonego już przez dystrybucję. Możliwe, że działa z Twoim spersonalizowanym plikiem binarnym, bez drobnych poprawek.


6

Jeśli masz crondemona, jednym z predefiniowanych haków czasu cron jest @reboot, który naturalnie działa podczas uruchamiania systemu. Uruchom, crontab -eaby edytować crontabplik i dodaj wiersz:

@reboot /your/command/here

Czy dotyczy to wszystkich startupów, czy po prostu restartuje?
WhyNotHugo

Dotyczy TYLKO fcron - nie vixie-cron ani żadnego innego AFAIK cron.
Maciej Piechotka,

@Maciej Zdecydowanie działa dla vixie-cron; tego używam
Michael Mrozek

@Hugo Wszystkie startupy
Michael Mrozek

6

Aby po prostu uruchomić skrypt po uruchomieniu komputera, ale zanim użytkownik się zaloguje, możesz po prostu edytować skrypt /etc/rc.local, który ma dokładnie rozwiązać to zadanie.


3

Możesz stworzyć bardziej wyrafinowany skrypt, który pozwala na uruchamianie z uprawnieniami określonego użytkownika, w następujący sposób:

#!/bin/sh
NAME=myservice
DESC="My Service"
USERGROUP="myservice:myservice"

#Helper functions
start() {
        start-stop-daemon --start --quiet --background --make-pidfile \
                --pidfile /var/run/$NAME.pid --chuid $USERGROUP \
                --exec /usr/local/bin/myservice
}

stop() {
        start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
                --exec myservice --retry 30
}

case "$1" in
  start)
        echo -n "Starting $DESC: "
        start
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        stop
        echo "$NAME."
        ;;
  restart)
        echo -n "Restarting $DESC: "
        #set +e
        stop
        #set -e
        #sleep 1
        start

        echo "$NAME."
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart}" >&2
        exit 1
        ;;
esac

exit 0

Skrypt przechodzi do /etc/init.d/myservice, a usługa jest uruchamiana przez wykonanie:

/etc/init.d/myservice start

Przeczytaj stronę podręcznika start-stop-daemon, aby zrozumieć, jak to działa.


1

W Ubuntu lub Debian, jak możesz użyć, aby dodać

update-rc.d your_service defaults

usuwać

update-rc.d -f your_service remove

PA! \ o

miło jest implementować status funkcji i wymuszać ponowne ładowanie, aby były zgodne z LSB


jak sprawić, by mój demon pojawił się na service --status-allliście?
Necktwi
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.