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
--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, 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 PER LA CORRISPONDENZA¶
- -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¶
- -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 non verrà rimosso
quando il programma viene fermato. 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.
- -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