Créer un service

Bonjour,

Je suis sur Debian Squeeze 2.6.39.4 arm
Tout est dans le titre mais bon, Je voudrais créer un service.
Pour le créer, j’ai fait ceci :

J’ai copié mon script dans /usr/bin

Puis j’ai copié le skeleton dans /etc/init.d/ (nom du service)"

Là j’ai modifie le fichier /etc/init.d/mochad-launcher (skeleton)
A la ligne “NAME=daemonexecutablename” par “NAME=mochad.sh

Une chose me surprend à la ligne “DAEMON=/usr/sbin/$NAME” alors que je l’ai copié dans “/usr/bin/” ?

Puis j’ajoute le service au boot

update-rc.d mochad-launcher defaults update-rc.d: using dependency based boot sequencing insserv: script mochad-launcher is not an executable regular file, skipped! insserv: script service-amule-daemon: service amule-daemon already provided! insserv: warning: script 'firewall' missing LSB tags and overrides

Quand je veux démarrer le service, j’ai ce message :

serveur@debian:~$ sudo /etc/init.d/mochad-launcher start sudo: unable to resolve host debian sudo: /etc/init.d/mochad-launcher: command not found serveur@debian:~$

Pourtant le fichier existe bien

serveur@debian:~$ ls -alFh /etc/init.d/mochad-launcher -rw-r--r-- 1 root root 4,2K 8 juin 00:04 /etc/init.d/mochad-launcher serveur@debian:~$ serveur@debian:~$ ls -alFh /usr/bin/mochad* -rwxr-xr-x 1 root root 448K 7 juin 23:59 /usr/bin/mochad.sh* serveur@debian:~$ serveur@debian:~$ ls -alFh /usr/sbin/mochad* ls: impossible d'accéder à /usr/sbin/mochad*: Aucun fichier ou dossier de ce type serveur@debian:~$

Pourquoi j’ai ce message quand je veux démarrer le service ?
Que faire pour résoudre le problème ?

Merci.

Bonjour,

J’ai résolu mon problème comme ceci :

J’ai copié mon script dans /usb/bin

root@debian:/home/serveur# cp -v /home/serveur/Domotique/x10/mochad/apps/test-mochad8.sh /usr/bin/mochad.sh « /home/serveur/Domotique/x10/mochad/apps/test-mochad8.sh » -> « /usr/bin/mochad.sh » root@debian:/home/serveur#

Puis je créer le fichier du service

Puis j’édite le fichier du service avec nano

Puis je colle ceci dans mon fichier /etc/init.d/mochad-launcher

[code]### BEGIN INIT INFO

Provides: test

Required-Start: $local_fs $syslog

Required-Stop: $local_fs $syslog

Default-Start: 2 3 4 5

Default-Stop: 0 1 6

Short-Description: Start test daemon

END INIT INFO

. /lib/lsb/init-functions

SCRIPT_NAME=namescript
SCRIPT=/usr/sbin/$SCRIPT_NAME

test -x $SCRIPT || exit 5

case $1 in
start)
log_daemon_msg "Starting $SCRIPT_NAME"
start-stop-daemon --start --background --quiet --exec $SCRIPT
status=$?
log_end_msg $status
;;
stop)
log_daemon_msg "Stopping $SCRIPT_NAME"
start-stop-daemon --stop --quiet --oknodo --name $SCRIPT_NAME
log_end_msg $?
;;
restart|force-reload)
$0 stop && sleep 2 && $0 start
;;
try-restart)
if $0 status >/dev/null; then
$0 restart
else
exit 0
fi
;;
reload)
exit 3
;;
status)
status_of_proc $SCRIPT “test $SCRIPT_NAME”
;;
*)
echo "Usage: $0 {start|stop|restart|try-restart|force-reload|status}"
exit 2
;;
[/code]

Dans le fichier /etc/init.d/mochad-launcher j’ai modifié deux lignes la ligne 12 et 13
A la 12 je remplace : “SCRIPT_NAME=namescript” par “SCRIPT_NAME=mochad.sh” (le nom de fichier script)
A la 13 je remplace : “SCRIPT=/usr/sbin/$SCRIPT_NAME” par “SCRIPT=/usr/bin/$SCRIPT_NAME” (le chemin au script)

Ensuite je donne les droits d’exécution au fichier du service

root@debian:/home/serveur# chmod 0755 /etc/init.d/mochad-launcher root@debian:/home/serveur#

Puis je rends mon script exécutable

root@debian:/home/serveur# chmod u+x /usr/bi/mochad.sh root@debian:/home/serveur#

Puis je démarre le service
root@debian:/home/serveur# /etc/init.d/mochad-launcher start
Starting mochad.sh:.
root@debian:/home/serveur#

ET là ça marche nickel, mais je ne sais pas si le service va démarrer tout seul a chaque reboot de la machine ?

Merci.

Pour t’assurer qu’il soit lancé au démarrage :

Bonjour,

Il me répond ceci :

root@debian:/home/serveur# insserv mochad-launcher insserv: script service-amule-daemon: service amule-daemon already provided! insserv: warning: script 'firewall' missing LSB tags and overrides root@debian:/home/serveur#

Je ne sais pas si la réponse est correct.
Que permet insserv ? d’insérer dans le boot le service ou il permet de vérifier si il et déjas dans le boot ?

Merci.

Oui, insserv ajoute le script au démarrage, selon les règles précisées au début du script.

Tu as bien suivi ces recommandations ?
wiki.debian.org/LSBInitScripts