Edit History Actions Discussion

Diff for "Howto/Screen"

Differences between revisions 13 and 14
Revision 13 as of 2008-02-17 20:01:05
Size: 5191
Editor: localhost
Comment: converted to 1.6 markup
Revision 14 as of 2008-05-26 17:18:24
Size: 5567
Comment: clarifications
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
For example, if you wish to run two programs at the same time, without having to open multiple connections to the server, you can do this with screen. Maybe you want to run irssi, while at the same time reading the man-page for irssi or something like that. For example, if you wish to run two programs at the same time, without having to open multiple connections to the server, you can do this with screen. Maybe you want to run irssi, while at the same time reading the man-page for irssi or checking your E-mail.
Line 7: Line 7:
Another great thing with irssi is that it allows you to keep your programs running while you are disconnected from the server. This makes it possible to stay connected to IRC and log everything even while your computer is turned off! Another great thing with Screen is that it allows you to keep your programs running while you are disconnected from the server. This makes it possible to stay connected to IRC and log everything even while your computer is turned off! All you have to do is start your IRC client, like irssi, in a Screen and then "detach" when you go offline.
Line 9: Line 9:
However, since screen is so powerful and flexible, and it's all text-only, it can be hard to understand how everything works and get a good overview. It's also easy to start too many screen sessions, and this way locking yourself out from the shell (since you can only have so many processes/connections). If this happens, talk to Independence and he can help you out. Also remember that you are only allowed to run two programs in the background, for example one instance of irssi and one instance of lynx. However, since screen is very powerful and flexible, and it's all text-only, it can be hard to understand how to use it properly. It's also easy to start too many screens and lock yourself out of the system (since you can only have so many logins/processes). If this happens, talk to an admin to get help exiting your processes. Also remember that you are only allowed to run two programs in the background, for example one instance of irssi and one instance of lynx. Also, it's not ok to run multiple instances of irssi.
Line 12: Line 12:
You can detach a screen when you want to log out, this way your programs will keep running while you are away.
If you want to be able to do this, you first have to start your programs ''in'' a screen, otherwise you won't be able to detach.
If you want to run a program on the server even while you are not connected, you first have to start the program inside a Screen. You can then detach this screen, and attach it another time (from another computer maybe).
Line 15: Line 14:
To start a screen session, simply type: To start a new screen, use the command screen in an empty shell on the server:
Line 20: Line 19:
This will spawn a new screen for you. You won't see much of any output at all, the only thing that happens (for me at least) is that the console gets cleared of text. It should look just like a regular login, but this time it is running inside a screen. This will spawn a new screen for you. You will get a new empty shell, and at the bottom you can see a status bar, called a hardstatus line. In this hardstatus line you can see the different "windows" you have running in this screen session.
Line 24: Line 23:
When you want to log out, you can detach your program by entering the key combination of Ctrl-A, D (that is Ctrl-A followed by a D). Now your command is running in the background, inside your screen. When you want to log out, you can detach your program by entering the key combination of Ctrl-a d (that is; press Ctrl-a and then press d). Now your program is running in the detached screen, waiting for you to return and attach the screen session again.
Line 26: Line 25:
You can at this time log out, and come back at a later time to resume your screen, and it will keep running at the server the whole time. You can now log out from the shell, and the screen session will still be there (unless the server reboots etc).
Line 28: Line 27:
To bring the command to the foreground again (reattach the screen), type: To attach your screen session again, use this command in an empty prompt:
Line 35: Line 34:
Remember to not start mulitple screens, it will only make things harder for you.

If you want to list your running screens, you can use this command:

{{{
screen -ls}}}

If you have multiple screens, resume them one by one and exit.
Line 37: Line 45:
Now, if you want to run multiple programs at the same time, and easily switch between them, you can create several "windows" in your screen session. To create a new window, use this key combination: Ctrl-A, C. (C for Create). Now, if you want to run multiple programs at the same time, and easily switch between them, you can create several "windows" in your screen session. To create a new window, use this key combination: Ctrl-a c (c for Create).
Line 39: Line 47:
You should be presented with a brand new prompt, where you can start yet another program! You can create even more windows if you want, but be careful not to start any more than you need. If you create too many, you won't be able to log back in again. Two windows is probably good for most. You should be presented with a brand new prompt, where you can start yet another program. You can create even more windows if you want, but be careful not to start any more than you need. If you create too many, you won't be able to log back in again. Try not to have more than three windows running at the same time.
Line 41: Line 49:
To switch between two windows inside a screen, press Ctrl-A, A. This immediately switches back and forth between two different windows (really, it switches to the last used window).
If you have more that two windows, you can use Ctrl-A, <space> for stepping forward, and Ctrl-A, <backspace> for stepping backwards. You may also also use Ctrl-A, <0-9> where the number is the window you want to visit. Or you can use Ctrl-A N (b for before, or previous window in the list) and Ctrl-A N (n for next window in list).
To switch between two windows inside a screen, press Ctrl-a a. This immediately switches back and forth between two windows (really, it switches to the last used window).
If you have more that two windows, you can use Ctrl-a n for stepping forward (next window), and Ctrl-a p for stepping backwards (previous window).
Line 44: Line 52:
If you want to see a list of all the windows for a better overview, press Ctrl-A, ". You can then select a window with the arrow keys and enter it by pressing enter.

If you have more than two windows, it might also be a good idea to name them so you can distinguish them in the list (instead of all being named "bash"). You can do this by pressing Ctrl-A, A.
You may also also use Ctrl-a <0-9> where the number is the window you want go to. Ctrl-a " gives a list of current windows, and you can select the one you want to go to.
Line 51: Line 56:
To exit from a window, just type ''logout'' or ''exit'' (you can also do this by pressing Ctrl-D). If you only have one window, you will exit the screen session and you will get a message like this: To exit from a window, just type ''logout'' or ''exit'' (you can also do this by pressing Ctrl-d). If you only have one window, you will exit the screen session and you will get a message like this:
Line 56: Line 61:
== Extra == == Good to know ==
Line 58: Line 63:
If you somehow started two independent screen sessions (not windows, but alltogether different sessions) you might not be able to resume the right one just by tying ''screen -r''. In this case, you have to specify ''screen -r <id>''. If you don't need more than one screen (which you probably don't), you can just resume the one you don't want anymore and type ''exit'' or ''logout'' to destroy it. If your connection to the shell is lost, you might not be able to resume your screen right away because the server thinks it's still in use until a timeout is reached. If you want to resume right away, you can use this command:
Line 60: Line 65:
Sometimes when the server reboots, your screens "dies". If this happens, you won't be able to reattach it. Instead, you have to clear the old (by doing ''screen -wipe'') one and start a new. More info: [[FAQ/DeadScreen]]. {{{
screen -rd}}}

This command will detach any previously attached clients and then attach you.

If you somehow started two alltogether different screen sessions you might not be able to resume the right one just by tying ''screen -r''. In this case, you have to specify ''screen -r <id>''. You can get a list of current running screen sessions and their id with the command ''screen -ls''. Just resume any extra screens you don't need and exit them by typing ''exit'', ''logout'' or Ctrl-d.

Sometimes when the server reboots, your screens "dies". If this happens, you won't be able to reattach it. Instead, you have to clear the old one by doing ''screen -wipe'' and start a new one. More info: [[FAQ/DeadScreen]].

Screen

Screen is a great tool which has many uses. You could think about it as a kind of a window manager for your console.

For example, if you wish to run two programs at the same time, without having to open multiple connections to the server, you can do this with screen. Maybe you want to run irssi, while at the same time reading the man-page for irssi or checking your E-mail.

Another great thing with Screen is that it allows you to keep your programs running while you are disconnected from the server. This makes it possible to stay connected to IRC and log everything even while your computer is turned off! All you have to do is start your IRC client, like irssi, in a Screen and then "detach" when you go offline.

However, since screen is very powerful and flexible, and it's all text-only, it can be hard to understand how to use it properly. It's also easy to start too many screens and lock yourself out of the system (since you can only have so many logins/processes). If this happens, talk to an admin to get help exiting your processes. Also remember that you are only allowed to run two programs in the background, for example one instance of irssi and one instance of lynx. Also, it's not ok to run multiple instances of irssi.

Starting, detaching and reattaching a screen session

If you want to run a program on the server even while you are not connected, you first have to start the program inside a Screen. You can then detach this screen, and attach it another time (from another computer maybe).

To start a new screen, use the command screen in an empty shell on the server:

screen

This will spawn a new screen for you. You will get a new empty shell, and at the bottom you can see a status bar, called a hardstatus line. In this hardstatus line you can see the different "windows" you have running in this screen session.

Now you can just start the program you want, for example irssi.

When you want to log out, you can detach your program by entering the key combination of Ctrl-a d (that is; press Ctrl-a and then press d). Now your program is running in the detached screen, waiting for you to return and attach the screen session again.

You can now log out from the shell, and the screen session will still be there (unless the server reboots etc).

To attach your screen session again, use this command in an empty prompt:

screen -r

That wasn't too hard, was it? :) Whith the few things you have learned this far, you can really make so much more of your shell experience. It's a truly great tool!

Remember to not start mulitple screens, it will only make things harder for you.

If you want to list your running screens, you can use this command:

screen -ls

If you have multiple screens, resume them one by one and exit.

The next step

Now, if you want to run multiple programs at the same time, and easily switch between them, you can create several "windows" in your screen session. To create a new window, use this key combination: Ctrl-a c (c for Create).

You should be presented with a brand new prompt, where you can start yet another program. You can create even more windows if you want, but be careful not to start any more than you need. If you create too many, you won't be able to log back in again. Try not to have more than three windows running at the same time.

To switch between two windows inside a screen, press Ctrl-a a. This immediately switches back and forth between two windows (really, it switches to the last used window). If you have more that two windows, you can use Ctrl-a n for stepping forward (next window), and Ctrl-a p for stepping backwards (previous window).

You may also also use Ctrl-a <0-9> where the number is the window you want go to. Ctrl-a " gives a list of current windows, and you can select the one you want to go to.

Exiting

To exit from a window, just type logout or exit (you can also do this by pressing Ctrl-d). If you only have one window, you will exit the screen session and you will get a message like this:

[screen is terminating]

Good to know

If your connection to the shell is lost, you might not be able to resume your screen right away because the server thinks it's still in use until a timeout is reached. If you want to resume right away, you can use this command:

screen -rd

This command will detach any previously attached clients and then attach you.

If you somehow started two alltogether different screen sessions you might not be able to resume the right one just by tying screen -r. In this case, you have to specify screen -r <id>. You can get a list of current running screen sessions and their id with the command screen -ls. Just resume any extra screens you don't need and exit them by typing exit, logout or Ctrl-d.

Sometimes when the server reboots, your screens "dies". If this happens, you won't be able to reattach it. Instead, you have to clear the old one by doing screen -wipe and start a new one. More info: FAQ/DeadScreen.

More