Dall'articolo di Wikipedia sul demone:
In un ambiente Unix, il processo padre di un demone è spesso, ma non sempre, il processo init. Un demone viene solitamente creato o da un processo che esegue il fork di un processo figlio e quindi esce immediatamente, facendo sì che init adotti il processo figlio, oppure dal processo init che avvia direttamente il demone. Inoltre, un demone lanciato da fork ed exit tipicamente deve eseguire altre operazioni, come dissociare il processo da qualsiasi terminale di controllo (tty). Tali procedure sono spesso implementate in varie routine di convenienza come daemon(3) in Unix.
 Leggi la manpage di daemon funzione.
L'esecuzione di un comando in background da una shell che esce immediatamente fa sì che il PPID del processo diventi 1. Facile da testare:
# bash -c 'nohup sleep 10000 &>/dev/null & jobs -p %1'
1936
# ps -p 1936
      PID    PPID    PGID     WINPID   TTY         UID    STIME COMMAND
     1936       1    9104       9552  cons0       1009 17:28:12 /usr/bin/sleep
 Come puoi vedere, il processo è di proprietà del PID 1, ma è ancora associato a un TTY. Se mi disconnetto da questa shell di login, accedo di nuovo ed eseguo ps di nuovo, il TTY diventa ? .
Leggi qui perché è importante distaccarsi da TTY.
 Usando setsid (parte di util-linux ):
# bash -c 'cd /; setsid sleep 10000 </dev/null &>/dev/null & jobs -p %1'
9864
# ps -p 9864
      PID    PPID    PGID     WINPID   TTY         UID    STIME COMMAND
     9864       1    9864       6632  ?           1009 17:40:35 /usr/bin/sleep
Penso che non devi nemmeno reindirizzare stdin, stdout e stderr.