screen是一个强大的终端多路复用器,它允许用户在一个物理终端上运行和管理多个会话。使用screen可以创建多个虚拟终端会话,可以在网络连接中断后重新连接到这些会话,并保持原有会话不被中断。本文将介绍screen的常用功能。
对于吴昊来说,screen最常用的功能就是在后台中开启一个会话,当有比较耗时的任务需要持续运行时,放在这个会话(后台)中,当网络中断或终端窗口意外关闭时,这个后台的会话依然可以继续运行,总结来讲,只要screen本身会话不终止,会话及会话中的操作会一直存活。常见的场景比如,导入一个很大的数据库时,编译一个比较复杂的包时。
安装screen
在RHEL8及以后的兼容版本中,需要通过添加epel源来安装screen
1 2 |
yum install epel-release yum install screen |
RHEL8以前的兼容版本中,默认命令在updates源中,直接执行安装即可
1 |
yum install screen |
本文不介绍所有的选项,因为很多选项在实际场景中并不是很实用,主要还是以举例方式来讲解。
创建会话
1 |
screen |
默认直接执行screen即可,即使网络中断或被强制断开,在这个会话中运行的所有命令和程序将继续运行。
分离会话
要从当前screen会话分离,使其保持运行状态,先按住Ctrl键,然后分别按字母a,字母d,此时会回到之前的终端页,但所有在screen会话中运行的任务都会继续进行。
列出会话
要查看当前所有的screen会话有哪些,可以执行以下命令
1 2 3 |
screen -ls 或 screen -list |
恢复会话
要重新连接到一个已经分离的screen会话,使用-r选项加上会话的ID或名称
1 |
screen -r [session] |
如果当前只有一个会话,可以直接使用以下命令
1 2 3 |
screen -r 或 screen -x |
创建带名称的会话,比如
1 |
screen -S whsir |
这样在重新连接时不用再通过-ls参数查看会话名称ID了,可以直接使用-r加名称的方式连接
1 |
screen -r whsir |
创建会话并输出日志到指定文件中
1 |
screen -L -Logfile /tmp/whsir.log |
会话共享
当A用户创建了一个新的会话,B用户加入了这个会话,那么此时就是共享会话,两边不管谁执行什么操作,另一个都可以实时看到。
例:A用户执行screen -S whsir,B用户执行screen -r whsir,此时就是共享会话
退出会话
可以在连接会话后直接执行exit或Ctrl+d退出,也可以通过以下命令,这里[session]可以是正在运行的会话ID,也可以是名称
1 |
screen -S [session] -X quit |
暴力退出也可以通过pkill screen
总之screen是一个功能强大的工具,可以显著提升你的终端会话管理能力,特别是在远程工作和长时间运行任务时。通过掌握screen的使用,你可以更高效地管理你的终端会话,并确保你的任务能够持续运行而不受连接中断的影响。
原文链接:linux必会命令之screen,转载请注明来源!