Under Linux, a common problem is that our SSH sessions to remote machines are interrupted due to network or shutting down the client (e.g. laptop with lid closed), especially when running an important command that takes a long time to run, this feeling is especially hard.

Some students have asked, “Doesn’t Tmux smell good? Most of the time, it smells good. I have written a brief introduction: Command Line Tools Recommendation — tmux(screen), which explains what Tmux has over I’m not sure if it’s more powerful now, but before it was at least more.

So I used it for a while, but things are not always perfect, I also encountered problems, that is, when using some IDE’s Terminal, or when using some Terminal tools, Tmux and Terminal shortcuts conflict, resulting in awkward operation, which is not the most unpleasant problem; a more unpleasant problem is to forget which Terminal is not compatible with Tmux, you can’t split the screen, so I don’t use it later. But it’s true, the split screen feature most Terminals can also carry, but it is Tmux comes with a session to keep the split screen this better, but in most cases, a simple screen is also enough, so here is still the introduction of screen.


There is no complicated syntax for screen, check the parameter list to understand the general function, they are.

  1. [root@liqiang.io]# screen -h
  2. Use: screen [-opts] [cmd [args]]
  3. or: screen -r [host.tty]
  4. Options:
  5. -4 Resolve hostnames only to IPv4 addresses.
  6. -6 Resolve hostnames only to IPv6 addresses.
  7. -a Force all capabilities into each window's termcap.
  8. -A -[r|R] Adapt all windows to the new display width & height.
  9. -c file Read configuration file instead of '.screenrc'.
  10. -d (-r) Detach the elsewhere running screen (and reattach here).
  11. -dmS name Start as daemon: Screen session in detached mode.
  12. -D (-r) Detach and logout remote (and reattach here).
  13. -D -RR Do whatever is needed to get a screen session.
  14. -e xy Change command characters.
  15. -f Flow control on, -fn = off, -fa = auto.
  16. -h lines Set the size of the scrollback history buffer.
  17. -i Interrupt output sooner when flow control is on.
  18. -l Login mode on (update /var/run/utmp), -ln = off.
  19. -ls [match] or
  20. -list Do nothing, just list our SockDir [on possible matches].
  21. -L Turn on output logging.
  22. -m ignore $STY variable, do create a new screen session.
  23. -O Choose optimal output rather than exact vt100 emulation.
  24. -p window Preselect the named window if it exists.
  25. -q Quiet startup. Exits with non-zero return code if unsuccessful.
  26. -Q Commands will send the response to the stdout of the querying process.
  27. -r [session] Reattach to a detached screen process.
  28. -R Reattach if possible, otherwise start a new session.
  29. -s shell Shell to execute rather than $SHELL.
  30. -S sockname Name this session <pid>.sockname instead of <pid>.<tty>.<host>.
  31. -t title Set title. (window's name).
  32. -T term Use term as $TERM for windows, rather than "screen".
  33. -U Tell screen to use UTF-8 encoding.
  34. -v Print "Screen version 4.01.00devel (GNU) 2-May-06".
  35. -wipe [match] Do nothing, just clean up SockDir [on possible matches].
  36. -x Attach to a not detached screen. (Multi display mode).
  37. -X Execute <cmd> as a screen command in the specified session.

Common operations

  1. [root@liqiang.io]# screen -S <session-name> -> create a session named <session-name>
  2. [root@liqiang.io]# screen -ls -> View all current sessions
  3. [root@liqiang.io]# screen -r <session-id> -> switch to the session <session-id>
  4. [root@liqiang.io]# screen -d <session-id> -> leave a session (do not close)
  5. [root@liqiang.io]# screen -d -r <session-id> -> leave the current session and switch to the session-id session