会话管理
创建与列出会话
screen # new unnamed session screen -S work # new session named "work" screen -ls # list all sessions screen -list # same as -ls
会话命令
screen -S name创建新命名会话
screen -r name重新连接到已分离的会话
screen -x name连接到已被连接的会话(共享)
screen -d name远程分离会话
screen -d -r name在其他地方分离,在此处重新连接
screen -D -RR强制分离并重新连接(激进模式)
screen -ls列出所有会话及其 PID
screen -wipe清理死亡会话
窗口
窗口基础
Ctrl-a c创建新窗口
Ctrl-a n下一个窗口
Ctrl-a p上一个窗口
Ctrl-a 0-9按编号切换窗口
Ctrl-a "列出所有窗口(交互式)
Ctrl-a '按名称/编号切换窗口
Ctrl-a A重命名当前窗口
Ctrl-a k关闭当前窗口
窗口管理
Ctrl-a w在状态栏显示窗口列表
Ctrl-a Ctrl-a在最近两个窗口间切换
Ctrl-a N显示窗口编号和名称
exit / Ctrl-d关闭窗口(退出 shell)
分屏与区域
分屏命令
Ctrl-a S水平分屏(上下)
Ctrl-a |垂直分屏(左右)
Ctrl-a Tab将焦点移到下一个区域
Ctrl-a X关闭当前区域
Ctrl-a Q关闭除当前区域外的所有区域
区域工作流
Ctrl-a S # split horizontal Ctrl-a Tab # move to new region Ctrl-a c # create window in region Ctrl-a :resize 20 # set region to 20 lines
复制模式
回滚与复制
Ctrl-a [进入复制/回滚模式
Space开始/结束选择(在复制模式中)
Enter复制选择内容并退出复制模式
Ctrl-a ]粘贴已复制的文本
h/j/k/l移动光标(复制模式中的 vi 按键)
Ctrl-u / Ctrl-d向上/向下滚动半页
/ or ?向前/向后搜索
Esc退出复制模式
复制工作流
Ctrl-a [ # enter copy mode Space # mark start (navigate first) Space # mark end + copy (navigate first) Ctrl-a ] # paste into current window
分离与重新连接
分离
Ctrl-a d分离当前会话
Ctrl-a D D分离并注销
Ctrl-a z挂起 screen(类似 Ctrl-Z)
screen -d PID远程按 PID 分离会话
重新连接
screen -r # reattach (if only one session) screen -r work # reattach by name screen -r 12345 # reattach by PID screen -d -r work # steal session from other terminal
持久化工作流
# Start long-running task, detach, reconnect later screen -S build make -j4 all # start build Ctrl-a d # detach, go home screen -r build # reattach later
共享
多用户模式
# Host enables multiuser Ctrl-a :multiuser on Ctrl-a :acladd alice # grant access to user alice # Alice attaches screen -x hostuser/sessionname
访问控制
:multiuser on启用多用户模式
:acladd user授予用户完全访问权限
:aclchg user -w '#'将用户设为只读(所有窗口)
:acldel user移除用户访问权限
screen -x user/sess连接到共享会话
配置
~/.screenrc 要点
startup_message off # skip splash screen defscrollback 10000 # scrollback buffer lines hardstatus alwayslastline hardstatus string '%{gk}%H %{wk}%?%-Lw%?%{bw}%n*%f %t%{wk}%?%+Lw%?' shell -$SHELL # use login shell
常用设置
startup_message off抑制启动消息
defscrollback N设置回滚缓冲区(默认 100)
escape ^Bb将前缀键改为 Ctrl-b
shelltitle '$ |bash'自动设置窗口标题
caption always '%n %t'始终显示含窗口信息的标题栏
autodetach on挂断时自动分离(默认开启)
vbell on使用视觉铃声代替声音铃声
常用模式
开发环境配置
# Auto-create windows in .screenrc screen -t editor 0 vim screen -t server 1 python -m http.server screen -t shell 2 bash select 0 # start on editor window
日志与监控
Ctrl-a H # toggle logging to screenlog.N Ctrl-a M # monitor window for activity Ctrl-a _ # monitor window for silence
快速参考
Ctrl-a ?显示所有键绑定
Ctrl-a :help内置帮助
Ctrl-a :source file加载配置文件
Ctrl-a :screen cmd在新窗口中运行命令
Ctrl-a :quit关闭所有窗口并退出会话