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
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
Odpowiedzi:
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!
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.
/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.
/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.
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.
Jeśli masz cron
demona, jednym z predefiniowanych haków czasu cron jest @reboot
, który naturalnie działa podczas uruchamiania systemu. Uruchom, crontab -e
aby edytować crontab
plik i dodaj wiersz:
@reboot /your/command/here
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.
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
service --status-all
liście?