screen
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
screen [2021/03/16 21:38] – [Multiple windows] hc9 | screen [2024/09/16 07:51] (current) – er” hc9 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Screen ====== | ||
+ | |||
+ | ===== Introduction ===== | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | In this tutorial '' | ||
+ | |||
+ | A Screen command is usually of the form **CTRL-a KEY**, i.e., you'll have to press the **CTRL** key along with “a”, followed by a generic KEY. (Screen' | ||
+ | |||
+ | You'll need to be a [[http:// | ||
+ | |||
+ | If you want a “screencast” tutorial, type: | ||
+ | |||
+ | '' | ||
+ | |||
+ | on a terminal connected to SDF. | ||
+ | |||
+ | Alternatively, | ||
+ | |||
+ | ===== Starting Screen, detaching and reattaching ===== | ||
+ | |||
+ | You can run screen by typing: | ||
+ | |||
+ | '' | ||
+ | |||
+ | When you run it, a window with some copyright and some other info will show up, with “[Press Space or Return to end.]” at the bottom. OK, as it says, you can now press “Space” or “Enter”. You will then see your shell prompt and nothing else. That's fine: you can now run your programs as usual, the difference is that they will run under a Screen session. You can detach it by typing **CTRL-a d**. Screen will keep your session running. Now if you logout, then log back in, and type: | ||
+ | |||
+ | '' | ||
+ | |||
+ | you'll see your terminal as you left it when you detached Screen! | ||
+ | |||
+ | If you lost connection, or simply forgot to detach Screen, and want to resume your session by typing: | ||
+ | |||
+ | '' | ||
+ | |||
+ | The “-d” flag will detach Screen, while “-r” will reattach. There are various types of “detach” and flags. For instance, if you type the previous command and there was no screen session to be resumed, you'll get a “There is no screen to be detached.” message. In this case you'll probably need: | ||
+ | |||
+ | '' | ||
+ | |||
+ | which will first create a new session (or reattach an existing one). | ||
+ | |||
+ | ===== Multiple windows ===== | ||
+ | |||
+ | You can create various windows under your Screen session, each one running their own program. When you are in a Screen session, typing: | ||
+ | |||
+ | '' | ||
+ | |||
+ | will create a new window, leaving the previous window untouched, though not visible. Instead of typing “screen”, | ||
+ | |||
+ | You can create as many windows as you want. You can swith between windows with **CTRL-a n** (next window) and **CTRL-a p** (previous window). It's also possible to select windows by number. Typing **CTRL-a 1** will open window number 1, **CTRL-a 2**, to window 2, and so on. | ||
+ | |||
+ | How do you know what's a window number? Well, you can type **CTRL-a “** (yeah, that's a double quote). In that case a menu with a windows list will open. You can select a number and press enter to go to that screen. An easier way is to have a “hard status line” that shows you each window number. For doing this in a permanent manner, you'll have to create a “.screenrc” (Screen' | ||
+ | |||
+ | <file config .screenrc> | ||
+ | |||
+ | hardstatus alwayslastline | ||
+ | hardstatus string " | ||
+ | |||
+ | </ | ||
+ | |||
+ | (We will see what that crazyness means later.) | ||
+ | |||
+ | For your .screenrc file to be read by Screen, you'll have to start a new session. BTW, a Screen session ends when the last window is closed. | ||
+ | |||
+ | ===== Multiple sessions ===== | ||
+ | |||
+ | It's possible to have various Screen sessions running, each one with their own set of windows open. If you started Screen by just typing “screen”, | ||
+ | |||
+ | '' | ||
+ | |||
+ | it will give you a list of Screen sessions like this: | ||
+ | |||
+ | < | ||
+ | 3340.pts-6.HOST | ||
+ | 4522.pts-8.HOST | ||
+ | 2 Sockets in / | ||
+ | </ | ||
+ | |||
+ | where HOST is the hostname and YOU is your username. | ||
+ | |||
+ | You can reattach a screen session by name. Say for instance that you want to resume the “4522.pts-8.HOST” session. In this case you'll have to type: | ||
+ | |||
+ | '' | ||
+ | |||
+ | Obviously “4522.pts-8.HOST” is not a very userfriendly session name. You can give a meaningful name by starting screen as: | ||
+ | |||
+ | '' | ||
+ | |||
+ | where “mysession” is the name you want to give to your session (e.g., “work”). | ||
+ | |||
+ | ===== Splitting windows ===== | ||
+ | |||
+ | It could be useful to split a window so that you can have two programs running on the viewport. In this case, type **CTRL-a S** and you'll see that the window will be split in two regions, with the one at the bottom blank. You can swith to it with **CTRL-a TAB** (TAB is the tab key) and then select a window by typing its number, or “p” (previous) or “n” (next), e.g., **CTRL-a 2**. You can always swith through regions with **CTRL-a TAB**. | ||
+ | |||
+ | It's possible to split the window in more then two regions, each time by typing **CTRL-a S** | ||
+ | |||
+ | If you want to split a window vertically, you'll have to either use a // | ||
+ | |||
+ | ===== Sharing screen sessions ===== | ||
+ | |||
+ | The scenario is... | ||
+ | |||
+ | HOSTUSER and SOMEUSER are both MetaARPA members logged into sverige. | ||
+ | |||
+ | HOSTUSER wants to give SOMEUSER read only access to screen session of HOSTUSER. | ||
+ | |||
+ | HOSTUSER starts a screen session as normal. | ||
+ | |||
+ | Only three commands are needed for basic read only access to the current active window. | ||
+ | |||
+ | HOSTUSER types the following commands beginning with **CTRL-a** : each time ( //control and ' | ||
+ | |||
+ | **CTRL-a: | ||
+ | |||
+ | **CTRL-a: | ||
+ | |||
+ | **CTRL-a: | ||
+ | |||
+ | SOMEUSER should exit screen first, then in the shell, type: | ||
+ | |||
+ | '' | ||
+ | |||
+ | SOMEUSER now has read only access to the active window in HOSTUSER' | ||
+ | |||
+ | HOSTUSER can verify SOMEUSER is attached by typing: | ||
+ | |||
+ | **CTRL-a*** | ||
+ | |||
+ | HOSTUSER can disconnect SOMEUSER by typing: | ||
+ | |||
+ | **CTRL-a: | ||
+ | |||
+ | HOSTUSER can verify SOMEUSER is no longer attached by typing: | ||
+ | |||
+ | **CTRL-a*** | ||
+ | |||
+ | HOSTUSER can allow SOMEUSER access to additional commands. | ||
+ | |||
+ | The following commands allow SOMEUSER to cycle backwards and forward through the windows and detach. | ||
+ | |||
+ | HOSTUSER types: | ||
+ | |||
+ | **CTRL-a: | ||
+ | |||
+ | **CTRL-a: | ||
+ | |||
+ | **CTRL-a: | ||
+ | |||
+ | //**Some notes:**// | ||
+ | |||
+ | * Screen version that was used “Screen version 4.00.03 (FAU) 23-Oct-06” | ||
+ | |||
+ | * At the time of writing ( Tue Apr 17 23:01:50 IST 2012 ) all attempts at achieving the above read only functionality by editing .screenrc failed, usually resulting in SOMEUSER having FULL access to HOSTUSER' | ||
+ | |||
+ | * HOSTUSER might notice that screen resizes to fit the smaller of the two terminals. | ||
+ | |||
+ | * After SOMEUSER is detachs HOSTUSER might try **CTRL-aF** to resize the screen windows to fit the terminal. | ||
+ | |||
+ | * For convenience and to reduce typing in screen HOSTUSER might want to have “multiuser on” and “password none” in .screenrc. HOSTUSER' | ||
+ | |||
+ | * HOSTUSER will hear/see lots of bells if SOMEUSER tries to type into the screen session. | ||
+ | |||
+ | * HOSTUSER can check what window is being view by SOMEUSER by looking at the output of **CTRL-a*** | ||
+ | |||
+ | * HOSTUSER might notice SOMEUSER appears to have rwx access in the output of **CTRL-a*** ...this is a bug or an undocumented feature. | ||
+ | |||
+ | * SOMEUSER can remain attached even if HOSTUSER detachs. | ||
+ | |||
+ | ===== .screenrc ===== | ||
+ | |||
+ | As we previously saw, it is possible to customize Screen by writing settings in a file named “.screenrc” in your $HOME directory. We will now some useful Screen settings. | ||
+ | |||
+ | === Avoiding the startup message === | ||
+ | |||
+ | A full screen message with copyright and other stuff is usually displayed at startup. This can get annoying. In order to avoid it, you can put in your .screenrc the following: | ||
+ | |||
+ | <file config .screenrc> | ||
+ | |||
+ | startup_message off | ||
+ | |||
+ | </ | ||
+ | |||
+ | === Keybindings === | ||
+ | |||
+ | It's possible to bind keys so that when you type **CTRL-a KEY** Screen will open a new window launching some program. For instance, if you write in your .screenrc file | ||
+ | |||
+ | <file config .screenrc> | ||
+ | |||
+ | bind m screen -t mail 1 mutt | ||
+ | |||
+ | </ | ||
+ | |||
+ | each time you'll type **CTRL-a m** a new window (named “mail”)with mutt will be created. Be careful: when you bind a key, you'll overwrite Screen' | ||
+ | |||
+ | ===== Cheat sheet ===== | ||
+ | |||
+ | TODO | ||
+ | |||
+ | ===== Resources ===== | ||
+ | |||
+ | * http:// | ||
+ | * http:// | ||
+ | * SDF has some [[http:// | ||
+ | |||
+ | **Notes** | ||
+ | |||
+ | ---- | ||
+ | |||
+ | $Id: screen.html, | ||