Screen: Difference between revisions
(23 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
== Basics == | == Basics == | ||
''' | '''Screen''' usually does not exist; this <s>is the committee's</s> was a former committee's general position on screen due to the disastrous and/or hilarious situations which often result from new members' attempts to get it working. However, for the purpose of this tutorial, screen '''does''' exist, and this is how you use it. (Blame coconut for this defiance.) | ||
=== Omg, what's screen? === | === Omg, what's screen? === | ||
Screen is most commonly known as "that thing that lets you stay logged in to chat when you log out of RedBrick". It's a terminal multiplexer, which allows you to log into multiple terminal sessions from one terminal window and keeps them open when you go away to bed or whatever it is you do with your time. | |||
=== Opening === | === Opening === | ||
Line 67: | Line 67: | ||
=== Detaching and reattaching screen === | === Detaching and reattaching screen === | ||
One of the most popular features of screen is that it can keep you logged in even when you're offline. This means you can leave programs running or even stay on IRC even when you're not online. To this, you just detach from screen instead of exiting it. To detach from screen without exiting, use the following command: | |||
One of the most popular features of screen is that it can keep you logged in even when you're offline. This means you can leave programs running or even stay on IRC even when you're not online. When you "minimise" screen or make it invisible, it is called detaching it. | |||
To do this, you just detach from screen instead of exiting it. To detach from screen without exiting, use the following command: | |||
ctrl-a d | ctrl-a d | ||
Line 76: | Line 79: | ||
Later, you'll come back online and want to reattach to your screen session. To reattach a detached screen, use this command at the prompt: | Later, you'll come back online and want to reattach to your screen session. When you "maximise" screen or bring it back onto your terminal, this is known as attaching. To reattach a detached screen, use this command at the prompt: | ||
screen -dr | |||
The -d will detach any attached screens and -r will reattach your screen. | |||
If you have more than one screen session available, you will need to specify the screen id you wish to open. You'll be given a list of the currently available screens, so then you type: | |||
screen -r | |||
followed by the id listed above of the screen you want to reattach to. | |||
=== Moving windows === | |||
If are in a window, but want it to move it to another, just type these commands while attached to screen and in that window, and replace '''x''' with the destination you want: | |||
Ctrl + a | |||
: | |||
number x | |||
For example, if you are in window number 2, press '''Ctrl+a''', then type the colon symbol (''':'''), then '''number 4''', to move that window to window 4. | |||
=== Start and stop signals === | |||
Quite often it happens someone may end up using the stop signal command in screen by mistake. This command is: | |||
ctrl-a s | |||
and you should probably avoid using it! But as the s key is beside the a key, people will occasionally run this command by accident without knowing it. As this is a stop signal, it has the unfortunate side effect of freezing up your window :( Worry not however, for to fix it, all you need to do is use the start signal again to bring it back from the dead: | |||
ctrl-a q | |||
This should have you back in action very shortly. However, if your screen is frozen and you can't figure out why, try asking a member of [[Helpdesk]] and they should know the answer :) | |||
=== Killing screen while attached === | |||
Often enough new members (and often, experienced people) will make mistakes with screen that they can't fix. To kill screen altogether and start over, use: | |||
ctrl-a \ | |||
Or, if you just want to kill a single window in screen, use: | |||
ctrl-a k | |||
or even just type "exit" at the prompt. | |||
=== Killing screen while detached === | |||
'''Warning''': using the ''kill'' command to do anything can be very dangerous if you don't know what you're doing. If you're unsure, reattach the screen you want to kill and follow the instructions above. | |||
If you have more than one screen session and you want to kill one of them, type "screen -dr" to get a list of the available screens (from the terminal which appears when you first log in to RedBrick). Note the '''number''' (also known as a process id, or pid) at the beginning of each screen name. This is the process number. Ensure you know which screen session is which. | |||
To terminate a session, use this command (''pid'' is the number of the session you want to kill) | |||
kill ''pid'' | |||
This will send the signal SIGTERM to the process, requesting its termination. | |||
If that fails and you want lil_cain to start complaining | |||
kill -9 ''pid'' | |||
This will send the signal SIGKILL to the process, terminating it immediately and with lots of blood. | |||
Then, to then get rid of the dead screen session, type | |||
screen -wipe | |||
== Screen Configuration == | |||
So after you've set up screen and have gotten used to it, you will probably want to configure it a little bit and the way to do this is by creating a ~/.screenrc | |||
To do this just | |||
nano ~/.screenrc | |||
Here's an example of a .screenrc that you may want to use: | |||
hardstatus alwayslastline | |||
hardstatus string '%{= kg}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{=b kR}(%{W}%n*%f %t%?(%u)%?%{=b kR})%{= kw}%?%+Lw%? %?%= %{g}][%{Y}%l%{g}]%{=b C}[ %d %M %c ]%{W}' | |||
deflogin off | |||
startup_message off | |||
screen -t irc 1 irssi | |||
screen -t Email/slrn 2 mutt -Z | |||
screen -t heys -L -l 3 | |||
Basically this only really does two things, sets a hardstatus (basically a line that contains some information) and makes it display only on the bottom line and also creates a few new windows. | |||
The new windows created are given names and optionally a number or command (or both). | |||
screen -t irc q irssi | |||
This will create screen window 1, give it the title "irc" and then run irssi when you start screen. | |||
deflogin off | |||
This sets windows logged out by default, which means that you won't have to "mesg n" windows to not receive heys | |||
startup_message off | |||
This turns the startup message thats displayed when you start a new screen session off. | |||
screen -t heys -L -l 3 | |||
Will create a logged in window specifically for heys. Handy. | |||
All this makes it very simple to restart all your processes if Redbrick ever crashes. | |||
With the above configuration file it will look something like this: | |||
[[Image:screenrc.jpg]] | |||
=== Reattaching Screen Automatically === | |||
So, you've made your screen, configured it, and you happily type screen -dr '''every time''' you login to RedBrick. But wouldn't it be nice if whenever you login your screen would reattach '''itself'''??? It can be done :D | |||
Simply use your favorite text editor to edit your ~/.zlogin if you're using zsh (if you haven't changed your login shell, this is the one you're using) or ~/.bash_login if you're using bash and put the following in it | |||
screen -dr | screen -dr | ||
That should do the job. It'll try to reattach a screen whenever you login on any redbrick server | |||
* Please note, if this in fact, does not work, you can edit it out by using winSCP and editing the file using it. | |||
screen | == Useful links == | ||
If you'd like to learn more about the program, a long list of screen commands can be found here: http://www.linuxdevcenter.com/linux/cmd/cmd.csp?path=s/screen | |||
Help edited a screenrc: http://www.debian-administration.org/articles/560 | |||
A starting guide to screen: http://magazine.redhat.com/2007/09/27/a-guide-to-gnu-screen/ | |||
The Gentoo wiki article on screen (quite in depth) : http://www.gentoo-wiki.info/Screen | |||
[[Category:Helpdesk]] | [[Category:Helpdesk]] |
Latest revision as of 01:49, 3 November 2012
Basics
Screen usually does not exist; this is the committee's was a former committee's general position on screen due to the disastrous and/or hilarious situations which often result from new members' attempts to get it working. However, for the purpose of this tutorial, screen does exist, and this is how you use it. (Blame coconut for this defiance.)
Omg, what's screen?
Screen is most commonly known as "that thing that lets you stay logged in to chat when you log out of RedBrick". It's a terminal multiplexer, which allows you to log into multiple terminal sessions from one terminal window and keeps them open when you go away to bed or whatever it is you do with your time.
Opening
Type "screen" at the prompt like this:
This will open a new screen session. First you'll see the screen startup message, which gives a little info on the program.
Just hit space/return as it says and you'll be running screen. You won't notice anything immediately different once running screen, instead, you'll be back at the same old terminal. Now, however, you have access to a large variety of commands and features that you didn't before.
Screen commands
Ctrl-a commands
Nearly all of screen's commands are used via the ctrl-a key combination. First, you press the ctrl and a keys together, then release. Next, press the key you want to run a command. These commands can be a little awkward and difficult to remember at first, but you'll soon get the hang of it. In this tutorial, the commands will be shown as ctrl-a and then a letter, with the following letter being associated with a command.
Creating a new window
When you start screen, it presents you with the normal single window terminal you're used to. You can, however, create many more and run them all within the one screen session. The following command will create another window for you:
ctrl-a c
Just hit ctrl and a together, then release them and hit c. This keybinding will open a new window (window 2) inside screen. Now you'll have two windows to use, so you'll have to learn how to use the ctrl-a commands to switch between them.
Switching windows
Once you have more than one window open, you can switch between them using some of the following commands:
ctrl-a n
This command will switch you over to the next window.
ctrl-a p
This one will bring you back to the previous window.
ctrl-a a
This will switch between the last two windows that you've been using.
ctrl-a window_number
Using this command, you can specify exactly which window you want to jump to by hitting ctrl and a, then the number on the keyboard of your desired window. This is pretty useful for when you have a lot of windows open in screen.
Naming your windows
You can give each of your windows its own name too for convenience by using this command:
ctrl-a A
This one might seem confusing first as the A is a capital letter in this case, but all you need to do is hit ctrl and a together and release as before, then hold shift and press a to get the capital. After you run it, you'll see a white bar appear at the bottom of your window, where you can change the name of your screen to whatever you like. In this case, the window has just been renamed to "chat".
After you've named a few windows, you can try this command:
ctrl-a "
Yup, even quotation marks can be used in screen commands. So as before you do ctrl-a, then hold shift and hit the 2 key to get the " :) This will bring up a convenient list of all your windows with their names.
From this window you can view and go to any of your windows. The flags on the right indicate whether your window is logged in or not with $ symbol.
Detaching and reattaching screen
One of the most popular features of screen is that it can keep you logged in even when you're offline. This means you can leave programs running or even stay on IRC even when you're not online. When you "minimise" screen or make it invisible, it is called detaching it.
To do this, you just detach from screen instead of exiting it. To detach from screen without exiting, use the following command:
ctrl-a d
You'll then be returned to the prompt with a message telling you screen has been detached, like so:
Later, you'll come back online and want to reattach to your screen session. When you "maximise" screen or bring it back onto your terminal, this is known as attaching. To reattach a detached screen, use this command at the prompt:
screen -dr
The -d will detach any attached screens and -r will reattach your screen.
If you have more than one screen session available, you will need to specify the screen id you wish to open. You'll be given a list of the currently available screens, so then you type:
screen -r
followed by the id listed above of the screen you want to reattach to.
Moving windows
If are in a window, but want it to move it to another, just type these commands while attached to screen and in that window, and replace x with the destination you want:
Ctrl + a : number x
For example, if you are in window number 2, press Ctrl+a, then type the colon symbol (:), then number 4, to move that window to window 4.
Start and stop signals
Quite often it happens someone may end up using the stop signal command in screen by mistake. This command is:
ctrl-a s
and you should probably avoid using it! But as the s key is beside the a key, people will occasionally run this command by accident without knowing it. As this is a stop signal, it has the unfortunate side effect of freezing up your window :( Worry not however, for to fix it, all you need to do is use the start signal again to bring it back from the dead:
ctrl-a q
This should have you back in action very shortly. However, if your screen is frozen and you can't figure out why, try asking a member of Helpdesk and they should know the answer :)
Killing screen while attached
Often enough new members (and often, experienced people) will make mistakes with screen that they can't fix. To kill screen altogether and start over, use:
ctrl-a \
Or, if you just want to kill a single window in screen, use:
ctrl-a k
or even just type "exit" at the prompt.
Killing screen while detached
Warning: using the kill command to do anything can be very dangerous if you don't know what you're doing. If you're unsure, reattach the screen you want to kill and follow the instructions above.
If you have more than one screen session and you want to kill one of them, type "screen -dr" to get a list of the available screens (from the terminal which appears when you first log in to RedBrick). Note the number (also known as a process id, or pid) at the beginning of each screen name. This is the process number. Ensure you know which screen session is which.
To terminate a session, use this command (pid is the number of the session you want to kill)
kill pid
This will send the signal SIGTERM to the process, requesting its termination.
If that fails and you want lil_cain to start complaining
kill -9 pid
This will send the signal SIGKILL to the process, terminating it immediately and with lots of blood.
Then, to then get rid of the dead screen session, type
screen -wipe
Screen Configuration
So after you've set up screen and have gotten used to it, you will probably want to configure it a little bit and the way to do this is by creating a ~/.screenrc
To do this just
nano ~/.screenrc
Here's an example of a .screenrc that you may want to use:
hardstatus alwayslastline hardstatus string '%{= kg}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{=b kR}(%{W}%n*%f %t%?(%u)%?%{=b kR})%{= kw}%?%+Lw%? %?%= %{g}][%{Y}%l%{g}]%{=b C}[ %d %M %c ]%{W}' deflogin off startup_message off screen -t irc 1 irssi screen -t Email/slrn 2 mutt -Z screen -t heys -L -l 3
Basically this only really does two things, sets a hardstatus (basically a line that contains some information) and makes it display only on the bottom line and also creates a few new windows.
The new windows created are given names and optionally a number or command (or both).
screen -t irc q irssi
This will create screen window 1, give it the title "irc" and then run irssi when you start screen.
deflogin off
This sets windows logged out by default, which means that you won't have to "mesg n" windows to not receive heys
startup_message off
This turns the startup message thats displayed when you start a new screen session off.
screen -t heys -L -l 3
Will create a logged in window specifically for heys. Handy.
All this makes it very simple to restart all your processes if Redbrick ever crashes.
With the above configuration file it will look something like this:
Reattaching Screen Automatically
So, you've made your screen, configured it, and you happily type screen -dr every time you login to RedBrick. But wouldn't it be nice if whenever you login your screen would reattach itself??? It can be done :D
Simply use your favorite text editor to edit your ~/.zlogin if you're using zsh (if you haven't changed your login shell, this is the one you're using) or ~/.bash_login if you're using bash and put the following in it
screen -dr
That should do the job. It'll try to reattach a screen whenever you login on any redbrick server
- Please note, if this in fact, does not work, you can edit it out by using winSCP and editing the file using it.
Useful links
If you'd like to learn more about the program, a long list of screen commands can be found here: http://www.linuxdevcenter.com/linux/cmd/cmd.csp?path=s/screen
Help edited a screenrc: http://www.debian-administration.org/articles/560
A starting guide to screen: http://magazine.redhat.com/2007/09/27/a-guide-to-gnu-screen/
The Gentoo wiki article on screen (quite in depth) : http://www.gentoo-wiki.info/Screen