钧言极客站钧言极客

钧言极客

Linux screen后台保持运行任务

很多时候可能会遇到网络掉线或者长时间的编译,例如使用海外服务器的时候有时候网络波动,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)该会话,重新控制各窗口中运行的程序。

  1. 可以在当前的screen窗口 使用快捷键 ctrl a + d 即可实现会话分离,这时窗口会弹出[detached]的提示,并回到主窗口。
  2. 远程分离,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
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Linux screen后台保持运行任务》
文章链接:https://www.jinjun.top/381.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论