Typically, in Linux, when your connection drops or user log out from the system, your session will terminate, and all the processes executed from the terminal will stop. If you want a program or command to keep running in the background even after log out or exit from the system, you may have to use the nohup command.
The nohup command will execute other programs or commands with its provided arguments and ignore all hangup signals. This command is useful, especially when connected to your server via SSH, and want the program or command to keep running in the background even after disconnecting from the server.
Nohup Linux Command
Syntax:
nohup COMMAND [ARGS]
or
$ nohup options
To find help regarding the nohup command:
$ nohup --help
To find the version information of nohup, use the below command:
$ nohup --version
1. Running Command in Foreground
By default, nohum command runs in the foreground and redirects the output to the ‘nohup.output’ file. This file will be created in the current working directory. If the user does not have permission, it will be created in the user’s home directory.
$ nohup ls
Example:
2. Running the Command in Background
Using the nohup command in the foreground has a drawback that you cannot interact with the terminal until command execution finishes. So to avoid this, we will run the command in the background like this
$ nohup ping fosslinux.com
Example:
You can see in the above example all the command output will be appended to the nohup.out file. You can view this file using the ‘cat nohup’ command in the Terminal.
[1] 2233
Where [1] is Job ID, and 2233 is the (PID) of the background process. You can use this Process ID to kill the background process:
$ kill 2233
The above command will kill the background process.
3. Redirecting Output to a File
By default, the nohup command writes output to the nohup.out
file. You can define your own output file as well using standard shell redirection.
$ nohup ls > list.out
Example:
You can also create separate files for output and error using the following command-line.
nohup ls > list.out 2 > list.err
4. Running Multiple Commands
You can also run multiple commands with nohup. In the below example, mkdir, bash, and ls commands are running in the background.
$ nohup bash -c 'mkdir fossDir && ls'
Example:
Conclusion
In this tutorial, the uses of the nohup command are explained with straightforward examples, and we hope that now you can understand the usefulness of this command very well. Please feel free to leave a comment.