Linux服务器相关:screen
KOFXIII
编辑于 2024年03月21日 09:13
收录于文集
共5篇

1 前言

screen是能防止网络异常中断和同时控制多个远程终端窗口的程序

与screen功能相似的软件:tmux

【小知识】对于linux系统,在命令的结尾添加 & 代表在后台执行此命令

【推荐】常用linux命令介绍:https://www.runoob.com/linux/linux-command-manual.html

对于搭建游戏服务器,screen有以下用途:

当ssh终端与服务器断开连接时,服务器正在执行的命令也会被强制中断,screen能保证在断开连接后服务器继续执行命令

同时启用多个游戏服务器,如同windows系统下能同时运行多个软件。比如可以同时启用求生之路服务器和CS2服务器,也可以同时开启多个CS2服务器

2 具体用法

2.1 安装screen

debian / ubuntu系统下安装screen,命令:apt install screen -y

centos系统下安装screen,命令:yum install screen -y

建议切换到 root 用户后再安装screen,以免权限不足

2.2 基础用法

以CS2游戏服务器为例

新建一个会话用来运行CS2服务器,命令:screen -S cs2

“cs2”是会话名称,可按自己喜好来命名。为防止多个会话的名字相同,系统会给会话名称前面添加 pid,示例:241553.cs2

新建一个screen会话后,ssh终端界面会清空,代表当前处于这个会话中,接下来按正常流程启动CS2游戏服务器即可

将CS2服务器切换到后台运行

方法:键盘上先同时按下CtrlA,松开按键后,再按D

注意不要让中文输入法干扰按键;这个组合按键是在ssh终端内使用的,在其他软件界面内使用无效;当然按着Ctrl键不松手,然后先按A再按D也是相同的效果;本质上就是Ctrl+A会打开一个隐藏的看不见的菜单,按D键就是选择离开会话

离开 241553.cs2 会话

查看现有的所有会话,命令:screen -ls

列出所有screen会话

 恢复指定screen会话,命令格式:screen -r [pid / name]

【示例】screen -r cs2screen -r 257285screen -r 257285.cs2

如果只有1个会话,命令简化为:screen -r

关闭指定screen会话

【方式一】命令:screen -S 257285.cs2 -X quit

【方式二】先切换到要关闭的screen会话,然后键盘上先同时按下CtrlA,松开按键后,再按K,ssh终端左下角会询问是否关闭此窗口,输入 再回车即可

方式二

【方式三】先切换到要关闭的screen会话,然后输入命令:exit

查看screen的所有指令,命令:screen -h 

中文版说明参考:https://www.runoob.com/linux/linux-comm-screen.html

同时开启多个CS2游戏服务器

参考上述①②③④项,需要开几个游戏服务器就创建几个screen会话,在每个screen会话里都启动一遍CS2服务器,注意每个游戏服务器所占用的端口号要修改成不同的

此方法的明显缺点是无法对某个CS2服务器进行单独配置,尤其插件方面无法单独配置。其实CS2有专用于多开服务器的插件,比screen的功能更全面

2.3 特殊情况

screen的会话状态分成两种:

Attached:表示当前screen会话正处于活跃状态

Detached:表示当前screen会话正在后台使用,处于分离状态

【正常情况下】用户正在使用的screen会话就处于Attached状态,当用户将会话切换到后台(Ctrl+A再按D)后,此会话转为Detached状态

【异常情况下】例如出现网络问题后,ssh终端异常断开导致screen会话也异常关闭,此会话仍处于Attached状态,这时用户使用 screen -r 命令就无法恢复此会话;或者当前有ssh终端正在使用此screen会话,再有其他ssh终端是无法恢复此screen会话的

异常情况

【解决办法】命令格式:screen -d [pid / name]

【示例】screen -d cs2screen -d 351026screen -d 351026.cs2