linux长期运行进程的四种方法

长期运行

此处以logstash为例。

logstash作为一个需要长期在后台运行的程序,一旦你按下Ctrl+c,停下标准输入输出,logstash进程也就随之停止了,那么怎么处理呢?
办法有很多种,下面介绍四种最常用的办法:

标准的service方式

采用RPM、DEB发行包安装的人,可以采用这种方式。发行包内,都自带有sysV或者systemd风格的启动程序/配置,你只需要直接使用即可。

以RPM为例,/etc/init.d/logstash脚本中,会加载/etc/init.d/functions 库文件,利用其中的daemon 函数,将logstash进程作为后台程序运行。

所以,你只需要把自己写好的配置文件,统一放在/etc/logstash/conf.d目录下(注意目录下所有配置文件都应该是.conf结尾,且不能有其他文本文件存在,因为logstash agent启动的时候是读取全文件夹的),然后运行service logstash start即可。

最基础的nohup方式

这是最简单的方式,也是搞混淆的一个经典问题。

command
command > /dev/null
command > /dev/null 2>&1
command &
command > /dev/null &
command > /dev/null 2>&1 &
command &> /dev/null
nohup command &> /dev/null

想要维持一个长期后天运行的logstash,你需要同时在命令前加 nohup,后面加&。

更优雅的screen方式

screen算是Linux运维一个中高级技巧。通过screen命令创建的环境下运行的终端命令,其父进程不是sshd登录会话,而是screen。这样就可以即避免用户退出进程消失的问题,又随时能重新接管回终端继续操作。

创建独立的screen命令如下:

screen -dmS elkscreen_1

连入创建的elkscreen_1命令如下:

screen -r elkscreen_1

然后你可以看到一个一模一样的终端,运行logstash之后,不要Ctrl+C,而是Ctrl+A+D键,断开环境。想重新接管,依然screen -r elkscreen_1即可。

如果创建了多个screen,查看列表命令如下:

screen -list

最推荐的daemontools方式

不管是nohup还是screen,都不是可以很方便管理的方式,在运维管理一个ELK集群的时候,必须寻找一种尽可能简洁的办法。所以,对于需要长期后台运行的大量程序(注意大量,如果就一个进程,还是学习一下怎么写init脚本吧)推荐大家使用一款daemontools工具。

daemontools是一个软件名称,不过配置略复杂。所以这里我其实是用其名称来指代整个同类产品,包括但不限于Python实现的supervisord,perl实现的ubic,ruby实现的god等。

以supervisord为例,因为这个出来的比较早,可以直接通过EPEL仓库安装。

yum install -y supervisord --enablerepo=epel

在/etc/supervisord.conf配置文件里添加内容,定义你要启动的程序:

[program:ellkpro_1]
environment=LS_HEAP_SIZE =5000m
directory=/usr/share/logstash
command=/usr/share/logstash/bin/logstash -f /etc/logstash/pro1.conf -w 10 -l /var/log/logstash/pro1.log
[program:ellkpro_2]
environment=LS_HEAP_SIZE =5000m
directory=/usr/share/logstash
command=/usr/share/logstash/bin/logstash -f /etc/logstash/pro1.conf -w 10 -l /var/log/logstash/pro2.log

然后启动service supervisord start 即可。

logstash会以supervisord子进程的身份运行,你还可以使用supervisorctl命令,单独控制一系列logstash子进程中某一个进程的启停操作:

supervisorctl stop ellkpro_2

至此,四种常用方式介绍完了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值