I have a process that is already running for a long time and don't want to end it.
How do I put it under nohup (that is, how do I cause it to continue running even if I close the terminal?)
I have a process that is already running for a long time and don't want to end it.
How do I put it under nohup (that is, how do I cause it to continue running even if I close the terminal?)
Using the Job Control of bash to send the process into the background:
bg
to run it in the background.disown -h [job-spec]
where [job-spec] is the job number (like%1
for the first running job; find about your number with thejobs
command) so that the job isn't killed when the terminal closes.These are good answers above, I just wanted to add a clarification:
You can't
disown
a pid or process, youdisown
a job, and that is an important distinction.A job is something that is a notion of a process that is attached to a shell, therefore you have to throw the job into the background (not suspend it) and then disown it.
Issue:
See http://www.quantprinciple.com/invest/index.php/docs/tipsandtricks/unix/jobcontrol/ for a more detailed discussion of Unix Job Control.
Suppose for some reason Ctrl+Z is also not working, go to another terminal, find the process id (using
ps
) and run:kill -20
(SIGTSTP
) will suspend the process andkill -18
(SIGCONT
) will resume the process, in background. So now, closing both your terminals won't stop your process.This worked for me on Ubuntu linux while in tcshell.
CtrlZ to pause it
bg
to run in backgroundjobs
to get its job numbernohup %n
where n is the job number