Linux: Wie übergebe ich Parameter an `service foo start` (in der Kommandozeile)?

11

Ich möchte dem Dienst, den ich starte, ein Argument übergeben. ZB Starten eines Servers in einem Debug-Modus. Mögen,

service jboss-as start debug

Oder so. Aber servicescheint das nicht zu unterstützen.

Gibt es einen Weg? (Für RHEL 6, wenn das wichtig ist.)

Hinweis: Dies ähnelt Ubuntu / Linux: Wie werden Startparameter normalerweise für Startskripte (sysvinit) definiert? aber nicht das gleiche.

Ondra Žižka
quelle
Stop, Ubuntu verwendet kein sysv, sondern einen Upstart.
PersianGulf
1
Erstellen Sie einen weiteren Fall im Startskript. Beispiel: start-debugund dann können Sie ausführen:/etc/init.d/jboss-as start-debug
Guntis

Antworten:

10

In RHEL haben Sie den Ordner / etc / sysconfig. Hier definieren Sie Startparameter. Und in Ihrem Startskript enthalten Sie Folgendes:

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

Überprüfen Sie vorhandene Dienste auf Beispiele.

Für die Entwicklung können Sie Ihre Startparameter in eine exportierte Variable (z. B. in .bashrc) einfügen, die Sie jederzeit manuell überschreiben können.

BEARBEITEN

Wenn Sie wirklich verwenden möchten, servicegibt es einige andere Optionen.

Ihr Skript sollte mindestens startund unterstützen stop. Sie können aber auch einen debugBefehl implementieren . Und starten Sie Ihr Programm mit:

service foo debug

Eine andere Möglichkeit besteht darin, nach dem zweiten Argument in Ihrem Skript zu suchen und das Programm zu starten mit:

service foo start debug

Ändern Sie Ihr Init-Skript wie folgt:

case "$1" in
  start)
        if [ "$2" = "debug" ]
        then
                start_debug
        else
                start
        fi
        ;;
Laurentiu Roescu
quelle
1
Bei den exportierten Umgebungsvariablen scheint dies nicht der Fall zu sein. Auf der Manpage des Dienstes heißt es, dass nur TERM und LANG an das Skript übergeben werden. Aber natürlich kann man den Dienst immer umgehen, indem man /etc/init.d/MyNiftyService startet, was auch immer1 was auch immer2 ...
Alien Life Form
Ich werde auf Aliens Umgehungsstraße zurückgreifen. Willst du es als Antwort setzen?
Ondra Žižka
5

In Ubuntu finden sich Startparameter normalerweise in:

/etc/default/<service_name>
EEAA
quelle
2
Richtig, aber ich möchte das nicht jedes Mal ändern, wenn ich eine Änderung brauche ... Während der Entwicklung ist es ziemlich oft. Und ich brauche RHEL 6. Die Frage wurde bearbeitet.
Ondra Žižka
0

Ich würde mit der Beschaffung zusätzlicher Parameter aus einer systemspezifischen Datei beginnen, nachdem ich ihre Existenz überprüft habe, wie oben vorgeschlagen.

Ich möchte dem Dienststart keine zusätzlichen Optionen hinzufügen.

Amar
quelle