【Linux-GNU】screen

本文详细介绍GNUScreen,一款由GNU计划开发的自由软件,用于管理多个本地或远程命令行会话。文章涵盖其特点,包括多窗口管理和会话共享功能,以及如何使用基本命令进行会话管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录而已,详细原文请看https://www.cnblogs.com/yangliheng/p/6173530.html

1. 简介
GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。

2. 特点
多窗口:
在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,可以查看窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。
会话共享:Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。

3. 满足基本需求依次出入的命令:
在打开你的Shell窗口后:
screen -S Name: 新建一个screen,名字叫Name。接下来会进入screen的世界,虽然看起来和之前的界面没什么区别,然后在这个界面内输入你想要的操作。想要暂时退出这个界面:Ctrl+a d
screen -ls:
列出当前所有的session
screen -r screenNo: 恢复编号为screenNo的会话,进去后可以看输出,做想要的操作
Ctrl+a k: 在screen界面操作,杀死进程
screen -wipe: 清除被杀死的进程(这个进程在screen list的时候会显示为dead)

 

4. 主要命令
screen -r 恢复会话
detach 
在暂时离开的时候,也可以执行分离命令, 在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)
screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session
 

五、注意事项
1. 清除一个screen会话:
screen -X -S PID quit (PID改成进程编号,例如screen -X -S 11943 quit)


当人为地停掉screen里面的程序(比如Ctrl+Z停掉正在训练的模型),这并不会释放程序所占用的能存,需要用
screen C -a k 使screen的状态变成terminated(后来发现这样不行,这样的功能只是相当于 screen -d)
或者(关闭所有的screen,有些危险,来源https://www.cnblogs.com/liaojie970/p/7872588.html
screen -ls|awk 'NR>=2&&NR<=20{print $1}'|awk '{print "screen -S "$1" -X quit"}'|sh

补充资料https://www.ibm.com/developerworks/cn/linux/l-cn-screen/

[moveit_setup_assistant-1] QSocketNotifier: Can only be used with threads started with QThread [moveit_setup_assistant-1] terminate called after throwing an instance of 'ament_index_cpp::PackageNotFoundError' [moveit_setup_assistant-1] what(): package 'diyiban.SLDASM' not found, searching: [/opt/ros/humble] [moveit_setup_assistant-1] Stack trace (most recent call last): [moveit_setup_assistant-1] #31 Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.3", at 0x7e6242172e46, in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) [moveit_setup_assistant-1] #30 Object "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.3", at 0x7e62414b9e39, in QCoreApplication::notifyInternal2(QObject*, QEvent*) [moveit_setup_assistant-1] #29 Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.3", at 0x7e6242174363, in QApplication::notify(QObject*, QEvent*) [moveit_setup_assistant-1] #28 Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.3", at 0x7e624216c712, in QApplicationPrivate::notify_helper(QObject*, QEvent*) [moveit_setup_assistant-1] #27 Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.3", at 0x7e62421af4ed, in QWidget::event(QEvent*) [moveit_setup_assistant-1] #26 Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.3", at 0x7e62422641e6, in QAbstractButton::mouseReleaseEvent(QMouseEvent*) [moveit_setup_assistant-1] #25 Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.3", at 0x7e6242263fc3, in [moveit_setup_assistant-1] #24 Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.3", at 0x7e624226239d, in [moveit_setup_assistant-1] #23 Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.3", at 0x7e6242262115, in QAbstractButton::clicked(bool) [moveit_setup_assistant-1] #22 Object "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.3", at 0x7e62414f17c7, in [moveit_setup_assistant-1] #21 Source "./src/helper_widgets.cpp", line 171, in btnFileDialog [0x7e624
03-11
[moveit_setup_assistant-1] [rviz_rendering:error] rviz::RenderSystem: error creating render window: RenderingAPIException: Invalid parentWindowHandle (wrong server or screen) in GLXWindow::create at ./.obj-aarch64-linux-gnu/ogre_vendor-prefix/src/ogre_vendor/RenderSystems/GLSupport/src/GLX/OgreGLXWindow.cpp (line 246), at ./src/rviz_rendering/render_system.cpp:564 [moveit_setup_assistant-1] [rviz_rendering:error] Unable to create the rendering window after 100 tries, at ./src/rviz_rendering/render_system.cpp:518 [moveit_setup_assistant-1] terminate called after throwing an instance of 'std::runtime_error' [moveit_setup_assistant-1] what(): Unable to create the rendering window after 100 tries [moveit_setup_assistant-1] Stack trace (most recent call last): [moveit_setup_assistant-1] #31 Object "/usr/lib/aarch64-linux-gnu/libglib-2.0.so.0.8000.0", at 0xffff8da018ab, in [moveit_setup_assistant-1] #30 Object "/usr/lib/aarch64-linux-gnu/libQt5WaylandClient.so.5.15.13", at 0xffff79b42307, in [moveit_setup_assistant-1] #29 Object "/usr/lib/aarch64-linux-gnu/libQt5Gui.so.5.15.13", at 0xffff8ff7a67f, in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) [moveit_setup_assistant-1] #28 Object "/usr/lib/aarch64-linux-gnu/libQt5Gui.so.5.15.13", at 0xffff8ffa7597, in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) [moveit_setup_assistant-1] #27 Object "/usr/lib/aarch64-linux-gnu/libQt5Core.so.5.15.13", at 0xffff8fb9c47f, in QCoreApplication::notifyInternal2(QObject*, QEvent*) [moveit_setup_assistant-1] #26 Object "/usr/lib/aarch64-linux-gnu/libQt5Widgets.so.5.15.13", at 0xffff906a2aa7, in QApplicationPrivate::notify_helper(QObject*, QEvent*) [moveit_setup_assistant-1] #25 Object "/usr/lib/aarch64-linux-gnu/libQt5Widgets.so.5.15.13", at 0xffff9070837b, in [moveit_setup_assistant-1] #24 Object "/usr/lib/aarch64-linux-gnu/libQt5Widgets.so.5.15.13", at 0xffff9070550f, in [moveit_setup_assi
07-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值