激战电竞网

Linux系统后台运行应用三板斧

admin 89

Linux系统中我们经常需要将应用或程序放在后台运行,下面从应用角度介绍下后台运行的三板斧supervisor、screen、nohup。

supervisor

为什么要先介绍supervisor呢?

因为supervisor可以对所管理的进程启动、重载、停止,当监测到进程停止后,会自动拉起,实现了进程的“故障自愈”。我们不需要再额外开发守护脚本,导致维护成本的增加。

对于运维这简直是神器,必须放在第一位,但是需要花点配置成本。下面就来看下supervisor如何使用。

1.安装

最后两行可看到,最终配置文件在/目录下[include]files=/*.ini查看是否开机自启动systemctlis-enabledsupervisord

2.配置

cd/etc/参数可以为all或单个项目hellosupervisorctlreload[all|hello]重载配置文件,注意reload会导致supervisor重启,所管理的进程会重启supervisorctlreloadhello启动hellosupervisorctlstarthello

4.应用场景

supervisor适用于可多次启动并长期运行的后台任务,如java服务、缓存服务及其他自定义服务等。

5.小结

supervisor可以很优雅的解决掉关于进程的启动、重启、重载等方面的操作,而之前我们可能需要花更多的时间去额外处理,如判断进程存在、杀掉进程甚至可能还需要配合脚本写个循环去串联这些操作。

另supervisor还提供了很多第三方的Web-UI统一的WebUI集中化管理各个服务器节点的进程,如CeSi、supervisor-easy、Supervisord-monitor等,在此不多做描述。

注意:

supervisor管理运行于前台的进程,对于运行后台daemon的进程,如tomcat、jetty、nginx等启动后会直接在后台运行,supervisorctlstatus会报错"BACKOFFExitedtooquickly(processlogmayhavedetails"。

默认yum安装supervisor版本为2.1版本,此版本运行有问题,不建议使用。

screen

Screen的会话保持特性,即screen打开的会话可以分离或恢复,而不影响会话内部的操作,这样我们将命令行、脚本甚至是数据传输放到screen会话中运行,效果就类似于后台运行。

1.普通模式

[root@test创建会话hello,此时会登入新会话[root@test]$screen-Shello列出所有会话[root@test恢复会话[root@test]$screen-rhello]$screen-wipe

2.分离模式

在分离模式下的屏幕会话,作为守护程序启动。

]$创建处于分离模式的会话,启动后直接断开会话[root@test此时会话已断开,但是任务仍在运行,相当于把任务放在后台运行[root@test登入会话脚本正在会话中打印输出,执行完毕后会会话终止[root@test其中%t为标题,如screen_"logfile/root/screen_%"/etc/screenrc-t为标题还是以上面的脚本为例[root@test!/bin/bashn=0while[$n-le50]doecho$nn=$(($n+1))sleep1done]$[1]7415nohup:ignoringinputandappingoutputto‘’[root@test]$jobs-l[1]+7415]$[root@test#]$:ignoringinput01
总结

以上三种后台运行的方式,大家可各取所需,不必矫枉过正,毕竟我们首先要保证的是业务稳定运行。