Linux服务器用后台跑程序(Screen)


最近用实验室的Linux服务器跑程序,需要挂校园vpn才能连接(虽然有校园流量,但是只有3G,而且价格太坑了!!!),然后校园网的vpn经常会在你长时间不操作以后就给你断掉,导致我在服务器上跑的程序,基本上半小时就自动断了!!!查阅资料后,发现可以使用Linux后台跑程序,这样就不用担心你的程序会随着vpn断掉而终止了。


Linux前台进程和后台进程:

  • 和终端无关的进程一定是后台进程,比如很多系统进程,用户一般感觉不到它们的运行,但实际上一直在后台进行服务。
  • 和终端有关的进程,可能是前台进程,也可能是后台进程,当你运行一个程序时,可以设置该进程为前台运行还是后台运行,默认是前台,本文实现的是使用screen设置程序在后台运行。也是有其他方法的。

用到的工具是Screen,如果你不知道自己实验室的服务器有没有安装这个工具,可以输入下面命令查看一下

screen -v

如果没有安装,使用下面的命令安装

yum install screen

首先介绍下screen,它可以用来创建多个session,可以理解为与服务器建立多个连接,然后每个session又可以新建多个窗口,窗口就是我们看到的输命令的黑框shell,在运行程序时都是在这个黑框之中输命令喽,一个session又分为多种状态,你在黑框中输命令时,这个session是Activated状态,当你切换到另一个session时,原来的session就会变成detached状态(但此时原来运行的程序不会断,这就是我们用它的目的),当程序意外终止时,session会变成dead状态(这个我还没遇到过)
在这里插入图片描述
平时我们自己使用后台跑程序时,创建一个session就足够,至于官方为什么可以创建多个session,确实功能强大了,但是我还没理解有什么具体的应用意义。
下面针对日常跑程序介绍常用命令:

screen -S yourname		-> 新建一个叫yourname的session
screen -ls         		-> 列出当前所有的session
screen -r yourname		-> 回到yourname这个session
screen -d yourname 		-> 远程detach某个session
screen -d -r yourname 	-> 结束当前session并回到yourname这个session
exit					->结束当前窗口,当当前session的所有窗口都被关闭,将会结束该session
screen -wipe			->清除状态为dead的session

# 如果你想直接删除session,而不是一步步关闭窗口使用下面命令
screen -X -S yourname quit

一些细节:
如果你直接输入screen,默认会创建一个session+一个窗口,但是这个session没有命名,只有一个id号,不方便我们切换,因此不推荐这样使用。
在每个session下,有以下快捷键命令(C-a c指的是按住Ctrl和a,再按c,其他同):

C-a ? -> 显示所有键绑定信息
C-a c -> 创建一个新的运行shell的窗口并切换到该窗口
C-a n -> Next,切换到下一个 window
C-a p -> Previous,切换到前一个 window
C-a 0…9 -> 切换到第 0…9 个 window
Ctrl+a [Space] -> 由视窗0循序切换到视窗9
C-a C-a -> 在两个最近使用的 window 间切换
C-a x -> 锁住当前的 window,需用用户密码解锁
C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。
C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。
C-a w -> 显示所有窗口列表
C-a t -> time,显示当前时间,和系统的 load
C-a k -> kill window,强行关闭当前的 window
C-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样
C-b Backward,PageUp
C-f Forward,PageDown
H(大写) High,将光标移至左上角
L Low,将光标移至左下角
0 移到行首
$ 行末
w forward one word,以字为单位往前移
b backward one word,以字为单位往后移
Space 第一次按为标记区起点,第二次按为终点
Esc 结束 copy mode
C-a ] -> paste,把刚刚在 copy mode 选定的内容贴上

参考:
[1]:https://man.linuxde.net/screen
[2]:https://www.runoob.com/linux/linux-comm-screen.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值