Tenho certeza que o nohup intercepta apenas o SIGHUP e não o SIGTERM.
Se bem me lembro, o bash ignora todos os sinais SIGTERM e SIGQUIT enviados para ele, a menos que os traps tenham sido configurados. Procure aqui para descobrir como configurar armadilhas no seu script: link
Você pode verificar se este é o problema primeiro ao iniciar seu script sem nohup, enviar um SIGTERM para ele e ver se ele é ignorado.