与 tmux 工具较为类似,sreen 命令同样提供在唯一个的命令行终端上进行多窗口切换和管理的基本功能( 关于 tmux 基本操作可参见笔者的博文 终端复用工具 tmux 基本操作教程 )。

screen 命令以会话( session )为基础为用户提供终端复用功能,会话可以被认为是后台运行的程序,其中可以进行命令执行、新窗口创建等操作,不同的会话可以包含有不同的运行内容。当终端绑定到特定会话上时,则该终端会显示该会话的信息,包括会话中包含的窗口、执行的命令、输出等。当终端从当前会话解除绑定时,当前终端不再显示会话的内容,但会话仍然独立的运行在后台,只有当会话中不再有正在运行的程序时(包括窗口运行的 shell 程序),该会话自动被结束。

screen 安装

screen 的安装方式与之前介绍的 tmux 大致相同,用户可通过 apt 命令直接在个人计算设备上进行安装。与 tmux 不同的是,一般的 Ubuntu 服务器操作系统会自带 screen 程序,故而用户使用服务器时,可直接通过 screen 命令进行终端复用和管理。

apt-get install screen //通过 apt 安装 screen 命令

会话管理

当用户在某一终端运行 sreen 命令时,当前终端即进入某个 screen 创建的会话,新建的会话默认拥有一个运行 shell 的窗口,用户可在该窗口中进行所需操作,并通过 screen 命令进行会话中新窗口的创建、对某个窗口进行面板划分等操作。用户可通过 screen 命令脱离( detach )某个会话,则该会话会在后台运行而不再显示到终端上,当前终端也可通过 screen 命令绑定( attach )到某个会话上,从而显示目标会话中的窗口内容,以供用户操作。当会话中所有的窗口均退出时,则 screen 会话自动结束

用户可通过 screen -S 会话名 创建一个新的会话。在终端中运行上述命令后,当前终端即绑定( attach )新创建的会话,新建会话默认创建一个运行 shell 的窗口,用户即可在其中进行操作。

screen -S session_name     //创建名为 session_name 的会话,不指定 session_name 时则创建匿名会话

可通过 screen -d session_name 使得当前终端脱离( 不再显示 )指定会话,被脱离的会话仍在后台运行,可通过 screen 命令重新绑定.

screen -d session_name //脱离( detach ) 指定的会话,不指定 session_name ,则脱离当前会话

可通过 screen -ls 命令显示所有存在的会话。

screen -ls        //显示当前存在的所有会话

可通过 screen -r session 使得当前终端重新进入某个会话,用户既可以使用每个会话拥有的独立编号指定会话,也可以通过创建会话时的会话名来指定会话。

screen -r session   //使得当前终端重新进入( attach )并显示 session 指定的会话

用户也可以直接通过 screen command 的方式创建一个单窗口会话,command 直接指定新建会话中要运行的命令( 不再默认运行 shell ),命令执行完毕则会话自动退出。

screen python main.py //创建一个运行 main.py 程序的会话,程序运行完成后会话直接退出

对于一个 screen 会话而言,当其中运行的最后一个程序退出时( 如唯一的窗口中的 shell 程序退出 ),会话即自动结束。当会话非自然的无法使用时,通过 screen -ls 查看时,该会话后面会带有"dead"后缀,用户可通过 screen -wipe 直接上述删除这些会话。

screen -wipe //删除非正常( dead )状态的会话

完全退出

当前会话不要了,输入exit命令,就相当于杀死了当前会话进程,不会进行session保存;

为了建立一个窗口,将一个程序放到后端运行,然后退出窗口。我们通常需要将命令放到后台运行,为了以后台进程的方式打开一个程序,只需要添加符号(&)到命令中,如下面所示:

./work &

实例:

1.在服务器登陆的 ssh 终端中新创建一个名为 test 的会话,此时终端会绑定到新创建的终端中并显示其窗口;

2.在该窗口中输入 screen -d 则取消当前终端与会话的绑定,此时又回到之前的登录终端上,终端会显示 detach 信息;

3.通过 screen -ls 命令显示所有存在的会话信息,这里可以看到笔者通过 screen 命令创建的会话的 id 和名字;

4.用户可通过指定会话 id 或会话名的方式通过 screen -r 命令将当前终端重新绑定到指定会话中,终端会重新显示绑定终端的窗口内容;

窗口管理

在绑定了 screen 会话的窗口中,可以进行 screen 窗口的管理。一般而言常用的窗口管理方式有两种,一种直接通过命令行输入 screen 命令,另一种则是通过 screen 会话所支持的 + 操作 的方式。在实际使用过程中,由于 screen 会话提供的窗口一般会用于执行用户所需的命令,故而命令行输入命令的方式并不总是可用的,笔者更常使用适用范围更广的 + 操作 的方式进行窗口管理。下列命令即记录输入 ( screen 的命令前缀为 Ctrl + a )后各个特定输入与命令之间的对应关系,不再记录命令前缀。注意,下列窗口管理的功能也可通过命令行输入命令的方式实现,具体可参见 screen 命令的 man 帮助文档。

窗口创建和切换

c      //创建一个带有 shell 的新窗口并切换至新窗口

k      //关闭当前窗口(以及其中运行的程序)

d      //退出当前会话

i      //显示当前窗口的信息

w      //显示所有窗口的序号

"      //显示所有窗口,以供选择切换

num             //num 为 0-9 之间的数字,切换至 num 对应的窗口

space / n         //切换到下一窗口( next )

backspace / p       //切换到上一窗口( previous )

上述操作中,注意通过 + d 的快捷操作直接退出退出当前会话,其效果与 screen -d 一致。

窗口划分及其管理

一个完整的终端窗口可以被进一步的划分为若干个小部分,每个部分均可独立运行程序。

S        //将当前终端水平划分

|        //将当前终端垂直划分

tab       //终端中划分的不同区域进行顺序切换

Q        //删除除当前所在区域外的所有的区域

X        //删除当前区域

辅助功能

H          //开始/结束对当前窗口输出的记录,记录保存在名为 "screenlog.n" 的文件中

C          //清空当前屏幕(终端)

l          //刷新当前窗口

?          //显示按键与功能的绑定

[ //进入复制模式,其大致操作与 vim 类似,详见官方文档及文后参考资料

[ //将复制模式中复制的内容粘贴

问题

有时候会出现想要进入某个会话如 test,但是使用 screen -r test 时并没有进入已存在的会话,而是新建了会话的情况。通过 screen -ls 命令查看已经存在的会话,发现会话 test 处于 attached 状态,而不是正常的 detached 状态。这是因为存在 screen 不正常的脱离会话。解决方法是使用 -D 参数。

screen -D -r test #进入 test 会话,若无法进入,会先退出前一个远程对话显示(使得会话进入detached状态)

python终端界面分屏输出_linux命令 - screen/终端分屏命令相关推荐

  1. python练习:输入一个时间,输出该时间经过5分30秒后的时间

    题目:输入一个时间(时:分:秒),输出该时间经过5分30秒后的时间 思考: 判断输入的时间格式是否正确. 秒满60,分加1.秒归零.分满60,时加1,分归零.时满24,时归零 详细代码如下 input ...

  2. qwidget多个窗口同步_Linux命令screen—终端切换,工作环境保存,画面同步,防断网...

    Screen基础 Screen是一款由GNU计划开发的用于命令行终端切换的自由软件.用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换.GNU Screen可以看作是窗口管理器的命 ...

  3. linux终端全屏退出_Linux的shell终端常用快捷键大全

    在日常工作中,许多事情要经常与电脑打交道,特别是高频率地使用一些专业性的软件,或者是玩一些键盘流性质的游戏,就应该熟知常用的快捷键,这样玩起来不仅高效,而且略显专业性. 对于某些IT工作者来说,Lin ...

  4. Linux命令screen—终端切换,工作环境保存,画面同步,防断网

    Screen基础 创建一个新的窗口 会话分离与恢复 清除dead 会话 关闭或杀死窗口 screen 高级应用 会话共享 会话锁定与解锁 发送命令到screen会话 屏幕分割 Reference 猜你 ...

  5. python 删除n天前文件_Linux 按时间批量删除文件命令(删除N天前文件)

    Linux常用命令总结 1.系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系 ...

  6. android自助终端界面_滨州市人社自助服务终端上线新功能可查询个人在山东省所有地市的参保信息...

    为方便广大群众查询在省内其它地市的参保信息,通过省市数据共享,自8月21日起,滨州市人社自助服务终端可查询个人在山东省省直及各地市的参保信息,不再需要返回原参保地或通过原参保地服务渠道查询了. 全市各 ...

  7. python 输入学生成绩大于 90为优_对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。以下代码如何限制成绩最高100分。...

    对学生成绩大于60分的,输出"合格".低于60分的,输出"不合格".以下代码如何限制成绩最高100分. System.out.println("输入成 ...

  8. 终端界面 进程 I/O 控制函数

    7.2  通用终端界面控制函数 本条描述用于控制通用终端功能的函数.如果实现支持作业控制,那么,除非对某一命令另有说明,否则这些函数不能由后台进程使用.企图执行这些操作将导致向该进程组发送一个SIGT ...

  9. Macbook Pro 外接显卡实现Tensorflow GPU运行之内屏输出

    Macbook Pro 外接显卡实现Tensorflow GPU运行–内屏输出 MacOS 重装 外接显卡(内屏输出)

最新文章

  1. 如何快速学会别人的代码和思维
  2. html5表单验证没有效果,HTML5表单验证特性(知识点小结)
  3. adb 命令 (01)
  4. BroadcastReceiver 接收系统短信广播
  5. 电脑开机3秒就重启循环_移动办公神器!电脑包秒变支架、鼠标垫,3合1设计超方便!...
  6. 记一次synchronized锁字符串引发的坑兼再谈Java字符串
  7. 安卓学习 之 网络技术(十)
  8. Notepad++技巧
  9. 090609 T 领域建模
  10. Java 初始化块
  11. mysql 命令删库名,MySQL控制台删除数据库命令 drop database 数据库名
  12. 【BZOJ22233524】PATULJCI [主席树]
  13. c++ string字符串翻转
  14. linux网络管理员认证考试,红帽认证系统管理员 (RHCSA) 考试
  15. 《大话设计模式 下》
  16. Kubernetes--k8s---存活探针和就绪探针的最佳实践
  17. Qt小项目之txt文本替换
  18. 如何基于DEM高程数据提取生成等高线的教程
  19. python导入scipy库、sympy库遇到的问题及解决方式
  20. MDI窗体(多文档界面)

热门文章

  1. 月结重头戏--外币评估
  2. 掌中题库刷题神奇微信小程序介绍
  3. 佳沛奇异果猕猴桃扫盲
  4. 世界上最简单的会计书(现金流量表)
  5. w3wp ash oracle,Oracle session简介
  6. java 生成csv文件_Java生成CSV文件实例详解
  7. 渗透测试--medium_socnet
  8. 关于ElementUI 图标字体无法正常显示异常问题处理
  9. VSCode中出现未定义标识符,可以找到引用但是依旧标红
  10. win32 打印机任务管理的 node 模块 (3)详解Win32 Spooler API 获取打印机列表及状态