Linux: Comment passer des paramètres à `service foo start` (en ligne de commande)?

11

Je voudrais transmettre un argument au service que je démarre. Par exemple, démarrer un serveur en mode débogage. Comme,

service jboss-as start debug

Ou tel. Mais servicene semble pas soutenir cela.

Y a-t-il un moyen? (Pour RHEL 6 si cela importe.)

Remarque: Ceci est similaire à Ubuntu / Linux: comment les paramètres de démarrage sont-ils généralement définis pour les scripts de démarrage (sysvinit)? mais pas pareil.

Ondra Žižka
la source
Arrêtez, ubuntu n'utilise pas sysv, il utilise upstart.
PersianGulf
1
Créez un autre cas dans le script de démarrage. Exemple: start-debugpuis vous pouvez exécuter:/etc/init.d/jboss-as start-debug
Guntis

Réponses:

10

Dans RHEL, vous avez le dossier / etc / sysconfig. Vous définissez ici les paramètres de démarrage. Et dans votre script de démarrage, vous incluez quelque chose comme:

if [ -f /etc/sysconfig/$prog ] ; then
    . /etc/sysconfig/$prog
fi

Consultez les services existants pour obtenir des exemples.

Pour le développement, vous pouvez placer vos paramètres de démarrage dans une variable exportée (par exemple dans .bashrc) que vous pouvez remplacer manuellement à tout moment.

ÉDITER

Si vous voulez vraiment l'utiliser, serviceil existe d'autres options.

Votre script doit prendre en charge au moins startet stop. Mais vous pouvez également implémenter une debugcommande. Et commencez votre programme avec:

service foo debug

Une autre façon sera de vérifier le deuxième argument de votre script et de démarrer votre programme avec:

service foo start debug

Modifiez votre script init en quelque chose comme:

case "$1" in
  start)
        if [ "$2" = "debug" ]
        then
                start_debug
        else
                start
        fi
        ;;
Laurentiu Roescu
la source
1
Quant aux variables d'environnement exportées, cela ne semble pas être le cas - la page de manuel du service indique que TERM et LANG sont les seuls qui sont passés au script. Mais bien sûr, on peut toujours contourner le service en exécutant /etc/init.d/MyNiftyService commencer whatever2 whatever1 ...
Life Form Alien
Je vais recourir au contournement d'Alien. Vous voulez le mettre comme réponse?
Ondra Žižka
5

Dans Ubuntu, les paramètres de démarrage se trouvent généralement dans:

/etc/default/<service_name>
EEAA
la source
2
D'accord, mais je ne veux pas changer cela chaque fois que j'ai besoin d'un changement ... Pendant le développement, c'est assez souvent. Et j'ai besoin de RHEL 6. J'ai édité la question.
Ondra Žižka
0

J'irais avec la recherche de paramètres supplémentaires à partir d'un fichier spécifique au système après avoir vérifié son existence, comme suggéré ci-dessus.

Je n'aime pas ajouter d'options supplémentaires au démarrage du service.

Amar
la source