平时在linux终端上运行程序,如果程序中有while死循环,程序就会一直运行不会结束;或者程序非常耗时,要等很长时间才能运行完。运行这些程序时,终端窗口会被占用
如果按下control + c
会关闭程序,如果关闭终端会关闭程序,如果网络出现故障,与linux服务器的连接断开了,也会关闭程序。这并不是我们想要的,我们希望程序继续运行,同时又可以去做其他事情,或者关闭终端,或者断开服务器的连接
以运行java程序为例:
java 一堆jvm参数... -jar /usr/local/jar/xxx.jar --spring.profiles.active=prod
上面这种命令如果网络断开了,java程序也会自动关闭
大部分时候采用以下方式启动java程序:
nohup java 一堆jvm参数... -jar /usr/local/jar/xxx.jar --spring.profiles.active=prod >> /usr/local/jar/xxx.log &
这种方式执行命令会在后台运行,并且将程序的输出追加到指定的日志文件中,通常大家也都是这么做的
本文介绍一种多窗口的方法,软件名叫screen,这个软件使用起来非常简单
安装
apt install screen
命令参数
平时最常用的是以下几个,其他参数可以通过screen -h
查看
参数 | 说明 |
---|---|
-R | 创建屏幕并进入 |
-r | 进入指定屏幕 |
-ls | 列出当前所有屏幕 |
指令和快捷键
指的是在某一个屏幕中的指令
control + a
同时按下,松开再按d
,可退出当前屏幕(不会关闭屏幕),返回到终端control + a
同时按下,松开再按[
,此时可通过上下键在屏幕上进行上下查看,默认情况下通过鼠标上下滚动并不能滚动屏幕- 在屏幕中输入
exit
将退出当前屏幕,并且会关闭该屏幕
示例
// 查看当前有哪些屏幕
screen -ls
// 创建并进入该新屏幕
screen -R test
// 进入一个已经存在的屏幕
screen -r test
总结
我自己经常在服务器上用screen启动一些死循环脚本,或者在多个屏幕之间切换进行不同的操作,省去开多个终端窗口,也想把这个软件分享出来,大家学习后作为一个小技巧,有的时候说不定就能派上用场