linux 后台运行_Linux系统后台运行应用三板斧
Linux系统中我们经常需要将应用或程序放在后台运行,下面从应用角度介绍下后台运行的三板斧supervisor、screen、nohup。
supervisor
为什么要先介绍supervisor呢?
因为supervisor可以对所管理的进程启动、重载、停止,当监测到进程停止后,会自动拉起,实现了进程的“故障自愈”。我们不需要再额外开发守护脚本,导致维护成本的增加。
对于运维这简直是神器,必须放在第一位,但是需要花点配置成本。下面就来看下supervisor如何使用。
1.安装
#centos7yum install supervisorvim /etc/supervisord.conf#最后两行可看到,最终配置文件在 supervisord.d/目录下[include]files = supervisord.d/*.ini#开机自启动systemctl enable supervisord#查看是否开机自启动systemctl is-enabled supervisord
2.配置
- cd /etc/supervisord vim hello.ini #程序名hello [program:hello] ;启动用户 user=root ;程序启动命令 command=java -Dspring.profiles.active=test -jar hello.jar numprocs=1 ;程序启动目录 directory=/opt/java_app ;在supervisord启动时自启动 autostart=true ;程序异常退出后自动重启,可选值:[unexpected,true,false],默认为unexpected autorestart=true ;启动10秒后没有异常退出,就表示进程正常启动了 startsecs=10 ;启动失败自动重试次数 startretries=3
3.管理
#参数可以为all或单个项目hellosupervisorctl reload [all | hello]#更新配置文件,更新配置文件并重启与更新有关的进程supervisorctl update hello#重载配置文件 ,注意reload会导致supervisor重启,所管理的进程会重启supervisorctl reload hello#查看状态supervisorctl status#启动hellosupervisorctl start hello
4.应用场景
supervisor适用于可多次启动并长期运行的后台任务,如java服务、缓存服务及其他自定义服务等。
5.小结
supervisor可以很优雅的解决掉关于进程的启动、重启、重载等方面的操作,而之前我们可能需要花更多的时间去额外处理,如判断进程存在、杀掉进程甚至可能还需要配合脚本写个循环去串联这些操作。
另supervisor还提供了很多第三方的Web-UI统一的 WebUI 集中化管理各个服务器节点的进程,如CeSi、supervisor-easy、Supervisord-monitor等,在此不多做描述。
注意:
- supervisor管理运行于前台的进程,对于运行后台daemon的进程,如tomcat、jetty、nginx等启动后会直接在后台运行,supervisorctl status会报错"BACKOFF Exited too quickly (process log may have details"。
- Centos6.5默认yum安装supervisor版本为2.1版本,此版本运行有问题,不建议使用。
screen
Screen的会话保持特性,即screen打开的会话可以分离或恢复,而不影响会话内部的操作,这样我们将命令行、脚本甚至是数据传输放到screen会话中运行,效果就类似于后台运行。
1.普通模式
[root@test #]$ yum install screen -y#创建会话hello,此时会登入新会话[root@test #]$ screen或[root@test #]$ screen -S hello#分离会话,此时程序不会中断键盘ctrl+a+d 分离会话[detached from 28877.hello]#列出所有会话[root@test #]$ screen -lsThere is a screen on: 28877.hello (Detached) 28876.test (Dead)1 Socket in /var/run/screen/S-root.#恢复会话[root@test #]$ screen -r 28877或[root@test #]$ screen -r hello#清除dead会话[root@test #]$ screen -wipe
2.分离模式
在分离模式下的屏幕会话,作为守护程序启动。
#创建一个后台运行任务[root@test #]$ vim test.sh#!/bin/bashn=0while [ $n -le 50 ]do echo $n n=$(( $n + 1 )) sleep 1done#创建处于分离模式的会话,启动后直接断开会话[root@test #]$ screen -dmS test./test.sh#此时会话已断开,但是任务仍在运行,相当于把任务放在后台运行[root@test #]$ screen -lsThere is a screen on: 30537.test (Detached)#登入会话脚本正在会话中打印输出,执行完毕后会会话终止[root@test #]$ screen -r 30537012
注意:
如果要打印screen日志,需如下设置:
#其中%t 为标题,如screen_test.logecho "logfile /root/screen_%t.log" >> /etc/screenrc#-L 打开日志输出#-t 为标题#执行命令后,会在/root下生成screen_test.logscreen -L -t test -dmS test ./test.sh
3.应用场景
screen适用于单次长时间运行的任务,如备份、ftp传输、下载、数据导入导出、终端超时断开等。
4.小结
screen的会话保持和日志输出,在一定程度上也可以作为后台运行的一种方式。但是需要多用户会话的管理,如test用户创建的会话,root通过screen -ls查看是看不到test用户新建的会话的。因此会话管理,一定需要头脑清醒。
nohup
nohup后台运行最常见的方式,拿来即用,没有什么配置成本,可直接上手。这个大家比较熟悉,就不作过多介绍。
#还是以上面的test.sh脚本为例[root@test #]$ vim test.sh#!/bin/bashn=0while [ $n -le 50 ]do echo $n n=$(( $n + 1 )) sleep 1done#默认情况下nohup运行的程序,输出记录会打印到当前目录下的nohup.out文件中[root@test #]$ nohup bash test.sh &[1] 7415nohup: ignoring input and appending output to ‘nohup.out’[root@test #]$ tail -f nohup.out012[root@test #]$ jobs -l[1]+ 7415 Running nohup bash test.sh 标准输出及错误输出,重定向到自定义日志[root@test #]$ nohup bash test.sh > test.log 2>&1 &[root@test #]$ tail -f test.lognohup: ignoring input01
总结
以上三种后台运行的方式,大家可各取所需,不必矫枉过正,毕竟我们首先要保证的是业务稳定运行。
linux 后台运行_Linux系统后台运行应用三板斧相关推荐
- 后台启动_Linux系统后台运行应用三板斧
Linux系统中我们经常需要将应用或程序放在后台运行,下面从应用角度介绍下后台运行的三板斧supervisor.screen.nohup. supervisor 为什么要先介绍supervisor呢? ...
- 在每个运行中运行多个查询_linux系统中运行级别介绍
CentOS7.3学习笔记总结(五十)- linux系统中运行级别介绍 linux系统中的运行级别是操作系统运行时的功能级别,级别从0到6共7个功能级别,分别是: 0:停机 1:单用户模式 2:多用户 ...
- linux 嵌入式 快照_Linux 系统之Systemd
标签: 子贡问为仁.子曰:"工欲善其事,必先利其器.居是邦也,事其大夫之贤者,友其士之仁者."--孔子(春秋)<论语·卫灵公> [工欲善其事,必先利其器] 掌握一门技术 ...
- linux常用指令_Linux系统常用指令总结
来源 | CSDN 博客 作者 | 不撸代码闲得慌,责编 | Carol 出品 | CSDN云计算(ID:CSDNcloud) 系统的运行级别 0:关机 1:单用户模式(可以找回丢失的密码) 2:多用 ...
- 只在用户登陆时运行_linux 系统的7个运行级别
一.Linux的运行级别(runlevel) 二.运行级别的原理 1.在目录/etc/rc.d/init.d下有许多服务器脚本程序,一般称为服务(service) 2.在/etc/rc.d下有7个名为 ...
- 使用UltraISO(软碟通)制作系统盘 / U盘启动-linux版、 双系统的运行
制作系统盘的方法有很多,我习惯用软碟通-UltraISO制作方法: 软碟通又叫ULTRAISO,是一款可以制作和编辑镜像文件的软件,利用ULTRAISO你可以把硬盘的文件制作成异文件并可以刻录成光盘, ...
- Linux从安装完系统到运行springboot项目(ubuntu)
个人笔记,仅供参考. 1.配置jdk (1)下载官方的jdk,我下载的是jdk1.8.0_161,官网Java Downloads | Oracle 进入官网后下拉到java8下载,将所需的jdk下载 ...
- vnc连接linux使用教程_linux系统下vnc 的配置和使用方法
linux系统下vnc 的配置和使用方法 发布时间:2013-06-01 17:35:28 作者:佚名 我要评论 VNC基本上是由两部分组成:一部分是客户端的应用程序(vncviewer):另 ...
- linux top交叉编译_Linux 系统下ARM Linux交叉编译环境crosstool工具
Linux系统下ARM Linux交叉编译环境的建立目前流行的有三种途径. 一.使用别人编译好的开发工具链本文引用地址:http://www.eepw.com.cn/article/201611/31 ...
最新文章
- puppeteer爬虫的奇妙之旅
- 区块链还可以这么玩?“点亮莫高窟”背后的腾讯云区块链
- (JavaWeb)会话跟踪技术Cookie和Session(重点)
- Mysql 内部结构 / Replication | 层次结构
- string_view理解与用法(二)
- 设置访问权限_【新思考教学者思】李世松:不要对经典设置访问权限
- 远控免杀专题(19)-nps_payload免杀
- Python中查找包含它的列表元素的索引,index报错!!!
- poj3616 基础的动态规划算法 《挑战程序设计竞赛》
- object picker 微信小程序_第三天学习微信小程序开发总结
- sqlserver2008未将对象引用设置到对象的实例_JVM | Java对象的创建、存储和访问详解...
- orb-slam a versatile and accurate monocular slam system
- 深入理解Java中四种创建对象的方式
- 使用脚本下载.ts文件并合并
- SQL Server上月同期 日期的计算
- applet 打印的属性和配置
- Quick BI企业报表制作——个人笔记
- 微信支付商户接入(一)
- 广东2022年养老金计发基数为8682元,人们都能领这样多养老金吗
- libusb介绍及简单使用
热门文章
- function declaration isn't a prototype解决办法
- 软件接口测试一个项目的实战,全网最全postman接口测试教程和接口项目实战~从入门到精通!!!...
- 漫谈广告竞价模式(六)
- Go:创建新进程(os.StartProcess源码解读)
- Iptables(2) - iptables命令的基本用法
- 自动化测试学习之路--HTML常见元素、属性的简单学习
- 【二十一】插件开发——用于验证码识别的 JMeter 插件(上)
- cut out数据增强_被多种离散化场景困扰?8种python技巧!让数据处理更简单
- python打印文件到字符串_请问Python打印字符串到文本文件
- .net前台ajax,asp.net利用Ajax和Jquery在前台向后台传参数并返回值