I have access to a remote Linux shell for work purposes. I have kept a python script running in the background using nohup.

Now, if I want to exit the session, what is the difference between using logout and exit commands? Will my script keep running in both of these cases?

  • 1
    I find it better to use screen when I want to make sure console processes live on after I'm gone. Commented Jul 25, 2011 at 12:01

2 Answers 2


logout is an internal command of the shell. So generally the answer is shell-dependent. From man bash:

logout – Exit a login shell.

From man zsh:

logout [ n ] – Same as exit, except that it only works in a login shell.

So they're completely the same, but logout will simply refuse to work for non-login shells. What is a login shell can be read in manual pages.

  • exit is an internal command of the shell, too. Commented Jul 25, 2011 at 15:49
  • 1
    (Also: I don't see the point of having a exit-like command which only works for login shells. The other way around would be more useful (e.g. "exit only if not in a login shell").) Commented Jul 25, 2011 at 15:50

Try both in your local terminal. If you want use "logout", you need be "login". In your terminal by default you never start the shell with login, so if you want close the terminal you need use "exit". It isn't a "login shell".

In remote ssh shell is indifferent because you're using a "login shell". When you use nohub or similar, you are "detach" the command from the actual shell, so when you close your shell the process doesn't die.

You must log in to answer this question.