screen命令简要说明

news2024/11/18 10:41:14

screen命令简要说明

screen命令有什么用

screen命令虚拟了一个终端(session),可在终端内运行命令,多次运行screen命令可以虚拟多个不同的终端;
每个session可以开启多个窗口,每个窗口有自己的shell,可以在不同的窗口中同时运行多个命令,每个命令都相当于在前台运行,可以与用户交互;

为什么要用screen命令

  1. 防止终端关闭时产生的SIGHUP信号导致程序退出;一般终端关闭时,会对从该终端启动的进程发送SIGHUP信号,如果程序没有特殊处理,就会导致进程终止,使用screen来启动进程,screen本身已经对SIGHUP信号做了处理,不会导致进程退出,仅是screen detach了,以后还可以重新attach到screen进程;当然,如果仅仅是应付SIGHUP信号,也可以使用nohup命令,但nohup命令有两个弊端:一是nohup.out文件的无限增长可能导致长时间后磁盘空间用尽;二是使用nohup后无法与进程进行终端交互,这通常也是使用screen的最主要的原因。
  2. 使用screen可以在终端退出后,为进程保留一个虚拟终端,从而再次连接到终端,attach到screen后,还可以继续与进程进行交互操作。
  3. 对于只能有一个终端连接的情况(例如串口),可以方便的开启多个窗口,同时运行多个交互命令

启动screen

screen [ -options ] [ cmd [ args ] ]

启动screen,screen会启动一个进程SCREEN,这个进程才是真正用于模拟终端的程序,称之为一个会话(session),当前执行的screen命令则附着到session,进行终端交互。
session命令默认开启一个窗口,在窗口中执行命令,如果不指定命令cmd,session进程会启动一个shell进程,用户与shell进程进行交互,否则直接执行cmd命令,shell或者cmd命令结束,窗口也就结束了,所有窗口都结束了,session也就结束了,SCREEN进程自动退出。
开始只有一个窗口,每个session都可以开启多个窗口(参考下文快捷键部分),执行不同的命令,所有窗口的命令都结束,所有窗口都关闭后,session才会结束。
使用-d -m选项可以启动session,但不attach上去,这个方式在系统启动脚本中可以确保启动脚本不会被命令卡住(相当于在后台执行命令),而后续还可以attach上去查看命令的状态,与命令交互。同样其他脚本需要启动一个以后需要与用户交互的命令时也可以使用此方法。

查看有哪些screen进程

screen -ls
screen -list

两个命令等同,列出当前已经启动的screen进程(session),包括进程名、启动时间和附着状态。
进程名可以用于其他操作session的命令,默认是pid.tty.host格式,如果使用-S sessionname选项在启动时指定了sessionname,则是pid.sessionname格式。
推荐使用sessionname方式,可以更直观的说明session中运行的是什么任务,方便后续查看和交互

附着到现有的screen

screen -r [[pid.]tty[.host]]

注意,这里可以省略pid和host,仅指定tty,在只有一个该tty的session时相当于指定了全名,如果有多个会给出列表,提示用户输入全名。
如果有其他人已经attach到了这个session,可以使用-d -r选项先detach再attach;
使用-d -R,如果有指定的session就attach(必要时先detach),否则就创建一个session。

常用快捷键

screen中的快捷键全部以一个特定的键开始,默认是C-a(CTRL-A),可以通过命令行选项-e xy更改。

detach

如果当前正在进行screen交互,想要detach当前的session,可以在session中使用C-a dC-a C-d快捷键

将窗口内容输出到文件

C-a H 开始/结束将当前窗口内容输出到log文件"screenlog.n"
screen就是一个终端窗口,显示的内容有限,log到文件可以保存更多内容,修改窗口缓存行可使用-h num选项,也可以在命令行用-L直接开启log输出

开启多窗口

执行screen命令的同时,开启了一个窗口,连接到当前的运行的命令;想要再开启一个新窗口时可以在当前窗口中使用快捷键C-a cC-a C-c,新窗口中会运行一个新的shell进程。注意:新窗口与原窗口属于同一个session,对应同一个SCREEN进程;同一个session的窗口之间可以切换,复制内容等,不同session的窗口无法交互

在窗口间切换

C-a spaceC-a nC-a C-n切换到下一个窗口;
C-a backspaceC-a C-hC-a pC-a C-p切换到前一个窗口;

销毁当前窗口

C-a kC-a C-k

销毁全部窗口,结束当前session

C-a \

查看attach到当前session的所有终端

screen允许多个进程使用-x选项attach到同一个session,在session中使用C-a *快捷键可以列出attach到当前session的所有终端,包括每个终端的分辨率等,session会以比较小的分辨率运行,在分辨率大的窗口中以虚线标出实际使用的范围
分辨率大的窗口中以虚线标出实际使用的范围

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/125305.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ConcurrentSkipListMap-跳跃表 源码解析

ConcurrentSkipListMap-跳跃表 源码解析 问题 跳跃表长什么样子呢?跳跃表如何查找指定 key 数据呢?跳跃表如何添加指定 key-value 数据呢?跳跃表如何删除指定 key 数据呢? 理论知识 跳表是一个随机化的数据结构,实…

如何将两个笔记本电脑进行相互投屏

文章目录)使用以下定义:实际中:A和B电脑分别安装无线显示器B电脑这么做:A电脑这么做:使用以下定义: 投影的电脑为:A电脑 待投影的电脑为:B电脑 实际中: A电脑为win10系…

《HelloGitHub》第 81 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣!简介HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。https://github.com/521xueweihan/HelloGitHub这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Pyth…

研讨会回顾 | 自动化测试“领导者”SmartBear解析软件质量与测试现状调研

2022年12月6日,龙智与软件测试自动化“领导者”SmartBear联合举办了主题为“ 如何通过自动化测试实现降本、增效与提质”的在线研讨会。 会上,SmartBear亚太渠道经理何平康深入解读了《2022年SmartBear软件质量与测试报告》,并从全球质量测试…

java开源工作流的特点介绍

我们都知道,在业务量激增的情况下,采用工作效率高的低代码开发平台已然成为趋势。目前,有不少专业的服务商正在积极研发低代码开发平台,立志为客户朋友提升办公协作效率而提升研发进度。本文将为大家介绍java开源工作流的特点&…

鹏孚隆冲刺创业板上市:计划募资约7亿元,部分收入来自海外

12月27日,北京易诚互动网络技术股份有限公司(下称“易诚互动”)在深圳证券交易所更新招股书,准备在创业板上市。本次冲刺上市,易诚互动计划募资3.13亿元,将用于用于数字银行应用平台升级项目、大数据智能风…

Spring Cloud(十七):高并发设计

秒杀 秒杀业务初步分析秒杀系统的挑战秒杀系统设计通用秒杀架构 页面访问常见的秒杀系统架构商城的秒杀系统设计和实现秒杀的隔离业务隔离系统隔离数据隔离 实际部署 OpenResty商品获取库存获取 Lua 访问Redis从库 — Linux 进程间通信IPC(管道、匿名管道、共享内…

ArcGIS中ArcMap分割栅格Split Raster工具没有结果的解决

本文介绍在ArcMap软件中,进行分割栅格(Split Raster)工具处理后,得不到结果文件的解决方法。 最近,需要基于一个面要素类,对一个栅格遥感影像加以分割。如下图所示,这个面要素类中有3个部分&…

维视智造斩获2022年度光能杯最具影响力“智造”企业奖

近日,由光伏行业权威媒体和机构——索比光伏网、索比咨询联合主办的2022年度“光能杯”影响力大奖榜单发布,维视智造凭借硬件与AI算法能力、凭借在光伏行业具有创新性的智能制造产品方案与落地的标杆案例,斩获“2022年最具影响力“智造”企业…

算法学习:第一天-------位运算

前言 位运算是在算法设计中的一种非常重要和高效的方法,常见的有与运算,非运算,异或运算。我们常用的比较多的可能就是异或运算,又叫无进位相加。 1.1 取非运算----(~) 取非运算其实就是和我们的无符号数…

LCR测试仪的测试原理及使用方法

LCR表是电子测量仪器中经常使用的电子仪器,作为电子仪器的一员,LCR表经常出现在高校实验室和研究所里,但是对于刚接触它的用户来说,可能还不太了解。今天安泰测试就给大家介绍一下LCR表的测试原理和使用方法。 LCR的含义&#xf…

Crack:GrapeCity Documents for Excel 6.0.1

v6 中 GrapeCity Documents for Excel 的新增功能 ocuments for Excel (GcExcel) v6 版本现已上线!该版本引入了新的基于 JavaScript 的数据查看器控件、功能和对 GcExcel .NET和Java API 的模板增强,以及更多与SpreadJS兼容的功能。看看下面的主要亮点。…

第07讲:Redis集群之cluster

一、什么是Cluster? redis的哨兵模式基本已经可以实现高可用,读写分离 ,但是在这种模式下每台redis服务器都存储相同的数据,很浪费内存,所以在redis3.0上加入了cluster模式,实现的redis的分布式存储&#x…

pycharm运行显示未安装包,但其实已经安装

问题描述 在下载了专业版的pycharm后,在pycharm终端运行项目的时候,无论什么包,只要你下载,就是显示已经存在(当然存在了,我虚拟环境之前都下的有) REquirement already statisfied:…

【OpenCV-Python】教程:9-1 级联分类器

OpenCV Python 级联分类器 【目标】 Haar 级联目标检测器工作方式;Haar 级联分类器检测人脸和人眼 【理论】 基于Haar特征的级联分类器的目标检测是Paul Viola和Michael Jones在2001年的论文中提出的一种有效的目标检测方法。这是一种基于机器学习的方法&#x…

Swift 周报 第二十期

前言 本期是 Swift 编辑组自主整理周报的第十一期,每个模块已初步成型。各位读者如果有好的提议,欢迎在文末留言。 欢迎投稿或推荐内容。目前计划每两周周一发布,欢迎志同道合的朋友一起加入周报整理。 在这个来去匆匆风云变幻的季节&…

工厂设备管理难点与解决方案

工厂设备管理中经常会遇到哪些问题? 设备是生产力的重要组成部分,是工厂从事生产经营的重要工具,生产设备无论从企业资产的占有率,还是从管理工作的内容上都占据相当大的比重,管好、用好设备,提高设备管理…

JS 之 对象、继承

目录 JS对象 1.通过new Object()创建 2.工厂模式 3.构造函数模式 4.原型模式 5.组合使用构造函数与原型对象 6.动态原型模式 7. 寄生构造函数模式 8.稳妥构造函数模式 原型对象 原型链 继承 1.原型链继承 2.借用构造函数(经典继承 | 伪造函数&#xff…

CTF之密码学题目-classical coding

CTF系列文章 第一篇 CTF之密码学题目-classical && coding 文章目录CTF系列文章前言一、题目是什么?二、解题步骤1.下载文件,解压2.解码Unicode3.ASCII码解码4.BrainFunk解码5.莫斯码解码6.字频解密总结前言 在CTF比赛中,有关密码学…

Memtiter-benchmark源码解析2--shared_connection

shard_connection.h class shad_connection private members Line 161 行 bufferevent* m_bev;重要的bufferevent_event important methods setup_event shard_connection.cpp bufferevent_setcb 设置了 m_bev 的读事件的函数回调,没有设置写事件的函…