前言概述
因为买了两个服务器,一个两个月的香港服务器一个一年的北京服务器,配置都差不多是1cpu or 2cpu以及2g内存。所以突然可以完成远程跑代码的需求了,就开始研究如何通过终端来进行关掉终端依旧工作的需求
稍微搜索了一下,好像提的人比较多的就只有nohup和screen,而nohup功能有点过于简单,且比较难恢复,所以先由screen入手进行学习。
Screen 基础快捷键
先介绍几个比较基本的功能
screen -S *新屏名字*
screen -ls #查看有几个screen
screen -r *屏名字或者uid* #打开存在的屏幕
-r [session] Reattach to a detached screen process.
screen -x *屏名字或者uid*# 连接在attached状态的屏幕
-x Attach to a not detached screen. (Multi display mode).
#如果断网了就要用-D
-D (-r) Detach and logout remote (and reattach here).
-D -RR Do whatever is needed to get a screen session.
#断网了用-d也行
-d (-r) Detach the elsewhere running screen (and reattach here).
sudo kill *uid* #关闭存在的屏幕 or C-a k
#分屏
C-a S #上下分屏
C-a | #左右分屏
C-TAB #切换分屏
#分屏后要记的,同一屏中分的屏还是属于同一个屏。
#而且退出后再进入也无法回到分屏的界面,
#就只是能满足临时的有多屏查看需求,但是也挺不错了
#下面的screen配置文件有映射键的功能,可以使其更方便的自定义
#在screen内,有C-a当做命令字符,来进行操作
C-a d #屏幕暂存,先回到原屏
C-a n #到下一个屏幕(不包括原屏)
C-a ? #打开帮助
C-a \ #quit屏幕
C-a k #kill当前屏幕
Screen GNU官网说明文档
其实感觉GNU做的软件都挺全面细心的,这个screen甚至都有140多页的说明文档和特定的配置文件和花里胡哨的页面设置。
但是国内的网站上找不到很好的配置文件,所以还是读一下说明文档。在百度上这样设置关键词 : GNU screen 可以打开GNU的官网来查看screen的说明。
官网在这里了:gnu.org
这是screen的官网介绍,算是我目前发现的全网最全了:http://www.gnu.org/software/screen/
网页版说明文档在这里:http://www.gnu.org/software/screen/manual/screen.html
或者有pdf版:http://www.gnu.org/software/screen/manual/screen.pdf
screen配置文件
linux上所有人都用的配置是/etc/screenrc
单个用户自己用的配置是大概在~/中,但在我的电脑上没找到
在pdf版的说明文档的73页的bind key有对其进行配置的说明。
网上有些页面配置太花哨了,没有用而且大多用的是F12345键,我的联想笔记本需要使用Fn才能用,很麻烦,所以干脆不用网上那些配置自己来弄
bind [-c class] key [command [args]]
这就是在配置文件中绑定键的函数
至于command有什么,可以在screen的C-a ?中查看全部
bindkey
这是bindkey如何进行操作
If the ‘-d’ option is given, bindkey modifies the default table,
‘-m’ changes the copy mode table and with neither option the user table is selected.
pdf版本的说明文档给了样例
bindkey -k F1 command
Make the F11 (not F1!) key an alternative screen escape (besides ‘C-a’).
但是在我的电脑连接服务器的操作中,没有成功
有两个可能性
- 没有找对screenrc位置
- 对WSL和服务器的兼容性不太好
先讨论第一个可能性:screenrc的位置问题,确实GNU提出的screenrc所在的位置跟在我电脑上发现的位置不太一样,但是我觉得只要改了一般就肯定应该有改变。
而且有个决定性的因子确定了不是screenrc位置错误,改了C-a作为命令字符后C-a失效,但其他的也无效
所以可能性更大的在于第二个可能
现在讨论第二个可能:Screen和WSL兼容性差
我在WSL的ubuntu端口也安装了Screen,正常安装
运行Screen -S screenTest,结果:
权限不够,于是用sudo运行一下,竟然运行成功了。
然后又在GNU对screen的说明文档中反复的看,结果发现我的认知有些错误的地方。
- 之前输入的都是'ss'而不是ss
- 没看懂meta,command,escape的具体意思
然后我又参考了例子,发现使用F1是可以转义命令字符的
但是把F1换成^s,却依旧失败
于是又试了试^x,发现成功转义
然后又设置了splite和split -v。
最后配置的是
escape ^xx
bind s split
bind i split -v
测试结论
应该是WSL保留了C-s快捷键,就像F11是放大缩小一样
还是兼容性不太好,但是已经差不多满足需求了
Q.E.D.
Comments | 0 条评论