I am used to start background processes in the shell using nohup. However, sometimes processes are killed upon loggin out. What can I do?

The nohup wrapper should catch the SIGHUP signal the shell sends to each job in its job list when exiting. Unfortunately, this doesn’t always work for processes catching the HUP signal themselves.

Type jobs to see which jobs are associated with the current shell. You can get the shell to forget about the job by typing disown, which will remove the current job from the table of active jobs. This means that the shell won’t warn you about running jobs when you try to exit the shell, and the shell won’t send the job a SIGHUP when you do exit.

disown works well. You have to redirect standard in/out/err yourself, though, if you want to log output. Use /dev/null if you have logged in via ssh, otherwise ssh will wait for the disowned job to close the standard file descriptors.