服务器后台运行,客户端关闭,服务器不停止
1、安装screen
sudo apt-get install screen
2、创建虚拟终端 q
screen -S q
screen -S q1
screen -S q2
3、查看已经创建的虚拟终端
screen -ls
4、进入某个虚拟终端
screen -r q
5、在终端执行所有的操作均可
执行完操作后就不用管这个终端了,即使你的moba客户端关闭,服务器还在运行
ctrl + A +D 就会退出当前的虚拟终端窗口,但是终端任务不会停止。
6、杀掉这个终端
输入 exit, 退出后,在screnn -ls中也查不到了
7、记录日志
方法一:
启动时添加选项-L(Turn on output logging.) 会在当前目录下生成screenlog.0文件
screen -L -dmS test: 启动一个开始就处于断开模式的会话,会话的名称是test。
screen -r test: 连接该会话,在会话中的所有屏幕输出都会记录到screenlog.0文件
方法二:
在虚拟终端界面, 按快捷键ctrl + a ,然后再输入H, 就会在当前路径下生成一个screenlog.0的文件。开始记录
再次同样操作,就会停止记录
方法三:
上面两个方法有个缺点:当创建多个screen会话的时候,每个会话都会记录日志到screenlog.0文件。screenlog.0中的内容就比较混乱了。
解决方法如下,让每个screen会话窗口有单独的日志文件。
在screen配置文件/etc/screenrc最后添加下面一行:
logfile /tmp/screenlog_%t.log
%t是指window窗口的名称,对应screen的-t参数。所以我们启动screen的时候要指定窗口的名称,例如:
screen -L -t window1 -dmS test的意思是启动test会话,test会话的窗口名称为window1。屏幕日志记录在/tmp/screenlog_window1.log。如果启动的时候不加-L参数,在screen session下按ctrl+a H,日志也会记录在/tmp/screenlog_window1.log。
注意,如果写成:logfile ./screenlog_%t.log 则是把日志文件记录到当前目录下。
例子:
screen -L -t name -S name ./name
第一个name是记录日志的名字,第二个name是screen -ls 列表展示出来的名字,第三个name是需要运行的程序。
8、多个屏幕记录
参考https://zhuanlan.zhihu.com/p/107802400