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