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.
-
--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.
-
-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.
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
- 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 <
[email protected]>.