Screen的安装与使用
文章目录
1. Screen作用
-
Screen是一个非常强大的功能,它可以让你在一个终端窗口中启动多个子窗口,每个子窗口都可以运行不同的程序。这对于需要长时间运行的任务非常有用,比如编译大型项目或者下载大文件。
-
即使你断开了SSH连接,这些任务也会在服务器上继续运行。
当你进入
screen会话时,实际上并没有创建一个新的虚拟环境,而是进入了你当前所处的虚拟环境。screen会话只是一种会话管理工具,它允许你创建多个会话并在它们之间自由切换,但它不会改变你的环境状态。
2. 查看是否已经安装Screen
screen # 方法1:在命令行输入screen,点击回车,如果出现 screen:未找到命令这样的字眼,就是没有安装
which screen # 方法2:输入这句话,点击回车,没有反应,就是没有安装

3. 安装Screen
注意1:在一个虚拟环境中安装了Screen,其他虚拟环境中是不能使用Screen的。
如果想要在其他的虚拟环境中也使用Screen,那么需要在那个虚拟环境中也安装
注意2:在服务器上运行代码,打开一个节点,比如节点1,建立任务,安装screen,能用了
但是以后你换一个节点运行任务的时候,还得重新安装screen!!!!
# Ubuntu
# 如果你想在某一个虚拟环境中安装screen,首先激活这个虚拟环境conda activate 虚拟环境名字,然后运行下面的命令
apt-get install screen
# 如果你想在整个系统级别安装screen,无论哪个虚拟环境处于激活状态,运行下面的命令
sudo apt-get install screen
# CentOS
yum install screen
# 我在Ubuntu环境中安装screen过程
apt-get install screen # 安装命令
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
byobu | screenie | iselect
The following NEW packages will be installed:
screen
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 577 kB of archives.
After this operation, 1022 kB of additional disk space will be used.
Get:1 http://mirrors.aliyun.com/ubuntu focal-security/main amd64 screen amd64 4.8.0-1ubuntu0.1 [577 kB]
Fetched 577 kB in 1s (595 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package screen.
(Reading database ... 81882 files and directories currently installed.)
Preparing to unpack .../screen_4.8.0-1ubuntu0.1_amd64.deb ...
Unpacking screen (4.8.0-1ubuntu0.1) ...
Setting up screen (4.8.0-1ubuntu0.1) ...
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for systemd (245.4-4ubuntu3.17) ...
4. Screen的使用
创建新的Screen会话
screen -S session_name
其中session_name是你想要命名的会话名称。如果你不提供会话名称,Screen将会创建一个匿名的会话
在Screen会话中进行工作
在这个新的Scr进行你的工作,就像在普通的终端中一样。
screen -r session_name # 进入这个会话
# *************可能遇到问题*****************
# 问题描述:
There is no screen to be resumed matching test2. # test2是session_name
# 解决:
screen -d session_name # 强制分离会话
screen -r session_name # 重新附加
暂时断开screen
Ctrl+A+D # 或者
screen -d # 或者
screen -d <session_name>
当你需要暂时离开时,你可以按住Ctrl键,然后依次按a和d键来断开会话。这样,即使你关闭了SSH连接,会话中的程序也会继续运行
恢复会话
当你回来时,你可以使用以下命令来恢复之前的Screen会话:
screen -r session_name
其中session_name是你之前创建的会话名称。如果你忘记了会话名称,你可以使用screen -ls命令来列出所有的Screen会话
关闭会话
exit # 或者
ctrl+A+D
如果你想要完全结束Screen会话,你可以使用exit命令或者按住Ctrl键,然后依次按A和D键来关闭会话
# 一些常用的命令
# 列出所有的screen会话
screen -ls
screen -list
# 结果是这样的:
# screen -ls
#There are screens on:
# 5524.pts-14.6912f440a175 (2024年04月08日 21时28分40秒) (Attached)
# 5508.pts-12.6912f440a175 (2024年04月08日 21时28分27秒) (Attached)
# 通过screen 进程id, kill掉一个screen
kill -9 session_num # 或者
ctrl +A+K # 杀死当前窗口和窗口中运行的程序
ctrl+A 输入quit命令退出Screen会话。 # 注意:这样退出会杀死所有窗口并退出其中运行的所有程序
'''
# 当进程无法正常终止,使用以下命令
# 当你知道进程的终端设备号时,使用 pkill 来强制终止所有与该设备号相关的进程
pkill -9 -t session_num
'''
# 清理掉所有挂掉(被杀)的screen
# 杀掉一个screen会话之后记得清理这个挂掉的会话!(我觉得这个清理操作也可以理解成释放)
screen -wipe
# 杀死当前所有的会话
pkill screen
ctrl+A+C # 在当前Screen会话中创建新的窗口
ctrl+A+N # 切换到下一个窗口
ctrl+A+P # 切换到上一个窗口
ctrl+A+D # 断开会话
# 在screen中查看当前处于哪一个screen会话中
'''一般进入screen之后的会话界面是只有一个#,需要自己使用命令ls来看当前处于什么目录下。
但有时候,进入screen之后的界面是和正常终端中一样的,有#和当前所处目录。
所以使用命令echo $STY进行查看当前所处会话
'''
echo $STY
# 注:在进入screen会话之前就进入一个虚拟环境,然后你进入screen会话,这个会话就在这个虚拟环境里面
# 卸载screen
sudo apt-get purge screen
# *********其他相关命令*************************
# 解释:-d 选项用于将一个附加的 screen 会话分离(detach),使它在后台运行。
# 场景:当你无法附加到一个已经附加的 screen 会话时,可以使用这个命令将会话从当前终端中分离,使其可以重新附加到其他终端。
screen -d -r session_num
# 解释:systemctl 用于控制系统服务。restart 命令会重新启动指定的服务。screen 在这里是假设的服务名,实际服务名可能不同。
# 场景:当 screen 的服务或守护进程出现问题时,重新启动服务可以帮助解决问题。这通常用于系统服务管理的上下文中。
sudo systemctl restart screen
# 解释:rm -rf 用于递归删除文件和目录。/run/screen/S-root 是 screen 会话的存储位置。sudo 是为了获得超级用户权限。
# 场景:当 screen 会话文件出现问题并且无法通过正常方法解决时,可以手动删除存储目录来强制清理。请谨慎使用,因为它会影响所有 screen 会话。
sudo rm -rf /run/screen/S-root
5. Screen的缺点及解决
缺点:
- 1.在其中不能转动鼠标滚轮,否则会出现一些^A 或者^B的东西
- 2.也不能使用键盘上面的上下左右键,否则也会出现那些东西
- 3.也不能直接使用ctrl+c/ctrl+v来进行复制粘贴,也会出现那些东西
解决缺点1:
-
方法1:
通过 Ctrl + A 然后按 [ 或者esc进入复制模式,使用方向键或者滚动查看历史内容。在 tmux 中,使用 Ctrl + B 然后 [ 进入复制模式,同样使用方向键来滚动。
-
方法2:
因为screen默认是屏蔽滚动条的,所以需要设置一下
在screen外运行(正常终端中运行):
echo 'termcapinfo xterm* ti@:te@' >> ~/.screenrc
解决缺点3:只能用鼠标右键复制和粘贴
参考文章:
使用过程中问题及解决
使用Screen过程中,可能会遇到一些问题,我遇到了两个问题,已解决,具体请看
希望可以为您遇到的问题提供解决思路

315

被折叠的 条评论
为什么被折叠?



