Dovrebbe funzionare:
nohup ./myprogram.sh > /dev/null 2>&1 &
echo $! > run.pid
Hai già una e commerciale dopo il reindirizzamento che mette il tuo script in background. Pertanto devi solo digitare il comando desiderato dopo quella e commerciale, senza prefisso da nient'altro:
nohup ./myprogram.sh > /dev/null 2>&1 & echo $! > run.pid