Esto debería funcionar:
nohup ./myprogram.sh > /dev/null 2>&1 &
echo $! > run.pid
Ya tiene un ampersand después de la redirección que pone su secuencia de comandos en segundo plano. Por lo tanto, solo necesita escribir el comando deseado después de ese ampersand, sin el prefijo de nada más:
nohup ./myprogram.sh > /dev/null 2>&1 & echo $! > run.pid