完成上一节的初次运行后,你肯定会发现一点:一旦你按下 Ctrl+C,停下标准输入输出,logstash 进程也就随之停止了。作为一个肯定要长期运行的程序,应该怎么处理呢?

本章节问题对于一个运维来说应该属于基础知识,鉴于 ELK 用户很多其实不是运维,添加这段内容。

办法有很多种,下面介绍四种最常用的办法:

标准的 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 方式

这是最简单的方式,也是 linux 新手们很容易搞混淆的一个经典问题:

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 -y install supervisord --enablerepo=epel

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

[program:elkpro_1]

environment=LS_HEAP_SIZE=5000m

directory=/opt/logstash

command=/opt/logstash/bin/logstash -f /etc/logstash/pro1.conf -w 10 -l /var/log/logstash/pro1.log

[program:elkpro_2]

environment=LS_HEAP_SIZE=5000m

directory=/opt/logstash

command=/opt/logstash/bin/logstash -f /etc/logstash/pro2.conf -w 10 -l /var/log/logstash/pro2.log

然后启动 service supervisord start 即可。

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

supervisorctl stop elkpro_2

linux 运行程序的方法,linux 长期运行程序的 四种方法相关推荐

  1. linux忘记root密码怎么办——重置root密码的四种方法

    linux忘记root密码之后,可以通过修改bootloader启动项的参数,进入系统,重新通过passwd指令修改root 密码. 下面介绍了常用的四种方法,在不同的场景可以选择不同的方法进行roo ...

  2. 笔记本Linux下怎么截图,笔记本电脑如何截图?笔记本截图四种方法介绍

    不论是在电脑还是手机中,截图我们经常都会用到,但是很多朋友可能并不知道怎样去截图,下面我就教大家笔记本电脑如何截图的几种方法. 工具/原料 电脑QQ 键盘上的自带按键 电脑系统自带软件 方法一:通过Q ...

  3. 如何用计算机求最小公倍数的方法,快速求最小公倍数的四种方法(小学的题目额!) 假如用C求呢??...

    快速求最小公倍数的四种方法 最近,在教学国标本五年级下册关于求最小公倍数时,从学生反映的作业情况来看,学生还是很容易做错的,为此我总结出了四种如何求最小公倍数的方法. 如果两个数是互质数(即两数的最大 ...

  4. 计算机启动方法基础,电脑开机的四种方法

    方法一:设置定时开机 主板上有实时时钟(Real Time Clock,RTC)负责系统的计时,我们可以通过RTC指定开机的时间,就像闹钟一样.不过,由于这项功能很少被人使用,部分虽然提供了此功能的主 ...

  5. curl linux 测试接口_Linux测试端口的连通性的四种方法

    目录 方法一.telnet telnet为用户提供了在本地计算机上完成远程主机工作的能力,因此可以通过telnet来测试端口的连通性,具体用法格式: telnet ip port 说明: ip:是测试 ...

  6. 虚拟机和主机文件共享的四种方法

    第一种方法:使用虚拟机自带的共享功能 1.在vmware里VM->设置->options选项卡->shared folder  添加共享文件,具体如下图所示:    2.然后到 /m ...

  7. 戴尔服务器重装系统的方法,Dell服务器安装操作系统四种方法.doc

    Dell服务器安装操作系统四种方法.doc Dell服务器安装操作系统四种方法PowerEdge服务器手动安装操作系统.....................(适合有软驱软盘,硬盘有数据要保留的用户 ...

  8. svg鼠标响应事件的四种方法(其中两种可支持火狐)

    svg鼠标响应事件的四种方法 鼠标响应事件的四种方法,以click事件为例. Mouse Events - SMIL <?xml version="1.0" encoding ...

  9. Vue项目中刷新当前页面的四种方法

    Vue项目中刷新当前页面的四种方法 前记 刷新当前页面的四种方法 this.$router.go(0) location.reload() 跳转空白页再跳回原页面 使用provide / inject ...

  10. Linux——让程序在后台运行(四种方法+使用推荐)

    目录 一.第一种方法(加"&"符号) 二.第二种方法(nohup命令)  三.第三种方法(screen命令)   四.第四种方法(systemctl命令)   五.总结 六 ...

最新文章

  1. python示例异常处理与程序调试_笔记:Python异常处理与程序调试
  2. python一个月能学成嘛-学过 Python 的人没有告诉你,年入百万有多难
  3. halcon的算子清点:Chapter 10 3d匹配
  4. Androidx ViewPager+Fragment 懒加载
  5. VTK:图像亮度用法实战
  6. python重定向_Python接口自动化(十)重定向(Location)
  7. 采访实录:黄碟泛滥的市场调查
  8. 16进制数组转成10进制 qt_第五课_进制2
  9. javascript优缺点
  10. opencv 摄像头基本使用
  11. 微信小程序中的换行、空格
  12. 转载python3爬虫(2)下载有固定链接的视频
  13. 【渝粤教育】电大中专电商运营实操 (2)_1作业 题库
  14. VUE3 Composition API详解
  15. 【专业发展】技术领导力
  16. 飞鱼服务器 微信,飞鱼微信客服系统软件
  17. 学习与尝试 --> 事件风暴
  18. USB音频编解码芯片电路方案设计(原理图)|TYPEC音频方案|TYPEC扩展坞方案|USB音频方案
  19. Julia文件和文件夹相关基础函数01
  20. 修改Pycharm背景色(黑)

热门文章

  1. 微信小程序official-account组件的使用及样式设置
  2. idea中tomcat服务器的配置
  3. centos安装mysql8.0.13_CentOS 7.4安装MySql 8.0.13及配置
  4. 4fsk调制matlab_数字调制解调技术的MATLAB与FPGA实现
  5. mysql安装显示3534_MySQL安装成功之后启动错误 3534、28000和简单使用
  6. mysql update commit吗_MySQL需要commit么
  7. 数据库表存放在哪里_一文了解数据库和数据仓库
  8. 学习机软件测试,IBM P630 POWER4 AIX小型机适合软件测试及学习机
  9. 手机应用url抓取_Python爬虫入门,快速抓取大规模数据(第六部分)
  10. numpy.random 模块- 随机数