NOME¶
start-stop-daemon - avvia e ferma i programmi demone di sistema
SINTASSI¶
start-stop-daemon [
opzione...]
comando
DESCRIZIONE¶
start-stop-daemon viene usato per controllare la creazione e la
terminazione dei processi a livello di sistema. Usando una delle opzioni
corrispondenti,
start-stop-daemon può essere configurato per
trovare le istanze esistenti di un processo in esecuzione.
Nota: a meno che non venga specificata l'opzione
--pid o
--pidfile,
start-stop-daemon si comporta in modo simile a
killall(1).
start-stop-daemon analizza la tabella dei processi
cercando qualsiasi processo che corrisponde al nome, PID del genitore, UID o
GID (se specificati) di processo. Ogni processo che corrisponde
impedirà a
--start di avviare il demone. Se viene specificata
l'opzione
--stop a tutti i processi che corrispondono verrà
inviato il segnale TERM (o quello specificato con
--signal o
--retry). Per i demoni che hanno processi figli di lunga vita che
devono sopravvivere ad uno
--stop è necessario specificare un
file PID.
COMANDI¶
- -S, --start [--] argomenti
- Controlla l'esistenza di un processo specifico. Se tale processo esiste,
start-stop-daemon non fa nulla ed esce con lo stato di errore 1 (0
se viene specificato --oknodo). Se tale processo non esiste, viene
avviata un'istanza usando l'eseguibile specificato da --exec
oppure, se presente, da --startas. Tutti gli argomenti specificati
dopo -- sulla riga di comando vengono passati immutati al programma
che viene avviato.
- -K, --stop
- Controlla l'esistenza di un processo specificato. Se un tale processo
esiste, start-stop-daemon gli invia il segnale specificato da
--signal ed esce con lo stato di errore 0. Se tale processo non
esiste, start-stop-daemon esce con stato di errore 1 (0 se viene
specificato --oknodo). Se viene usata l'opzione --retry,
allora start-stop-daemon controllerà che i processi siano
stati terminati.
- -T, --status
- Controlla l'esistenza di un processo specificato e restituisce un codice
di stato di uscita in base alle LSB Init Script Actions.
- -H, --help
- Visualizza informazioni sull'uso ed esce.
- -V, --version
- Visualizza la versione del programma ed esce.
OPZIONI¶
Opzioni per corrispondenze¶
- --pid pid
- Cerca un processo con il pid specificato. Il pid deve essere
un numero maggiore di 0.
- --ppid ppid
- Cerca un processo con il ppid specificato (PID genitore). Il
ppid deve essere un numero maggiore di 0.
- -p, --pidfile file-pid
- Controlla se un processo ha creato il file file-pid. Nota: usare
questa opzione di corrispondenza da sola può causare effetti su
processi non desiderati, se il vecchio processo è stato terminato
senza aver potuto rimuovere il file-pid.
- -x, --exec eseguibile
- Cerca i processi che sono istanze di questo eseguibile. L'argomento
eseguibile dovrebbe essere un nome di percorso assoluto. Nota:
questo potrebbe non funzionare come atteso con gli script interpretati,
dato che l'eseguibile punterà all'interprete. Tenere in
considerazione che faranno corrispondenza anche i processi in esecuzione
in una chroot, perciò potrebbero essere necessarie altre
restrizioni della corrispondenza.
- -n, --name nome-processo
- Cerca i processi con nome nome-processo. Questo è
solitamente il nome del file del processo, ma potrebbe essere stato
cambiato dal processo stesso. Nota: nella maggior parte dei sistemi questa
informazione viene recuperata del nome comm del processo nel kernel, che
tende ad avere limiti di lunghezza piuttosto limitati (nell'assunzione che
più di 15 caratteri non siano portabili).
- -u, --user nomeutente|uid
- Cerca i processi di proprietà dell'utente specificato da
nomeutente o uid. Nota: l'uso di questa opzione di
corrispondenza da sola farà sì che l'azione abbia effetto su
tutti i processi corrispondenti all'utente.
Opzioni generiche¶
- -g, --group gruppo|gid
- Modifica in group o gid quando avvia il processo.
- -s, --signal segnale
- Con --stop specifica il segnale da inviare ai processi che vengono
fermati (quello predefinito è TERM).
- -R, --retry scadenza|pianificazione
- Con --stop specifica che start-stop-daemon deve controllare
se i processi terminano effettivamente. Controlla ripetutamente se
qualsiasi processo corrispondente è in esecuzione fino a che
nessuno lo è più. Se i processi non terminano, effettua
altre azioni in base alla pianificazione.
Se viene specificata una scadenza invece di una
pianificazione, allora viene usata la pianificazione
segnale/scadenza/KILL/scadenza, dove
segnale è il segnale specificato da --signal.
pianificazione è un elenco di almeno due elementi separati da
barre ( /); ciascun elemento può essere
-numero-segnale o [ -]nome-segnale, che
significa inviare quel segnale, o scadenza, che significa aspettare
che il processo termini per quel numero di secondi, oppure forever,
che significa ripetere il resto della pianificazione all'infinito, se
necessario.
Se viene raggiunta la fine della pianificazione e non viene specificato
forever, allora start-stop-daemon esce con stato di errore
2. Se viene specificata una pianificazione, allora viene ignorato
qualsiasi segnale specificato con --signal.
- -a, --startas nomepercorso
- Con --start, avvia il processo specificato da nomepercorso.
Se non specificato, viene usato in modo predefinito l'argomento fornito a
--exec.
- -t, --test
- Visualizza le azioni che sarebbero effettuate e imposta il valore
restituito appropriato, ma non fa alcuna azione.
- -o, --oknodo
- Restituisce lo stato di uscita 0 invece di 1 se non viene (o non verrebbe)
fatta alcuna azione.
- -q, --quiet
- Non visualizza messaggi informativi; mostra solo i messaggi di
errore.
- -c, --chuid
nomeutente|uid[:gruppo| gid]
- Cambia a questo nome utente/UID prima di avviare il processo. Si
può anche specificare un gruppo aggiungendo in fondo un carattere
:, seguito dal gruppo o GID nello stesso modo usato per il comando
«chown» ( utente:gruppo). Se un utente
viene specificato senza un gruppo, viene usato il GID primario di tale
utente. Quando si usa questa opzione si deve avere ben chiaro che, anche
se non viene specificata l'opzione --group, vengono impostati anche
il gruppo primario e quelli supplementari. L'opzione --group
è solo per i gruppi di cui l'utente non fa normalmente parte (ad
esempio aggiungere l'appartenenza ad un gruppo per singoli processi, per
gli utenti generici come nobody).
- -r, --chroot root
- Cambia la directory e la chroot a root prima di avviare il
processo. Notare che anche il filepid viene scritto dopo chroot.
- -d, --chdir percorso
- Cambia la directory a percorso prima di avviare il processo. Questo
viene fatto dopo chroot, se viene usata l'opzione
-r|--chroot. Quando non specificato,
start-stop-daemon cambia la directory in quella root prima di
avviare il processo.
- -b, --background
- Usata tipicamente con i programmi che non si scollegano da soli. Questa
opzione forza start-stop-daemon a fare il fork prima di avviare il
processo e a forzarlo sullo sfondo. ATTENZIONE: start-stop-daemon
non può controllare lo stato di uscita se il processo fallisce
l'esecuzione per qualsiasi ragione. Questa è un rimedio
estremo, ed è pensato solamente per i programmi che non ha senso
facciano il fork da soli o quando non è possibile aggiungere il
codice per far sì che lo facciano da soli.
- -C, --no-close
- Non chiude alcun descrittore di file quando forza il demone sullo sfondo.
Usato a scopo di debug per vedere l'output del processo, o per ridirigere
i descrittori di file per registrare l'output del processo. Ha importanza
solo quando viene usato --background.
- -N, --nicelevel int
- Modifica la priorità del processo prima di avviarlo.
- -P, --procsched
politica:priorità
- Modifica la politica e la priorità per la pianificazione del
processo prima di avviarlo. La priorità può essere
facoltativamente specificata aggiungendo in fondo un carattere :
seguito dal valore. Il valore predefinito di priorità
è 0. I valori per la politica attualmente supportati sono
other, fifo e rr.
- -I, --iosched
classe:priorità
- Modifica la classe e la priorità del pianificatore di I/O del
processo prima di avviarlo. La priorità può essere
facoltativamente specificata aggiungendo in fondo un carattere :
seguito dal valore. Il valore predefinito di priorità
è 4, a meno che classe non sia idle nel qual caso
priorità è sempre 7. I valori attualmente supportati
per classe sono idle, best-effort e
real-time.
- -k, --umask maschera
- Imposta l'umask del processo prima di avviarlo.
- -m, --make-pidfile
- Usata quando si avvia un processo che non crea il proprio file PID. Questa
opzione fa sì che start-stop-daemon crei il file specificato
con --pidfile e che vi metta il PID immediatamente prima di
eseguire il processo. Notare che il file verrà rimosso quando viene
fermato il programma solamente se viene usato --remove-pidfile.
NOTA: questa funzionalità può non funzionare in tutti
i casi. In particolar modo quando il programma eseguito fa il fork dal suo
processo principale. Per questo è di solito utile solo quando usato
in combinazione con l'opzione --background.
- --remove-pidfile
- Usato quando si ferma un programma che non rimuove il proprio file PID.
Questa opzione farà sì che start-stop-daemon rimuova
il file a cui fa riferimento --pidfile dopo aver fermato il
processo.
- -v, --verbose
- Visualizza messaggi informativi dettagliati.
STATO D'USCITA¶
- 0
- L'azione richiesta è stata effettuata. Se è stata
specificata --oknodo, è anche possibile che non sia stato
necessario fare nulla. Ciò può avvenire quando viene
specificata l'opzione --start e un processo corrispondente è
già in esecuzione, oppure quando viene specificata --stop e
non c'è alcun processo corrispondente.
- 1
- Se non è stata specificata --oknodo e non è stato
fatto nulla.
- 2
- Se sono state specificate --stop e --retry, ma è
stata raggiunta la fine della pianificazione e il processo era ancora in
esecuzione.
- 3
- Qualsiasi altro errore.
Quando si usa il comando
--status, vengono restituiti i seguenti codici
di stato:
- 0
- Il programma è in esecuzione.
- 1
- Il programma non è in esecuzione e il file PID esiste.
- 3
- Il programma non è in esecuzione.
- 4
- Non è stato possibile determinare lo stato del programma.
ESEMPIO¶
Avvia il demone
pippod, a meno che uno non sia già in esecuzione
(un processo chiamato pippod, in esecuzione come utente pippod, con PID in
pippod.pid):
-
start-stop-daemon --start --oknodo --user pippod --name pippod \
--pidfile /run/pippod.pid --startas /usr/sbin/pippod \
--chuid pippod -- --daemon
Invia
SIGTERM a
pippod e attende fino a 5 secondi che esso si
fermi:
-
start-stop-daemon --stop --oknodo --user pippod --name pippod \
--pidfile /run/pippod.pid --retry 5
Dimostrazione di una pianificazione personalizzata per fermare
pippod:
-
start-stop-daemon --stop --oknodo --user pippod --name pippod \
--pidfile /run/pippod.pid --retry=TERM/30/KILL/5