Linux: come passare i parametri a `service foo start` (dalla riga di comando)?


11

Vorrei passare una discussione al servizio che sto iniziando. Ad esempio l'avvio di un server in modalità debug. Piace,

service jboss-as start debug

O tale. Ma servicesembra non supportarlo.

C'è un modo? (Per RHEL 6 se questo è importante.)

Nota: è simile a Ubuntu / Linux: come vengono generalmente definiti i parametri di avvio per gli script di avvio (sysvinit)? ma non è lo stesso.


Stop, ubuntu non usa sysv, usa upstart.
Golfo Persico,

1
Crea un altro caso nello script di avvio. Esempio: start-debuge quindi puoi eseguire:/etc/init.d/jboss-as start-debug
Guntis

Risposte:


10

In RHEL hai la cartella / etc / sysconfig. Qui si definiscono i parametri di avvio. E nel tuo script di avvio includi qualcosa del tipo:

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

Controlla i servizi esistenti per esempi.

Per lo sviluppo è possibile inserire i parametri di avvio in una variabile esportata (ad esempio in .bashrc) che è possibile sostituire manualmente ogni volta che lo si desidera.

MODIFICARE

Se vuoi davvero usare serviceci sono alcune altre opzioni.

Il tuo script dovrebbe supportare almeno starte stop. Ma puoi anche implementare un debugcomando. E inizia il tuo programma con:

service foo debug

Un altro modo sarà verificare il secondo argomento nel tuo script e inizi il tuo programma con:

service foo start debug

Modifica il tuo script init in qualcosa del tipo:

case "$1" in
  start)
        if [ "$2" = "debug" ]
        then
                start_debug
        else
                start
        fi
        ;;

1
Per quanto riguarda le variabili di ambiente esportate, questo non sembra essere il caso: la pagina man del servizio dice che TERM e LANG sono gli unici che vengono passati allo script. Ma, naturalmente, si può sempre bypassare il servizio eseguendo /etc/init.d/MyNiftyService avviare qualunque cosa qualunque ... 2
Alien Life Form

Ricorrerò alla tangenziale di Alien. Vuoi metterlo come una risposta?
Ondra Žižka,

5

In Ubuntu, i parametri di avvio si trovano in genere in:

/etc/default/<service_name>

2
Giusto ma non voglio cambiarlo ogni volta che ho bisogno di un cambiamento ... Durante lo sviluppo è abbastanza spesso. E ho bisogno di RHEL 6. Ho modificato la domanda.
Ondra Žižka,

0

Vorrei andare con l'approvvigionamento di parametri aggiuntivi da un file specifico del sistema dopo aver verificato la sua esistenza, come suggerito sopra.

Non mi piace aggiungere ulteriori opzioni all'avvio del servizio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.