J'ai besoin d'un processus avant de me connecter au système. Comment l'exécuter comme des services? comment faire des services sous Linux?
Dans Ubuntu et Fedora? Le service est personnalisé tomcat
J'ai besoin d'un processus avant de me connecter au système. Comment l'exécuter comme des services? comment faire des services sous Linux?
Dans Ubuntu et Fedora? Le service est personnalisé tomcat
Réponses:
Pour exécuter un service sans ou avant de vous connecter au système (c'est-à-dire "au démarrage"), vous devrez créer un script de démarrage et l'ajouter à la séquence de démarrage.
Un script de service comprend trois parties: démarrer, arrêter et redémarrer.
La structure de base d'un script de service est la suivante:
#!/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
Une fois que vous avez modifié le script à votre guise, placez-le simplement dans /etc/init.d/
Et ajoutez-le au processus de démarrage du service système (sur Fedora, je ne suis pas un utilisateur Ubuntu,> D):
chkconfig -add <ServiceName>
Le service sera ajouté au processus de démarrage du système et vous n'aurez pas à le redémarrer manuellement.
À votre santé!
Selon le système init, vous créez le script init différemment. Fedora vous donne le choix entre systemstart et systemd, et bien sûr la compatibilité SysV.
/etc/init/custom-tomcat.conf
mettre dedans:
start on stopped rc RUNLEVEL=3
respawn
exec /path/to/your/tomcat --and --parameters
Et votre Tomcat devrait démarrer au démarrage du système.
/etc/systemd/system/custom-tomcat.service
mettre dedans:
[Service]
ExecStart=/path/to/your/tomcat --and --parameters
Restart=always
[Install]
WantedBy=multi-user.target
et activez votre service en utilisant systemctl enable custom-tomcat.service
. Il sera lancé à chaque démarrage normal.
Bien sûr, il y a quelques options de configuration supplémentaires pour les deux systèmes init, vous pouvez les vérifier dans leur documentation.
Tomcat est un service assez courant, je recommanderais déjà de regarder le script init fourni par la distribution. Les chances sont que cela fonctionne avec votre binaire personnalisé, avec peu ou pas de réglages.
Si vous avez un cron
démon, l'un des crochets de temps cron prédéfinis est @reboot
, qui s'exécute naturellement au démarrage du système. Exécutez crontab -e
pour modifier votre crontab
fichier et ajoutez une ligne:
@reboot /your/command/here
Vous pouvez créer un script plus sophistiqué, qui vous permet d'exécuter sous les autorisations d'un utilisateur spécifique, comme suit:
#!/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
Le script va dans /etc/init.d/myservice, et vous démarrez le service en exécutant:
/etc/init.d/myservice start
Lisez la page de manuel sur start-stop-daemon pour comprendre comment cela fonctionne.
Dans Ubuntu ou Debian comme vous pouvez utiliser, pour ajouter
update-rc.d your_service defaults
ôter
update-rc.d -f your_service remove
Au revoir! \ o
est agréable à implémenter l'état des fonctions et force-reload pour être LSB-compilant
service --status-all
liste?