Screen? A must for SSH
First some basic cheats, so you don’t have to search through the whole post:
ctrl+a+c make a new screen
ctrl+a+n next screen down the line
ctrl+a+p previous screen down the line
ctrl+a+k kills current screen until last one then you’re out
ctrl+a+d leave, but leave them running and re-attachable
screen -ls 31619.something.else (Detached)
screen -r 31619.something.else re-attaches to that session
screen -DDR to re-attach any (the first) detached session.
If there is none, it creates a new session.
If you’ve ever used SSH to connect to a server, you ‘ll know its limitations: if you want to open a new window, you’ll need to create a second SSH connection to the server. And if the connection breaks during the SSH tunnel, you’ve lost your progress. This is where Screen comes in.
Screen, which calls itself a “full-screen window manager that multiplexes a physical terminal between several processes (typically interactive shells).” is a usefull tool to use 1 SSH connection, but use multiple screens to work in. So you can have 1 screen to write some scripts in, another to tail a logfile and a third to check your IRC messages 😉
Screen is installed by default on most installations, you can verify this by running the “which screen” command. If it’s not installed, try to apt-get or yum it – it’s in most repositories.
You can start screen by typing:
[root@vps ~]# screen
This makes sense, right? 🙂
You’ll probably notice that not much happens if you type that. At least, it seems like not much as happened. In fact, you’ve just opened a new “screen” to type your commands. The program “screen” has a few commands of its own, in order to create a new window, and navigate through the open ones.
Once you’ve opened “screen“, you can see a command list by typing “CTRL + A”, followed by “?” (the question mark). By typing “CTRL + A” you state that the next signal is to be sent to the program “screen“, in stead of to the Shell (like you would in a normal shell). You’ll see a list of all bindings known to “screen“.
Start a new window by typing “CTRL + A” + “c”. The C stands for Create – I know, too obvious. A new window will be created. In order to test this, type the command “top”. Then create a new window, by using “CTRL + A” + “c”. You’ll see top disappear, and a new window will open. Type in some commands of your choice, and return to the previous window, by doing “CTRL + A” + “n”. The “n” stands for “Next”, and will open the next screen. “CTRL + A” + “p” would’ve opened the previous screen.
Closing a window, can be done by typing “exit” (like you would in a normal shell). This will cause you to fall back to the previous monitor you opened, or to your main prompt – where you started screen, showing you a message such as “[screen is terminating]” – so you’ll know you’ve hit the main shell.
The biggest advantage in using screen, is that you can “detach” a screen-session. This means you return to the normal shell, but the processes started in “screen” are still active in the background. You can detach yourself by typing “CTRL + A” + “d”. Again, obvious that “D” stands for Detach. This gives you more flexibility for managing your server(s): you can start a number of processes, quietly exit the shell and return a couple of hours later to pick up the session started in screen.
Should you disconnect by accident, during a screen-session, you can always pick up a previous screen by relogging to shell and typing “screen -ls“. This will show a list of all running screen-sessions at any given time. You can pick up a previous screen-session, by typing “screen -r <name_of_session>“.
Probably known to most linux-administrators, but still an awesome tool 🙂
Re-printed (so we don’t loose the information) from:
http://www.mattiasgeniar.be/2008/06/04/screen-a-must-for-ssh/