Não existe um comando "padrão" que forneça o comportamento que você procura. No entanto, no Debian e derivados, você pode usar start-stop-daemon
's --stop
ação com a opção --retry
:
start-stop-daemon --stop --oknodo --retry 15 -n daemontokill
enviará SIGTERM
para todos os processos chamados daemontokill
, espere até 15s para que eles parem, envie SIGKILL
para todos os processos restantes (da seleção inicial) e aguarde 15 segundos para que eles morram. Ele sairá com o status 0 se não houver nada para matar ou todos os processos forem interrompidos, 2 se alguns processos ainda estiverem por aí após o segundo tempo limite.
Existem várias opções para combinar processos de várias maneiras, consulte a documentação (link acima) para detalhes. Você também pode fornecer uma programação mais detalhada com tempos limites variáveis.
start-stop-daemon
faz parte do pacote dpkg
, por isso está sempre disponível nos sistemas Debian (e derivados). Algumas distribuições que não são .deb
também disponibilizam o pacote; por exemplo, o openSUSE Leap 42 tem isso. É bem fácil construir em outras plataformas:
git clone https://salsa.debian.org/dpkg-team/dpkg.git
cd dpkg
autoreconf -fi && ./configure && make
Você precisará de autoconf
, automake
, libtool
, gettext
. Quando a construção estiver concluída, você encontrará start-stop-daemon
no diretório utils
.