nohup
nohup is a command, short for "no hang up". Its primary purpose is to ensure that the commands you submit continue running after you log out (terminate the terminal session). This is highly useful for long-running tasks, as the command will not be terminated even if the terminal session ends or the user is forced to log out.
Example:
Suppose you are running a data backup script on a server that requires several hours to complete:
bashnohup ./backup-script.sh &
Here, nohup guarantees that the backup-script.sh script continues executing even after you exit the SSH session.
& (ampersand)
& is a symbol appended to the end of a command to run it in the background. This allows you to continue working on other tasks in the same terminal while the command executes.
Example:
To run a Python script in the background and immediately return to the command line for further operations:
bashpython myscript.py &
This command returns immediately, enabling myscript.py to run in the background while you proceed with other commands.
Differences
- Persistence:
nohupensures commands continue running after user logout, whereas&merely runs the command in the background without protection against hang-up signals. - Use Case: Use
nohupwhen you need commands to persist after logging out. Use&when you simply want to run a command in the background to free the terminal for other tasks.
Typically, these can be combined: use nohup to protect the process from hang-up signals while using & to run it in the background, as demonstrated in the data backup example. This approach ensures the task survives session termination and allows the terminal to be immediately reused.