很多时候可能会遇到网络掉线或者长时间的编译,例如使用海外服务器的时候有时候网络波动,SSH客户端会掉线或者工作丢失,导致正在编辑的数据或者正在编译一半的软件突然中断,这个时候我们就可以使用一个Linux的神器 - screen,可以帮助我们在运行数据的时候不被掉线或者网络波动所影响。
安装screen
# Centos安装
yum install screen
# Dabian/Ubuntu
apt install screen
软件官网:http://www.gnu.org/software/screen/
$> screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]
-A 将所有的视窗都调整为目前终端机的大小。
-d <作业名称> 将指定的screen作业离线。
-h <行数> 指定视窗的缓冲区行数。
-m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称> 恢复离线的screen作业。
-R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s 指定建立新视窗时,所要执行的shell。
-S <作业名称> 指定screen作业的名称。
-v 显示版本信息。
-x 恢复之前离线的screen作业。
-ls或--list 显示目前所有的screen作业。
-wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。
[collapse]
[collapse-item label="screen常用快捷键"]
Ctrl-a n -> Next,切换到下一个会话
Ctrl-a p -> Previous,切换到前一个会话
Ctrl-a 0..9 -> 切换到第 0..9 个会话
Ctrl-a d -> detach,暂时离开当前session,将目前的会话丢到后台执行。
Ctrl-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。
Ctrl-a w -> 显示所有窗口列表
Ctrl-a k -> kill window,强行关闭当前的 window
Ctrl-a w -> 显示所有窗口列表
Ctrl-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样
Ctrl-b -> Backward,PageUp
Ctrl-f -> Forward,PageDown
H(大写) -> High,将光标移至左上角
L -> Low,将光标移至左下角
0 -> 移到行首
$ -> 行末
w -> forward one word,以字为单位往前移
b -> backward one word,以字为单位往后移
Space -> 第一次按为标记区起点,第二次按为终点
Esc -> 结束 copy mode
Ctrl-a ] -> Paste,把刚刚在 copy mode 选定的内容贴上
[/collapse-item]
[/collapse]
创建运行命令
# 直接运行
screen
# 创建会话名 并进入
screen -S name
重新连接screen会话
# 查询所有screen会话
screen -ls
# 恢复screen会话
screen -r name/pid
# 关闭当前对话进入某个对话
screen -d -r name/pid
会话分离
你可以不中断screen窗口中程序的运行而暂时断开(detach)screen会话,并在随后时间重新连接(attach)该会话,重新控制各窗口中运行的程序。
- 可以在当前的screen窗口 使用快捷键
ctrl a + d
即可实现会话分离,这时窗口会弹出[detached]的提示,并回到主窗口。 - 远程分离,detach某个session,一般适用于某个会话未断开,但界面由于超时已失效的情况。需要分离会话重新连接的情况。
# 远程detach会话
screen -d name/pid
关闭窗口
- 使用kill 关闭会话窗口
# 列出所有会话
screen -ls
# 使用kill结束进程
kill -9 -pid
- 使用
Ctrl a +k
杀死当前窗口和窗口中运行的程序 - 使用
Ctrl a
然后输入quit
命令退出Screen会话。需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序
清理多余窗口
当窗口被杀死后,再用screen -ls
可以看到该窗口后面的(???dead)字样,说明窗口死了,但是仍在占用空间。这时需要清除窗口
#自动清除死去的窗口
screen -wipe
最新评论
我现在基本都不是用QQ了,电脑没装,手...
我成为了范例 😃
看起来很完美。
1ro.cn 还收不,怎么联系不到人
你的feed貌似有点问题。你看下。`v...
哈哈哈,路过。看到了