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 .