Parece estranho nohup não funciona, mas isso pode ser facilmente testado, como segue:
{ sleep 999; echo $? > exitcode ; } &
fuser -1 -k /bin/sleep
expr $(cat exitcode) - 128
Isso imprimirá o código de retorno menos 128, que é exatamente o número do sinal que o matou. Você pode listá-los simplesmente fazendo:
kill -l
Agora tente isso:
rm exitcode
{ nohup sleep 999; echo $? > exitcode; } &
fuser -1 -k /bin/sleep
ls -l exitcode
Se nohup funcionar, neste momento você será informado de que não existe tal arquivo. Você pode verificar isso ao fazer:
fuser -15 -k /bin/sleep
expr $(cat exitcode) -128
e encontrando este valor como 15.
EDITAR
Seu último comentário foi bastante revelador: significa que o SIGHUP não é enviado para o processo (suspenso, neste caso), mas diretamente para o seu shell. Isso pode ser feito apenas por Dropberar, é claro. Uma pequena pesquisa mostrou que o Dropbear realmente mata todos os processos do usuário no logoff.
Você pode ativar esse recurso chato adicionando a linha
KillMode=process
no final da sub-rotina Service no arquivo /lib/systemd/[email protected]. Em seguida, reinicie ou reinicie o Dropbear.