While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.
When exiting the shell of a Linux System, all running processes are usually terminated or hang up. So what do you do If you still want to keep the processes running even exiting the shell/terminal? This is where the nohup command comes in.
Nohup, short for no hang up is a command in Linux systems that keep processes running even after exiting the shell or terminal. Nohup prevents the processes or jobs from receiving the SIGHUP (Signal Hang UP) signal. This is a signal that is sent to a process upon closing or exiting the terminal. In this guide, we take a look at the nohup command and demonstrate how it can be used.
Nohup command syntax is as follows;
nohup command arguments
Let’s see how the command comes into play
You can begin by checking the version of Nohup using the syntax below
If you want to keep your processes/jobs running, precede the command with
nohup as shown below. The jobs will still continue running in the shell and will not get killed upon exiting the shell or terminal.
Output From the output above, the output of the command has been saved to
nohup.out to verify this run,
Output Additionally, you can opt to redirect the output to a different file as shown
nohup ./hello.sh > output.txt
Once again, to view the file run
Output To redirect to a file and to standard error and output use the
> filename 2>&1 attribute as shown
nohup ./hello.sh > myoutput.txt >2&1
To start a process in the background use the
& symbol at the end of the command. In this example, we are pinging google.com and sending it to the background.
nohup ping google.com &
Output To check the process when resuming the shell use the
pgrep command as shown
pgrep -a ping
Output If you want to stop or kill the running process, use the
killcommand followed by the process ID as shown
nohup.outis used as the default file for stdout and stderr.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in our Questions & Answers section, find tutorials and tools that will help you grow as a developer and scale your project or business, and subscribe to topics of interest.Sign up now
Hi. Thanks for the nice tips. I am a newbie in this field and I have a simple question. well, I am using nohup in my work in the background. well. I am facing a problem which is. once I submit the job it working well in the background. no issue. but I have 50+ commands to run. so it is creating a long queue. now the problem is that each job take some time to finish and because of that a long-waited queue got cancel automatically. is there any way to keep it in the queue or prolonged the queuing time or another way by which PID keep activate itself until its turn come for execution? love to hear from your expertise. Thanks
- Malik Waqar Arshad
How do I use nohup to run script. Ànd how can I see/monitor the logs
great for tcpdump : nohup sudo tcpdump -i any -nn -w /var/tmp/file.pcap -C 100 -W 50 “src x.x.x.x and dst y.y.y.y” & •to find the process that u created : - pgrep -a tcpdump - ps aux | grep then : sudo kill
- Edgar Lipnitsky
When you run this command normally, does it produce any output as you are redirecting the output in a file.
- Hemant Ganwgar
how do i run nohup for this type of cmd cat out.csv | cut -d “,” -f3,4 | sed ‘s/,/\t/g’ | sort -n -k 2 > out.txt nohup cat out.csv | cut -d “,” -f3,4 | sed ‘s/,/\t/g’ | sort -n -k 2 > out.txt & - doesn’t work