start-stop-daemon
Section: dpkg suite (8)
Updated: 1970-01-01
Page Index
NOME
start-stop-daemon - inicia e pára programas daemon do sistema
SINOPSE
start-stop-daemon [
option...]
command
DESCRIÇÃO
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.
COMANDOS
- -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
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 usá-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çá-lo para os bastidores.
Warning: 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
-
Redirect stdout and stderr to pathname when forcing the daemon into
the background (since version 1.20.6). Only relevant when using
--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.
- -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.
- -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.
ESTADO À SAÍDA
- 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.
EXEMPLO
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
TRADUÇÃO
Américo Monteiro
Se encontrar algum erro na tradução deste documento, por favor comunique para
Américo Monteiro <a_monteiro@gmx.com>.