start-stop-daemon(8)

NOME
start-stop-daemon - inicia e pára programas daemon do sistema

RESUMO
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 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.

    Note: The exit status from a late unexpected failure during the process initialization cannot be checked, unless the --notify-await option is used. It is intended for use with programs that either make no sense daemonizing on their own, or where it is not feasible or desired to add the daemonizing and notification code for them to do this themselves.

--notify-await
    Wait for the background process to send a readiness notification before considering the service started (since version 1.19.3). This option can only be used with --background.

    This implements parts of the systemd readiness protocol, as specified in the sd_notify(3) manual page. The following variables are supported:

    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.

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>.