How to keep program running after SSH disconnection?

15

7

Possible Duplicates:
Keep a program running after closing a console, after the program has started
How can I use ssh to run a command on a remote Unix machine and exit before the command completes?

Hi!

I want to run program from my notebook by SSH-connection to remote server. The problem is I am going home with my notebook :)

How to keep program running?

Max

Posted 2010-04-25T13:09:27.410

Reputation: 253

Question was closed 2010-04-25T15:25:23.337

Answers

22

'screen' is most likely what you want. It allows you to disconnect and reconnect at will. After you SSH into the server, run screen before starting your program. Ctrl-a, Ctrl-d will disconnect you (the program continues regardless). On your return, 'screen -r' will reconnect you as if you'd never been away.

Think of it as VNC or RDP for text terminals. Search for 'using screen' for many tutorials.

Edited to add: These days I would recommend tmux instead, especially if used in conjunction with the script tmx. The ability to split panes (vertically and horizontally) and resize them is a huge boon over screen.

Chris

Posted 2010-04-25T13:09:27.410

Reputation: 370

5Incidentally, screen will keep running if your connection times out or anything like that while you're still attached to it.

Some useful commands: ctrl + a, ctrl + d = detach from screen, screen -r = re-attach to a screen, screen -x = attach to a screen in shared mode (can be used for teaching etc, two users can share the same screen), ctrl + a, esc = enter scroll mode (hit q to exit again).

NOTE: If you start a screen by typing "screen program" it will immediately launch the program in screen, but if it exits you'll lose the buffer. Typing just "screen" will give you a persistent terminal. – None – 2010-04-25T13:23:46.420

Chris, also tnx for usefull answer. – None – 2010-04-25T13:24:11.007

18

nohup is a command that will run another command, and make it immune to the "hangup" signal.

You run it as simply as:

nohup command

but you will also need to redirect stdin, stdout and stderr. See the man page for more info.

You'll also probably want to put it in the background.

You will also need to know the kill command to eventually kill it.

Oddthinking

Posted 2010-04-25T13:09:27.410

Reputation: 672

Yes, tnx a lot! so easy )) – None – 2010-04-25T13:15:30.917

This is the one that I use. Very very easy. Use tee to redirect stdin, stdout, and stderr. – Ritwik Bose – 2010-04-25T16:58:32.870