Skip to content

nohup: Run Commands Unaffected by Disconnects

Summary

The nohup command allows you to run a command that will continue to execute even after you log out of the terminal or the terminal window is closed. It is particularly useful for long-running processes.

Introduction

The nohup (no hang up) command is a utility in Linux systems that allows you to run a command immune to hangup signals. When you disconnect from a terminal (e.g., by closing the SSH connection), a SIGHUP (hangup) signal is sent to all processes associated with that terminal. nohup prevents the command from receiving this signal, ensuring it continues to run in the background. If the standard output and standard error are connected to the terminal, nohup redirects them to a file named nohup.out in the current directory (or $HOME if the current directory is not writable).

Use case and Examples

Running a Script in the Background

nohup ./my_long_running_script.sh &
This will run my_long_running_script.sh in the background. The & symbol places the command in the background, and nohup ensures it continues even after you disconnect. Output will be redirected to nohup.out.

Running a Command and Redirecting Output

nohup ./my_long_running_script.sh > my_output.log 2>&1 &
This command redirects standard output to my_output.log and standard error to the same file (2>&1). The script will run in the background unaffected by the terminal disconnection.

Running a Command with a Specific Priority

nohup nice -n 10 ./my_long_running_script.sh &
This command runs the script with a lower priority (using nice). nohup still ensures it continues running after disconnection. Output will go to nohup.out.

Running a Command without Generating nohup.out

nohup ./my_long_running_script.sh > /dev/null 2>&1 &
This command redirects both standard output and standard error to /dev/null, effectively discarding them. Useful when you don't need the output.

Commonly used flags

Flag Description Example
--help Displays help information and exits. nohup --help
--version Displays version information and exits. nohup --version
(None) Without any flags, nohup simply runs the command immune to hangup signals, redirecting output to nohup.out if needed. nohup ./my_script.sh


Share on Share on

Comments