linux技巧之screen

735 阅读2分钟

平时在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列出当前所有屏幕

指令和快捷键

指的是在某一个屏幕中的指令

  1. control + a同时按下,松开再按d,可退出当前屏幕(不会关闭屏幕),返回到终端
  2. control + a同时按下,松开再按[,此时可通过上下键在屏幕上进行上下查看,默认情况下通过鼠标上下滚动并不能滚动屏幕
  3. 在屏幕中输入exit将退出当前屏幕,并且会关闭该屏幕

示例

// 查看当前有哪些屏幕
screen -ls

// 创建并进入该新屏幕
screen -R test

// 进入一个已经存在的屏幕
screen -r test

总结

我自己经常在服务器上用screen启动一些死循环脚本,或者在多个屏幕之间切换进行不同的操作,省去开多个终端窗口,也想把这个软件分享出来,大家学习后作为一个小技巧,有的时候说不定就能派上用场