Continue SSH background task/jobs when closing SSH
I have the same question as here but even beyond that.
If I logout/exit the SSH connection, I need my program running in background.
Before exit, I type bg
and jobs
to check background running task, but after exiting SSH, the program doesn't run, it closes when I close the SSH window.
What can I do if I want my program still running after closing the SSH window? I do use nohup
screen
but it also doesn't work, or am I missing something?
Solution 1:
When you use screen
you need to detach with CTRL+A+D before you exit ssh
.
Alternatively, if you want to run a process directly with screen you can use
screen -dmSL [session name] [commands]
-
-d
starts a screen session and immediately detaches from it -
-m
forces creating a new screen session -
-S
lets you give the session a name -
-L
turns on logging to~/screenlog.0
example:
screen -dmSL workstuff myscript.sh
You can then either:
resume later using screen -x workstuff
or
check the log file less -r ~/screenlog.0
Solution 2:
Use tmux
. I'm not even sure if screen
is even still under active development. It's kind of a preference thing, but as someone who uses tmux
, I can testify that it set up in about 5 minutes, and worked perfectly.
On a Debian-based system (on the remote machine):
sudo apt-get install tmux
then enter tmux
to enter, run whatever process you need, and hit Ctrl+B then D (this leaves the tmux session). Then, you can log out of SSH.
When you need to come back/check on it again, start up SSH, and enter tmux attach
. It will take you back to your tmux
session.
tmux
has many more capabilities, as detailed here. But, this should solve your immediate problem.
Good luck!
Solution 3:
At last, I solved it using screen
:
In screen mode, detach it using CtrlAD. Then you can close the SSH window.
Solution 4:
nohup use: The first of the commands below starts the program abcd in the background in such a way that the subsequent logout does not stop it.
$ nohup abcd &
$ exit