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 # 进入这个会话
暂时断开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会话。 # 注意:这样退出会杀死所有窗口并退出其中运行的所有程序
# 清理掉所有挂掉(被杀)的screen
# 杀掉一个screen会话之后记得清理这个挂掉的会话!(我觉得这个清理操作也可以理解成释放)
screen -wipe
ctrl+A+C # 在当前Screen会话中创建新的窗口
ctrl+A+N # 切换到下一个窗口
ctrl+A+P # 切换到上一个窗口
ctrl+A+D # 断开会话
# 在screen中查看当前处于哪一个screen会话中
echo $STY
# 注:在进入screen会话之前就进入一个虚拟环境,然后你进入screen会话,这个会话就在这个虚拟环境里面
# 卸载screen
sudo apt-get purge screen
5. Screen的缺点及解决
缺点:
- 在其中不能转动鼠标滚轮,否则会出现一些^A 或者^B的东西
- 也不能使用键盘上面的上下左右键,否则也会出现那些东西
- 也不能直接使用ctrl+c/ctrl+v来进行复制粘贴,也会出现那些东西
解决:只能用鼠标右键复制和粘贴
参考文章:
使用过程中问题及解决
使用Screen过程中,可能会遇到一些问题,我遇到了两个问题,已解决,具体请看
希望可以为您遇到的问题提供解决思路