远程多窗口和Screen用法

Termius      

远程链接服务器终端时,经常遇到需要开多个窗口,另外还可能涉及到正在运行的程序一旦和服务器链接断开,那么程序也就停止执行了。对于单单只需要多个窗口的问题,建议下载一个Termius这样软件,比多次打开终端并产生多个窗口去链接要方便的多。

     这仅仅也只是方便窗口的打开,如果想要断开链接程序继续执行,一般可以使用nohup的操作,如:

nohup python exe.py  >./log.out 2>&1 &

Screen

另外还可以使用screen,这个是直接安装在服务器端的一个软件。使用这个进行命令行操作,就相当于直接在服务端操作,而不是通过你本地的ssh窗口去链接服务器。因此这里执行的程序都相当于有nohup的功能。基本上他的作用如下:

  1. 多窗口操作:通过 Screen 命令,你可以在同一个终端窗口中创建多个窗口,并在这些窗口中同时运行不同的应用程序,而不需要打开多个终端窗口。
  2. 多任务操作:在一个窗口中使用 Screen 命令可以实现多任务操作,比如同时运行多个进程或命令等。
  3. 断线恢复:如果你在使用远程连接时突然断开连接,那么在 Screen 命令下运行的任务仍然可以继续执行,并且在重新连接后可以通过 Screen 命令重新打开之前的会话,恢复之前的工作状态。
  4. 后台运行:Screen 命令可以将一个命令或脚本放到后台运行,而不需要打开一个新的终端窗口或使用 nohup 命令。
  5. 共享会话:使用 Screen 命令可以与其他用户共享一个会话,这对于协同工作或者远程技术支持非常有用。

安装screen非常简单,Ubuntu软件库里有,可以通过apt直接安装:

sudo apt-get intstall screen

按照一下流程进行使用screen:

screen -ls

这个列举已经创建的screen窗口,因为目前还没有使用会打印如下信息:

No Sockets found in /run/screen/S-work.

创建

直接使用命令:screen即可创建一个screen窗口,然后也可以添加-S参数来为这个窗口命名:例如:

screen
#或者
screen -S pc-work

这样就进入创建的名字为pc-work的窗口下,其实这里和你平时看到的窗口没什么两样。在这里面输入命令即可,只是这里命令直接是服务器接受,而不是在通过ssh的一些软件在传给服务器。

这里再次使用screen -ls 打印出的信息就如下:

这里 878160.pc-work  (12/20/23 17:02:33)     (Attached)表示

进程号.screen窗口名字 时间 状态

Attached表示正在链接,无需在此进入。或者说有其他人在这个窗口下。你这边是无法进入的。因此想要进入就必须先关闭,后面会再次提到如何关闭,以及如何进入。不如,一般不会去找别人创建的窗口吧。

之前一直提到窗口,就得提到子窗口。在创建screen这个窗口时,会自动生成一个子窗口,也就是说只能在子窗口键入命令。有的文章可能把这个窗口叫做会话,每个会话下面有多个窗口。我们这里称为screen主窗口,然后有多个子窗口

增加

之前提到screen实现多窗口的作用按上就该显现。我在当前的子窗口下输入了命令,比如说一个执行程序很长的,不断输出log信息的。我们暂且不去打扰,需要开一个新的子窗口:

Ctrl+a+c

先Ctrl+a 然后再+c。接下来的很多命令都是基于Ctrl+a 然后在+一个字母实现。

新建一个子窗口后,当前执行的子窗口就会被覆盖,但是任务继续执行。你可以在当前的窗口下键入你其他的命令。

切换

可以不断的使用Ctrl+a+c这个命令创建子窗口。如果想看看之前窗口的状态可以通过:

切换下一个子窗口,他们之间是循环过程
Ctrl+a+n
切换到上一个窗口
Ctrl+a+p
切换到低num个窗口,n是数字
Ctrl+a+num

创建的多,就很容易乱,不知道当前有多少个子窗口:

显示所有子窗口,以及当前所在子窗口
Ctrl+a+w

在下方会显示:0-$ bash  1$ bash  2*$ bash  这样的信息,标识有三个子窗口,目前所在的是第三个2*$ bash。也就是说bash前有*号的那个。

关闭

关闭子窗口

Ctrl+d  或者exit

如果当前的screen主窗口只剩下最后一个子窗口,那么这个screen主窗口就会退出。退出的意思就是回到了普通命令终端。你使用screen -ls会发现这个screen主窗口的名字和线程号等就没有了。

暂离
Ctrl+a+d

暂离表示着还存在这个screen主窗口,你可以新开一个主窗口去做别的事情。平时我都是一个相似的任务会放在一个主窗口,然后这些相似的任务在一个主窗口下分别开不同的子窗口。

返回

创建了一个pc2-work的screen主窗口。然后screen -ls 发现有两个screens:

其中一个detached。需要说明的时,想要进入某个screen。他的状态必须是detached。

如果是attached的状态,可以使用

screen -d 进程号

使其状态变成detached。

记录日志

当前screen输出太多的信息,无法看全,可以将该信息输入到生成的文件中

screen -L -S 进程号

会在当前目录下生成一个叫做screenlog.0文件。里面记录着screen屏幕信息

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

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

相关文章

ForkJoinPool和ThreadPoolExecutor区别是什么?

ForkJoinPool和ThreadPoolExecutor的主要区别体现在任务执行的方式和适用的场景上。 任务执行方式:ThreadPoolExecutor是共享队列,所有任务都在一个队列中等待执行。而ForkJoinPool对于每个并行度都有独立的队列,每个任务都会被分配到对应的…

西门子S71200系列PLC通过PROFINET连接多功能电表

西门子S71200连接多功能电表 1、需求描述: 通过西门子S7-1200系列PLC,连接多功能电表,通过Modbus协议读写电表的数据。 2、方案描述: 桥接器的网口连接西门子S7-1200系列PLC的网口,串口连接到电表的485通讯口&#x…

2023美团商家信息

2023美团商家电话、地址、经纬度、评分、均价、执照...

第一节TypeScript 安装

一、TypeScript 安装 前提条件:我们环境中已经配置npm环境。 1、使用npm安装TypeScript 首先查看你本地是否已安装npm。打开cmd -> 输入“npm -v” 回车,查看输出的npm版本 上述输出代码你本地环境已经安装了npm工具,可以使用以下命令来…

【数据结构】并查集的简单实现,合并,查找(C++)

文章目录 前言举例: 一、1.构造函数2.查找元素属于哪个集合FindRoot3.将两个集合归并成一个集合Union4.查找集合数量SetCount 二、源码 前言 需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规…

文件操作学习总结

磁盘上的⽂件是⽂件。 但是在程序设计中,我们⼀般谈的⽂件有两种: 程序⽂件、数据⽂件 (从⽂件功能的⻆度来分类 的)。 程序⽂件 : 程序⽂件包括源 程序⽂件(后缀为.c) , ⽬标⽂件&#xff0…

产品需求分析师的职责内容(合集)

产品需求分析师的职责内容1 职责: 1、根据公司战略规划,负责妇产科相关平台产品的中长期规划; 2、组织需求调研、收集、分析、整理、提炼、用户的需求,分析形成可行性研究报告; 3、深入挖掘产品需求,管理用户及公司内部业务需求&a…

配置OSPF与BFD联动示例

1、OSPF与BFD联动 双向转发检测BFD(Bidirectional Forwarding Detection)是一种用于检测转发引擎之间通信故障的检测机制。 BFD对两个系统间的、同一路径上的同一种数据协议的连通性进行检测,这条路径可以是物理链路或逻辑链路,包…

汇编语言学习(5)

更好的阅读体验 YinKai s Blog。 常量 ​ NASM 提供了几个定义常量的指令,在上面我们使用过的有 EQU 指令,下面我们来重点介绍三个指令: EQU%assign%define EQU 指令 ​ EQU 指令常用于定义常量,其语法如下: CONS…

【Java】【SQL】sql中 DATE_FORMAT函数详解

在实际应用开发中,使用sql语句也属于开发者的一部分,这次来说说DATE_FORMAT函数。 引言:实际上在使用Java开发过程中,有很多业务场景下,都有时间类型的参数参与。前后端进行交互的时候,针对时间类型的格式…

数据结构的基本概念

可以想象,将一大堆杂乱无章的数据交给计算机处理是很不明智的,结果是计算机处理的效率非常低,有时甚至根本无法进行处理。于是人们开始考虑如何更有效地描述、表示、存储数据,这就是数据结构需要解决的问题。 ▶1.数据结构的发展…

GBASE南大通用读取数据库数据

通过GBASE南大通用 ADO.NET 接口读取GBASE南大通用Server 数据需要下面的步骤: 1) 使用 GBASE南大通用Connection 创建数据库连接对象 2) 使用 GBASE南大通用Command 创建命令对象 3) 使用连接对象打开连接 4) 设置命令对象的 CommandText 属性,指明…

1.基本数据类型与变量

1.基本数据类型与变量 1.1 基本数据类型 Java属于强类型语言,强类型语言必须为每一个变量声明一种类型。 Java中基本数据类型也称做简单数据类型,包括以下八种 1、整型 byte 、short 、int 、long 2、浮点型 float 、 double 3、字符型 char 4…

贪吃蛇(三)绘制蛇身

绘制蛇身的逻辑不难,存储上面使用结构体。 第一行和第十九行绘制--其它行,绘制|,分别在头尾处。 (1) 扫描蛇身,如果扫描到则绘制[]。 (2) 扫描蛇身,如果扫描不到则绘制空白。 #include"curses.h"struct Sn…

文件操作入门指南

目录 一、为什么使用文件 二、什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 三、文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 四、文件的顺序读写 ​编辑 🌻深入理解 “流”: 🍂文件的顺序读写函数介绍: …

爬虫实战案例 -- 爬取豆瓣读书网页内容

进入网站检查信息 , 确定请求方式以及相关数据 找到爬取目标位置 开始敲代码 # 链接网站 def url_link(url):res requests.get(url,headers headers)response res.textparse_data(response)# 爬取信息 def parse_data(data):msg <li\sclass"media\sclearfix…

处理器管理

(1) 为什么程序并发执行会产生间断性特征&#xff0c;并失去封闭性和可再现性&#xff1f; 解&#xff1a; 之所以产生间断性特征是因为多个程序在并发执行时&#xff0c;需要为了完成同一项任务而相互合作&#xff0c;并发执行的程序间的这种相互制约导致了“暂停—执行—暂…

Java Web Day03_CSS样式

一、超级链接伪类 <a href”#”>超级链接</>a:link 未点击前 a:hover 鼠标悬停 a:active 鼠标正在点击&#xff08;左键按着不放&#xff09; a:visited 点击后 加载顺序一般我们是按照&#xff1a;link -> visited -> hover -> active 列表样式 list-…

07-微服务架构之问题和解决方案的探讨

文章目录 前言一、服务发现与治理二、分布式数据管理三、分布式事务管理四、跨服务调用管理五、版本控制与发布管理六、运维管理 总结 前言 在上一章中&#xff0c;我们已经详细探讨了微服务设计的基本原则和步骤。现在&#xff0c;我们将开始实际运用微服务架构&#xff0c;然…

在 CentOS 上使用 Docker 运行 RabbitMQ

在 CentOS 上使用 Docker 运行 RabbitMQ 使用Docker来运行RabbitMQ非常方便&#xff0c;以下是一个简单的步骤&#xff0c;以YAML配置文件方式创建和运行RabbitMQ容器。 构建容器 创建Docker Compose文件 创建一个docker-compose.yml文件&#xff0c;内容如下&#xff1a; …