远程多窗口和Screen用法

2023-12-20 23:44
文章标签 用法 远程 screen 多窗口

本文主要是介绍远程多窗口和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屏幕信息

这篇关于远程多窗口和Screen用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/517955

相关文章

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

JavaScript Array.from及其相关用法详解(示例演示)

《JavaScriptArray.from及其相关用法详解(示例演示)》Array.from方法是ES6引入的一个静态方法,用于从类数组对象或可迭代对象创建一个新的数组实例,本文将详细介绍Array... 目录一、Array.from 方法概述1. 方法介绍2. 示例演示二、结合实际场景的使用1. 初始化二

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

关于@RequestParam的主要用法详解

《关于@RequestParam的主要用法详解》:本文主要介绍关于@RequestParam的主要用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 基本用法2. 默认值3. 可选参数4. 绑定到对象5. 绑定到集合或数组6. 绑定到 Map7. 处理复杂类

SQL中的CASE WHEN用法小结

《SQL中的CASEWHEN用法小结》文章详细介绍了SQL中的CASEWHEN函数及其用法,包括简单CASEWHEN和CASEWHEN条件表达式两种形式,并通过多个实际场景展示了如何使用CASEWH... 目录一、简单CASE WHEN函数:二、CASE WHEN条件表达式函数三、常用场景场景1:不同状态展

Linux find 命令完全指南及核心用法

《Linuxfind命令完全指南及核心用法》find是Linux系统最强大的文件搜索工具,支持嵌套遍历、条件筛选、执行动作,下面给大家介绍Linuxfind命令完全指南,感兴趣的朋友一起看看吧... 目录一、基础搜索模式1. 按文件名搜索(精确/模糊匹配)2. 排除指定目录/文件二、根据文件类型筛选三、时间

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

kotlin中的行为组件及高级用法

《kotlin中的行为组件及高级用法》Jetpack中的四大行为组件:WorkManager、DataBinding、Coroutines和Lifecycle,分别解决了后台任务调度、数据驱动UI、异... 目录WorkManager工作原理最佳实践Data Binding工作原理进阶技巧Coroutine

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景