Lately I have been using tmux when working remotely. It allows you to have multiple bash instances running over one ssh connection, splitting the window into panes. You can disconnect from a tmux session with it still running in the background.
You could also use a screen, which can be attached/detached so that you are able to run sessions in the background, but still be able to re-attach and interact with them.
The last method, which uses nohup, is to use the -e flag. The -e flag takes a string argument that contains the IDL command(s) to run. E.g.
idl -e "PLOT, INDGEN(10) & WAIT, 10"
should spool up and IDL session, plot a line, then sleep 10 seconds before closing.
I have attached a small bash script I made a long time ago. The script has 1 required input, the -e part of the idl command, and an optional second input for naming a logging directory. All output from the IDL command(s) run is saved to $HOME/logs/YYYY-MM-DD_hh_mm/outfile.log; if the optional input argument is used, the log directory changes to $HOME/logs/$2-YYYY-MM-DD_hh_mm. A save_pid.txt file is also saved that contains the PID of the IDL process.
Hope this helps.