start-stop-daemon - inicia e pára programas daemon do
sistema
start-stop-daemon [option...] command
start-stop-daemon é usado para a
criação e término de processos de
nível-de-sistema. Usando uma destas opções de
correspondência, o start-stop-daemon pode ser configurado para
procurar instâncias existentes de processos a correr.
Nota: A menos que --pid ou --pidfile sejam
especificados, start-stop-daemon comporta-se de modo semelhante a
killall(1). start-stop-daemon irá sondar a tabela de
processos em busca de qualquer processo que coincida com o nome de processo,
pid parente, uid, e/u gid (se especificado). Quaisquer processos
correspondentes irá prevenir um --start de iniciar o daemon. A
todos os processos correspondentes será enviado o sinal TERM (ou
aquele especificado via --signal ou --retry) se for
especificado --stop.Para daemons que têm filhos de vida-longa
que precisam sobreviver a um --stop, você tem de especificar
um pidfile.
- -S, --start
[--] arguments
- Verifica a existência de um processo especificado. Se tal processo
existir, o start-stop-daemon não faz nada, e termina com um
estado de erro 1 (0 se --oknodo for especificado). Se tal processo
não existir, inicia uma instância, usando ou o
executável especificado por --exec ou, se especificado, por
--startas. Quaisquer argumentos dados após -- na
linha de comandos são passados sem modificação ao
programa que está a ser iniciado.
- -K, --stop
- Verifica a existência de um processo especificado. Se tal processo
existir, start-stop-daemon envia o sinal especificado por
--signal, e termina com estado de erro 0. Se tal processo
não existir, start-stop-daemon termina com estado de erro 1
(0 se --oknodo for especificado). Se for especificado
--retry então o start-stop-daemon irá
verificar se os processo(s) terminaram.
- -T, --status
- Verifica a existência de um processo especificado, e devolve um
código de estado de saída, de acordo com as
Acções do Script Init do LSB (desde versão
1.16.1).
- -H, --help
- Mostra informação de utilização e
termina.
- -V, --version
- Mostra a versão do programa e termina.
Opções de correspondência
- --pid pid
- Verifica por um processo com o pid especificado (desde
versão 1.17.6). O pid tem de ser um número maior que
0.
- --ppid
ppid
- Verifica por um processo com o ppid (pid pai) especificado (desde
versão 1.17.7). O ppid tem de ser um número maior que
0.
- -p, --pidfile
pidfile
- Verifica se um processo criou o ficheiro pidfile.
Nota: Usar esta opção de
correspondência sozinha pode causar que se actue em processos
intencionalmente, se o processo antigo terminou sem ser capaz de remover
o seu pidfile.
Aviso: Usar esta opção de
correspondência com um pidfile gravável mundialmente ou
usa-la sozinha com um daemon que escreve o pidfile como um utilizador
sem privilégios (não-root) irá ser recusada com um
erro (desde versão 1.19.3) pois isto é um risco de
segurança, porque ou o utilizador consegue escrever nele, ou se o
daemon ficar comprometido, não se pode confiar no conteúdo
do pidfile, e depois um programa privilegiado (tal como um script de
init corrido como root) acabaria a actuar em qualquer processo do
sistema. Usar /dev/null está isento destas
verificações.
- -x, --exec
executable
- Verifica por processos que são instâncias deste
executable. O argumento executable deve ser um nome de
caminho absoluto.
Nota: Isto pode não funcionar como pretendido
com com scripts de interpretação, pois o executável
irá apontar para o interpretador. Tendo em conta que processos
que correm dentro de uma chroot também irão corresponder,
então poderão ser necessárias outras
restrições de correspondência.
- -n, --name
process-name
- Verifica por processos com o nome process-name. O
process-name é geralmente o nome de ficheiro do processo,
mas pode ter sido modificado pelo próprio processo.
Nota: Na maioria dos sistemas esta
informação é obtida a partir do nome de
comunicação do processo a partir do kernel, o que tem
tendência a ter um limite de comprimento relativamente curto
(assumir mais de 15 caracteres é não-portável).
- -u, --user
username|uid
- Verifica por processos cujo dono é o utilizador especificado por
username ou uid.
Nota: usar só esta opção de
correspondência irá causar com que seja actuado em todos
os processos que correspondem ao utilizador.
Opções genéricas
- -g, --group
group|gid
- Altera para grupo ou gid quando inicia o processo.
- -s, --signal
signal
- Com --stop, especifica o sinal a enviar aos processos a serem
parados (predefinição TERM).
- -R, --retry
timeout|schedule
- Com --stop, especifica que start-stop-daemon deve verificar
se o(s) processo(s) terminam mesmo. Irá verificar repetidamente se
qualquer processo correspondente está a correr, até que
nenhum esteja. Se os processos não terminarem irá
então tomar mais acções como determinado pelo
agendamento.
Se for especificado timeout em vez de schedule,
então agenda
signal/timeout/KILL/timeout é
usada, onde signal é o sinal especificado com
--signal.
schedule é uma lista de pelo menos dois itens
separados por barras (/); cada item pode ser
-signal-number ou [-]signal-name, o que
significa enviar esse sinal, ou timeout, o que significa esperar
esses tantos segundos para que os processos terminem, ou forever,
o que significa repetir o resto da agenda para sempre se
necessário.
Se o fim da agenda for atingido e não foi especificado
forever, então start-stop-daemon termina com o
estado de erro 2. Se for especificada uma agenda então qualquer
sinal especificado com --signal é ignorado.
- -a, --startas
pathname
- Com --start, inicia o processo especificado por
nome-de-caminho. Se não especificado, usa por
predefinição o argumento dado a --exec.
- -t, --test
- Escreve as acções que seriam tomadas e define valores de
retorno apropriados, mas não toma nenhuma acção.
- -o, --oknodo
- Retorna o estado de saída 0 em vez de 1 se nenhuma
acção foi (será) tomada.
- -q, --quiet
- Não escreve mensagens informativas, apenas mostra mensagens de
erro.
- -c, --chuid
username|uid[:group|gid]
- Muda para este nome-utilizador/uid antes de arrancar o processo.
Você também pode especifica um grupo ao anexar :, e
depois o grupo ou gid do mesmo modo que faria com o comando
chown(1) (user:group). Se for especificado um
utilizador sem um grupo, é usado o GID primários para esse
utilizador. Quando usa esta opção você tem de
compreender que os grupos primário e suplementar são
também definidos, mesmo que a opção --group
não seja especificada. A opção --group
é apenas para grupos em que o utilizador não é
normalmente um membro dele (tal como adicionar sociedade de grupo
por-processo para utilizadores genéricos tipo nobody).
- -r, --chroot
root
- Muda directório e chroot para root antes de iniciar o
processo. Por favor note que o pidfile é também escrito
após o chroot.
- -d, --chdir
path
- Muda directório para caminho antes de iniciar o processo.
Isto é feito depois de chroot se a opção
-r|--chroot estiver definida. Quando não
especificado, o start-stop-daemon irá mudar o
directório para o directório raiz antes de iniciar o
processo.
- -b,
--background
- Tipicamente usado com programas que não se desanexam deles
próprios. Esta opção irá forçar o
start-stop-daemon a bifurcar antes de iniciar o processo, e a
força-lo para os bastidores.
Aviso: start-stop-daemon não pode
verificar o estado de saída se o processo falhar ao executar por
qualquer razão. Este é o último recurso, e
destina-se apenas a programas que ou não fazem sentido a
bifurcarem por si só, ou onde não é
praticável adicionar-lhes o código para fazerem isto eles
próprios.
- --notify-await
- Espera pelo processo nos bastidores que envie uma
notificação de prontidão antes de considerar o
serviço arrancado (desde versão 1.19.3). Isto implementa
partes do protocolo de prontidão do systemd, como especificado no
manual sd_notify(3). As seguintes variáveis são
suportadas:
- READY=1
- O programa está pronto a dar serviço, portanto é
seguro sair-mos.
- EXTEND_TIMEOUT_USEC=number
- O programa pede para estender o limite de tempo em by number
milissegundos. Isto irá reiniciar o tempo limite actual para o
valor especificado.
- ERRNO=number
- O programa está a terminar com um erro. Faça o mesmo e
escreva a string amiga-do-utilizador para o valor errno.
- --notify-timeout
timeout
- Define o tempo limite para a opção --notify-await
(desde versão 1.19.3). Quando o tempo limite é atingido, o
start-stop-daemon irá terminar com um código de erro,
e não é esperada nenhuma notificação de
prontidão. A predefinição é 60
segundos.
- -C,
--no-close
- Não fecha nenhum descritor de ficheiro quando força o daemon
para os bastidores (desde versão 1.16.5). Usado para objectivos de
depuração para ver o resultado dos processos, ou para
redirecionar os descritores de ficheiros para registar o resultado dos
processos. Apenas relevante quando se usa --background.
- -O, --output
pathname
- Redireciona stdout e stderr para pathname quando
força o daemon a funcionar em segundo plano (desde versão
1.20.6). Apenas relevante quando se usa --background.
- -N, --nicelevel
int
- Isto altera a prioridade do processo antes de o iniciar.
- -P, --procsched
policy:priority
- Isto altera a política de agendamento de processos e a prioridade
dos processos antes de os iniciar (desde versão 1.15.0). A
prioridade pode ser opcionalmente especificada ao anexar um :
seguido de um valor. A predefinição de priority
é 0. Os valores de política actualmente suportados
são other, fifo e rr.
Esta opção pode não fazer anda em alguns
sistemas, onde o agendamento de processos POSIX não é
suportado.
- -I, --iosched
class:priority
- Isto altera a classe de agendamento IO e a prioridade dos processos antes
de os iniciar (desde versão 1.15.0). A prioridade pode ser
opcionalmente especificada ao anexar um : seguido de um valor. A
predefinição de priority é 4, a menos que
class seja idle, então priority será
sempre 7. Os valores actualmente suportados para class são
idle, best-effort e real-time.
Esta opção pode não fazer anda em alguns
sistemas, onde o agendamento de processos Linux IO não é
suportado.
- -k, --umask
mask
- Isto define o umask do processo antes de o iniciar (desde a versão
1.13.22).
- -m,
--make-pidfile
- Usado quando se inicia um programa que não cria o seu
próprio ficheiro pid. Esta opção irá fazer o
start-stop-daemon criar o ficheiro referenciado com
--pidfile e colocar o pid nele mesmo antes de executar o processo.
Nota, o ficheiro só será removido quando se pára o
programa se for usado --remove-pidfile.
Nota: Esta funcionalidade pode não funcionar em
todos os casos. Mais notavelmente quando o programa a ser executar
bifurca do seu processo principal. Devido a isto, é geralmente
apenas útil quando combinado com a opção
--background.
- --remove-pidfile
- Usado para parar um programa que não remove o seu próprio
ficheiro pid (desde versão 1.17.19). Esta opção
irá fazer o start-stop-daemon remover o ficheiro
referenciado com --pidfile após terminar o processo.
- -v, --verbose
- Escreve mensagens de informação detalhadas.
- 0
- A acção requerida foi executada. Se --oknodo foi
especificado, é também possível que nada tenha de ser
feito. Isto pode acontecer quando --start foi especificado e um
processo correspondente já estava a correr, ou quando --stop
foi especificado e não há nenhum processo
correspondente.
- 1
- Se --oknodo não foi especificado e nada foi feito.
- 2
- Se --stop e --retry foram especificados, mas foi
alcançado o fim do agendamento e os processos ainda estavam a
correr.
- 3
- Qualquer outro erro.
Quando se usa o comando --status, são devolvidos os
seguintes códigos de estado:
- 0
- Programa está em execução.
- 1
- Programa não está em execução e o ficheiro pid
existe.
- 3
- Programa não está em execução.
- 4
- Incapaz de determinar o estado do programa.
Inicia o daemon food, a menos que um já esteja a
correr (um processo chamado food, a correr como utilizador food, com pid em
food.pid):
start-stop-daemon --start --oknodo --user food --name food \
--pidfile /run/food.pid --startas /usr/sbin/food \
--chuid food -- --daemon
Envia SIGTERM para food e espera até 5
segundos para que pare:
start-stop-daemon --stop --oknodo --user food --name food \
--pidfile /run/food.pid --retry 5
Demonstração dum agendamento personalizado para
parar o food:
start-stop-daemon --stop --oknodo --user food --name food \
--pidfile /run/food.pid --retry=TERM/30/KILL/5
Américo Monteiro
Se encontrar algum erro na tradução deste documento,
por favor comunique para Américo Monteiro
<a_monteiro@gmx.com>.