Cela devrait fonctionner :
nohup ./myprogram.sh > /dev/null 2>&1 &
echo $! > run.pid
Vous avez déjà une esperluette après la redirection qui met votre script en arrière-plan. Par conséquent, il vous suffit de taper la commande souhaitée après cette esperluette, sans préfixe par quoi que ce soit d'autre :
nohup ./myprogram.sh > /dev/null 2>&1 & echo $! > run.pid