View previous topic :: View next topic |
Author |
Message |
jaypeche Apprentice
Joined: 13 Jun 2007 Posts: 171 Location: France
|
Posted: Fri Dec 02, 2011 5:58 pm Post subject: [Runscript] Mise au point (Résolu) |
|
|
Bonjour à tous,
Je cherche à créer un fichier runscript pour démarrer un service nommé "Openplacos", qui est en fait un serveur capable de gérer des cartes Arduino, Phidgets et autres.. Ceçi afin de réaliser un petit automate pour pas cher, ce logiciel est écrit en RUBY.
Le fichier d'origine et fonctionnel est le suivant :
Fichier original : /etc/init.d/openplacos
Code: | #!/bin/bash
case "$1" in
start)
echo "Starting OpenplacOS"
export RUBYOPT="rubygems"
su -l openplacos -s /bin/sh -c "/usr/bin/openplacos-server /etc/default/openplacos > /tmp/openplacos.log &"
if [ $? -gt 0 ]; then
exit 1
else
exit 0
fi
;;
stop)
echo "Stopping OpenplacOS"
pkill openplacos -u openplacos
if [ $? -gt 0 ]; then
exit 1
else
exit 0
fi
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "usage: $0 {start|stop|restart}"
esac
exit 0
|
Je souhaiterais me tourner vers un fichier runscript disons plus standard, pour une meilleure intégration Gentoo :
Fichier runscript à dévelloper : /etc/init.d/openplacos
Code: | #!/sbin/runscript
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
USER=openplacos
CONFIG=/etc/conf.d/openplacos
LOGFILE=/tmp/openplacos.log
DAEMON=/usr/bin/openplacos-server
depend() {
need dbus mysql
after logger
}
start() {
ebegin "Starting openplacos"
start-stop-daemon --start --quiet \
--user ${USER}:${USER} \
--exec ${DAEMON} \
--background \
eend $? "Failed to start openplacos !"
}
#stop() {
# ebegin "Stopping openplacos"
# start-stop-daemon --stop --quiet \
# --exec /usr/bin/openplacos-server
# eend $? "Failed to stop openplacos !"
#}
|
Je me suis penché sur la documentation : http://www.gentoo.org/doc/fr/handbook/handbook-x86.xml?part=2&chap=4 , mais je n'arrive pas à lancer le serveur avec mon script. J'ai cette erreur :
Code: | dbox2 init.d # /etc/init.d/openplacos start
/etc/init.d/../conf.d/openplacos: line 1: objects: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 3: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 4: path: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 5: model: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 6: regul: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 7: action-: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 8: frequency: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 9: type: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 11: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 12: path: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 13: model: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 15: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 16: path: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 17: model: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 18: depends: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 19: temp: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 21: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 22: path: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 23: model: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 24: depends: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 25: temp: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 26: regul: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 27: action-: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 28: frequency: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 29: plugin_fill_sql_frequency: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 32: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 33: path: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 34: model: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 36: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 37: path: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 38: model: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 41: card: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 42: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 43: exec: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 44: config: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 45: timeout: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 46: plug: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 47: /Pin_1:: Aucun fichier ou dossier de ce type
/etc/init.d/../conf.d/openplacos: line 48: /Pin_2:: Aucun fichier ou dossier de ce type
/etc/init.d/../conf.d/openplacos: line 49: /Pin_3:: Aucun fichier ou dossier de ce type
/etc/init.d/../conf.d/openplacos: line 50: /Pin_4:: Aucun fichier ou dossier de ce type
/etc/init.d/../conf.d/openplacos: line 51: /Pin_5:: Aucun fichier ou dossier de ce type
/etc/init.d/../conf.d/openplacos: line 52: /Pin_6:: Aucun fichier ou dossier de ce type
/etc/init.d/../conf.d/openplacos: line 55: plugins: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 57: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 58: method: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 59: exec: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 61: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 62: method: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 63: exec: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 65: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 66: method: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 67: exec: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 69: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 70: method: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 71: exec: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 72: file: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 74: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 75: method: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 76: exec: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 77: port: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 79: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 80: method: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 81: exec: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 82: port: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 84: user: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 87: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 88: permissions: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 89: read: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 92: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 93: hash: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 94: permissions: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 95: read: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 96: write: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 97: exclude: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 100: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 101: hash: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 102: permissions: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 103: read: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 106: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 107: hash: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 108: permissions: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 109: write: : commande introuvable
* openplacos: error loading /etc/init.d/../conf.d/openplacos
* ERROR: openplacos failed to start |
Malgré mes recherches, je ne sais pas trop comment faire pour solutionner ce problème, il me semble et je peux me tromper que cela est du au fait que le serveur est un script RUBY, voiçi le code :
http://pastebin.com/zWuHyYrd
comment coder mon script pour réaliser la meme chose que le fichier original ?
Si quelqu'un peux m'apporter des précisions sur la manière de faire, ce serait vraiment sympa... Google ne m'aide pas bcp !!
Merçi _________________ Gentoo Linux Rullez !
Last edited by jaypeche on Sun Dec 04, 2011 2:22 pm; edited 1 time in total |
|
Back to top |
|
|
Leander256 l33t
Joined: 05 Jul 2003 Posts: 910 Location: Singapour
|
Posted: Sat Dec 03, 2011 7:42 am Post subject: |
|
|
Salut,
je pense que tu fais une confusion entre fichier de configuration pour le lancement du service et fichier de configuration du script lui-même. Il faudrait que tu nous montre le contenu de /etc/conf.d/openplacos mais je parie que tu as mis le fichier que openplacos lit pour démarrer.
Les fichiers placés dans /etc/conf.d/ servent à gérer les options des services. Typiquement ils permettent de passer des paramètres en ligne de commande lors du lancement d'un service. Il faut donc qu'ils respectent une syntaxe précise et surtout ils n'ont rien à voir avec le(s) fichier(s) de configuration que le service lui-même va utiliser.
Donc tu as deux solutions:
- la plus simple consiste à déplacer ton /etc/conf.d/openplacos vers /etc/default/openplacos (je vois que c'est le fichier de conf lu par défaut par openplacos) et de laisser /etc/conf.d/openplacos vide
- la plus compliquée consiste à déplacer ton /etc/conf.d/openplacos vers /etc/openplacos.conf (par exemple), de rajouter une ligne dans ton /etc/init.d/openplacos (NB: le -- est isolé, ce n'est pas une faute de frappe):
Code: | start-stop-daemon --start --quiet \
--user ${USER}:${USER} \
--exec ${DAEMON} \
--background \
-- $OPENPLACOS_OPTS | et de créer un /etc/conf.d/openplacos qui contient: Code: | OPENPLACOS_OPTS="--file /etc/openplacos.conf" |
Après tu vas sûrement avoir un autre problème à cause d'un RUBYOPT non initialisé, mais là de suite je ne sais pas comment faire. |
|
Back to top |
|
|
jaypeche Apprentice
Joined: 13 Jun 2007 Posts: 171 Location: France
|
Posted: Sun Dec 04, 2011 2:20 pm Post subject: |
|
|
Salut Leander256,
Quote: | je pense que tu fais une confusion entre fichier de configuration pour le lancement du service et fichier de configuration du script lui-même. Il faudrait que tu nous montre le contenu de /etc/conf.d/openplacos mais je parie que tu as mis le fichier que openplacos lit pour démarrer.
Les fichiers placés dans /etc/conf.d/ servent à gérer les options des services. Typiquement ils permettent de passer des paramètres en ligne de commande lors du lancement d'un service. Il faut donc qu'ils respectent une syntaxe précise et surtout ils n'ont rien à voir avec le(s) fichier(s) de configuration que le service lui-même va utiliser.
|
Tout à fait, je n'avais pas reflechi à cela, j'ai donc suivi tes recommandations et supprimer /etc/conf.d/openplacos qui n'était du fait pas utile..
J'ai ensuite modifier le runscript pour exporter la variable RUBYOPT, ça à l'air de tourner comme ça?§!
Fichier /etc/init.d/openplacos :
Code: | #!/sbin/runscript
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
DESCRIPTION="This utility is used to create a low cost home automation system controlled by computer"
HOMEPAGE="http://openplacos.tuxfamily.org"
SVCNAME="openplacos-server"
USER=openplacos
DAEMON=$(which ${SVCNAME})
PIDFILE=/var/run/openplacos.pid
CONFIGFILE=/etc/default/openplacos
LOGFILE=/tmp/openplacos.log
depend() {
need dbus mysql
after logger
}
checkconfig() {
if [ ! -r ${CONFIGFILE} ]; then
eerror "ERROR: Unable to read configuration file: ${CONFIGFILE}"
return 1
fi
}
checkprocess() {
if [ $(ps ax | grep ${SVCNAME} | grep -v grep | wc -l) -eq 0 ]; then
eerror "ERROR: Please, check logfile: ${LOGFILE}"
return 1
fi
}
start() {
checkconfig || return $?
ebegin "Starting openplacos"
export RUBYOPT="rubygems"
start-stop-daemon --start --user ${USER} --exec ${DAEMON} \
--pidfile ${PIDFILE} --make-pidfile --background --stdout ${LOGFILE}
sleep 3
checkprocess || return $?
eend $? "Failed to start openplacos !"
}
stop() {
ebegin "Stopping openplacos"
start-stop-daemon --stop --quiet --user ${USER} --exec ${DAEMON} --pidfile ${PIDFILE}
eend $? "Failed to stop openplacos !"
} |
Code: | dbox2 openplacos # /etc/init.d/openplacos status
* status: started
dbox2 openplacos # /etc/init.d/openplacos stop
* Caching service dependencies ... [ ok ]
* Stopping openplacos ... [ ok ]
dbox2 openplacos # /etc/init.d/openplacos start
* Starting openplacos ... [ ok ]
dbox2 openplacos # /etc/init.d/openplacos restart
* Stopping openplacos ... [ ok ]
* Starting openplacos ... [ ok ]
dbox2 openplacos # |
Merçi pour ton aide précieuse ! (Résolu) _________________ Gentoo Linux Rullez ! |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|