
Este é um acompanhamentoOs processos em segundo plano recebem um SIGHUP ao fazer logoff?.
Parece que huponexit
só funciona para shells de login. Como obtenho esse comportamento para shells que não são de login, por exemplo, aqueles que são iniciados na janela do meu terminal?
Enviar HUP
para o bash de onde os processos foram iniciados funciona conforme o esperado, mas huponexit
não funciona.
Responder1
Você pode declarar seu próprio código para ser executado quando o shell for encerrado.
trap 'kill -HUP $(jobs -lp) 2>/dev/null || true' EXIT
(Minha proposta anterior trap 'kill -HUP $$' EXIT
não funciona a partir do bash 4.2, porque se eu entendi a fonte corretamente, o bash pula parte de sua limpeza normal, incluindo o reenvio do HUP, quando já está processando uma condição de saída.)
Responder2
trap 'kill -HUP -$$' exit
Não consigo adicionar um comentário acima. Prefixe um sinal negativo para denotar um grupo de processos. Eu acho que isso vai desligartodosprocessos filhos gerados pelo shell incluem netos, bisnetos e assim por diante.