Linux Screen to boost your remote productivity

Working remotely (via SSH) poses numerous challenges:

  • running programs are killed if the session is terminated or connection is lost
  • you need to open many connections if you want to run more things at the same time
  • you cannot resume the session from different machine

All above problems have a simple solution in Linux, called screen. Screen provides virtual terminals that can be disconnected & resumed later.

  1. Install screen
  2. sudo apt-get install screen
  3. Prepare configuration file
  4. Below you can find example configuration file. This will enable changing the windows with F5/F6, scrolling and it will display some useful information in the bottom of your screen terminal. To enable it, just paste below text to file: ~/.screenrc

    #para tener scroll-back
    termcapinfo xterm|xterms|xs|rxvt ti@:te@
    defscrollback 5048
    ##
    ### detach on hangup
    autodetach on
    ##
    ### don't display the copyright page
    startup_message off
    ##
    ### emulate .logout message
    pow_detach_msg "Screen session of $LOGNAME $:cr:$:nl:ended."
    ##
    #
    # BARRA DE ESTADO v1
    #### alternative caption, gives window list, LOGNAME and current date:
    caption always "%u%{wk}%?%-Lw%?%{bw}%n*%f %t%?(%u)%?%{wk}%?%+Lw %=  %{mk}host:%H Load:%l  %{ck}%M%{wk} %{ck}%d %{gk}%c"
    
    # BARRA DE ESTADO v2
    #hardstatus alwayslastline
    #hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %d/%m %C%a Load: %l"
    #caption always "%3n %t%? @%u%?%? [%h]%?"a
    #
    termcapinfo xterm ti@:te@
    
    defscrollback 1000
    
    # Scroll up
    bindkey -d "^[[5S" eval copy "stuff 5\025"
    bindkey -m "^[[5S" stuff 5\025
    
    # Scroll down
    bindkey -d "^[[5T" eval copy "stuff 5\004"
    bindkey -m "^[[5T" stuff 5\004
    
    # Scroll up more
    bindkey -d "^[[25S" eval copy "stuff \025"
    bindkey -m "^[[25S" stuff \025
    
    # Scroll down more
    bindkey -d "^[[25T" eval copy "stuff \004"
    bindkey -m "^[[25T" stuff \004
    
    
    bindkey -k k5 prev # F5 for previous window
    bindkey -k k6 next # F6 for next window
    
  5. Create new virtual terminal
  6. screen -S sessionName
    # create new window: Ctlr-A and C
    # detach session:    Ctrl-A and D
    
  7. Reattach to previous session
  8. screen -dr sessionName
    # list existing session: screen -dr
    

One thought on “Linux Screen to boost your remote productivity

  1. Pingback: Running Jupyter as public service | BioInfoExpert

Leave a Reply

Your email address will not be published. Required fields are marked *