Mas não tenho certeza se esse comando finaliza o processo normalmente. Este comando alcança um término normal? Caso contrário, como posso matar um processo com seu nome normalmente?
Estou usando o servidor Ubuntu 10.04 LTS x64 . O que é esse daemon?
Eonil
É uma ferramenta genérica para iniciar / parar daemons e gerenciar informações relacionadas, como arquivos pid. Está presente no Ubuntu, veja sua página de manual .
Manatwork
Respostas:
19
Sua pergunta não é clara: você fala sobre um daemon no título, mas no corpo apenas fala sobre um processo genérico.
Para um daemon, existem meios específicos para pará-lo, por exemplo, no Debian, você tem
service daemon-name stop
ou
/etc/init.d/daemon-name stop
Existem sintaxes semelhantes para outros padrões initscript usados em outras distribuições / SO.
Para eliminar um processo que não seja daemon, supondo que ele esteja de alguma forma fora de controle, você pode usar com segurança killallou pkill, uma vez que eles usam por padrão o SIGTERMsinal (15), e qualquer aplicativo decentemente escrito deve capturar e sair normalmente ao receber esse sinal . Leve em consideração que esses utilitários podem matar mais de um processo, se houver muitos com o mesmo nome.
Se isso não funcionar, você pode tentar SIGINT(2), depois SIGHUP(1) e como último recurso SIGKILL(9). Este último sinal não pode ser capturado pelo aplicativo, para que ele não possa executar nenhuma limpeza. Por esse motivo, deve ser evitado sempre que possível.
Ambos pkille killallaceitam um parâmetro de sinal no formulário -NAME, como em
Obrigado. Na verdade, minha pergunta original era sobre markdoc serve &e svnserve -d. Eu acho que é uma espécie de daemon, mas nada estava certo para mim :)
Eonil
killallé o assassino!
Xdevs23
3
Nas distribuições do tipo BSD e outras, você geralmente terá scripts em /etc/rc.d/ que normalmente gerenciam o início, a reinicialização e a parada de daemons em seu sistema. Para parar um daemon, você chamaria os scripts com o caminho absoluto, por exemplo:
# /etc/rc.d/acpid stop
ou use o comando:
# rc.d stop acpid
Eu recomendo experimentar este script para mostrar seus sistemas iniciados e interrompidos daemons:
#!/bin/bash
chk_status(){
target=$1
if [[ $target != "functions" && $target != "functions.d" ]]
then
if [[ -f "/var/run/daemons/$target" ]]
then
stat="\e[1;32m[RUNNING]"
else
stat="\e[1;31m[STOPPED]"
fi
printf "$stat \t\e[1;34m$target\e[0;0m\n"
fi
}
daemons=($(for daemon in /etc/rc.d/*; do echo "${daemon#\/etc\/rc.d\/}"; done))
if [[ $1 != "" ]]
then
chk_status $1
else
for d in "${daemons[@]}"; do
chk_status $d
done | sort
fi
Verifique a killprocfunção disponível no /etc/init.d/functionsscript, origine o arquivo e use a função Ou use pgrepe pkillutilitários para verificar se eles estão funcionando intencionalmente e depois usá-los. Exemplo: pkill -SIGTERM mysqldenviaria o sinal de interrupção do TERM para que o mysqld executasse um desligamento seguro e liberasse os bancos de dados no disco antes de ser morto.
Respostas:
Sua pergunta não é clara: você fala sobre um daemon no título, mas no corpo apenas fala sobre um processo genérico.
Para um daemon, existem meios específicos para pará-lo, por exemplo, no Debian, você tem
ou
Existem sintaxes semelhantes para outros padrões initscript usados em outras distribuições / SO.
Para eliminar um processo que não seja daemon, supondo que ele esteja de alguma forma fora de controle, você pode usar com segurança
killall
oupkill
, uma vez que eles usam por padrão oSIGTERM
sinal (15), e qualquer aplicativo decentemente escrito deve capturar e sair normalmente ao receber esse sinal . Leve em consideração que esses utilitários podem matar mais de um processo, se houver muitos com o mesmo nome.Se isso não funcionar, você pode tentar
SIGINT
(2), depoisSIGHUP
(1) e como último recursoSIGKILL
(9). Este último sinal não pode ser capturado pelo aplicativo, para que ele não possa executar nenhuma limpeza. Por esse motivo, deve ser evitado sempre que possível.Ambos
pkill
ekillall
aceitam um parâmetro de sinal no formulário-NAME
, como emfonte
markdoc serve &
esvnserve -d
. Eu acho que é uma espécie de daemon, mas nada estava certo para mim :)killall
é o assassino!Nas distribuições do tipo BSD e outras, você geralmente terá scripts em /etc/rc.d/ que normalmente gerenciam o início, a reinicialização e a parada de daemons em seu sistema. Para parar um daemon, você chamaria os scripts com o caminho absoluto, por exemplo:
ou use o comando:
Eu recomendo experimentar este script para mostrar seus sistemas iniciados e interrompidos daemons:
fonte
Verifique a
killproc
função disponível no/etc/init.d/functions
script, origine o arquivo e use a função Ou usepgrep
epkill
utilitários para verificar se eles estão funcionando intencionalmente e depois usá-los. Exemplo:pkill -SIGTERM mysqld
enviaria o sinal de interrupção do TERM para que o mysqld executasse um desligamento seguro e liberasse os bancos de dados no disco antes de ser morto.fonte