Demystifying Background Process Execution: A Comprehensive Guide to Using nohup

Play this article

We often need to run processes in the background during software development and deployment. While developing on the local machine we keep our terminal open but the same is not true in the case of development/deployment on remote machines. In this article, we we'll look into how can we use nohup to run processes in the background.

What is nohup?

Nohup is a command in Unix-like operating systems that is used to execute a command or run a script in the background, even when the user logs out or the terminal is closed. The name nohup stands for "no hangup," indicating that the process will not be terminated even if the terminal session ends.

Basic uses

nohup command has the following syntax


Here, COMMAND represents the command or script you want to execute, and ARGUMENTS are any additional parameters or options required by the command. The ampersand (&) at the end is used to run the command in the background.

For example, if you want to run a script called using nohup, you would use the following command:

nohup sh &

This command launches the script in the background and keeps it running even if you log out or close the terminal. The output generated by the script is stored in the "nohup.out" file.

Nohup is commonly used for long-running processes, such as server applications or data processing tasks, where it is important for the process to continue running independently of the user's session.

Redirecting output(stdout) to another file

You often want to redirect output to another file or directory for example, output.log, etc. nohup allows you to easily redirect output to another file.

The syntax for redirecting the output to a file is as follows:


Here OUTPUT_FILE is the name of the file where you want to redirect the output.

For example

nohup sh > output.log &

Redirecting stderr & stdout to the same file

The standard error is another output stream typically used by programs to output error messages or diagnostics. It is a stream independent of standard output and can be redirected separately.
By default, when you redirect the output using > or >> in the nohup command, only the standard output (stdout) will be redirected to the specified file. The standard error (stderr) will still be displayed on the terminal or sent to the parent process.

If you want to redirect both stdout and stderr to the same file, you can use the following syntax:


Here, 2>&1 redirects the stderr (file descriptor 2) to the same location as stdout (file descriptor 1), which is the specified output file.

For example

nohup sh > output.log 2>&1 &

Redirecting stderr to another file

To redirect the error output (stderr) to a separate file, you can use the following syntax:


For example

nohup sh > output.log 2> error.log


The article dives into the basic usage of nohup. It covers the syntax of the nohup command, highlighting the use of an ampersand (&) to run processes in the background.

Furthermore, the article discusses the redirection of output, both stdout and stderr, to specific files. It demonstrates how to redirect the standard output to an output file, enabling the capture and review of generated output. Additionally, it explains how to redirect both stdout and stderr to the same file, facilitating the comprehensive logging of program execution. The article also addresses the separate redirection of stderr to an error file, ensuring the effective management of error messages and diagnostics.

Did you find this article valuable?

Support Rahul kumar's team blog by becoming a sponsor. Any amount is appreciated!