linux 运行程序的方法,linux 长期运行程序的 四种方法
完成上一节的初次运行后,你肯定会发现一点:一旦你按下 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 长期运行程序的 四种方法相关推荐
- linux忘记root密码怎么办——重置root密码的四种方法
linux忘记root密码之后,可以通过修改bootloader启动项的参数,进入系统,重新通过passwd指令修改root 密码. 下面介绍了常用的四种方法,在不同的场景可以选择不同的方法进行roo ...
- 笔记本Linux下怎么截图,笔记本电脑如何截图?笔记本截图四种方法介绍
不论是在电脑还是手机中,截图我们经常都会用到,但是很多朋友可能并不知道怎样去截图,下面我就教大家笔记本电脑如何截图的几种方法. 工具/原料 电脑QQ 键盘上的自带按键 电脑系统自带软件 方法一:通过Q ...
- 如何用计算机求最小公倍数的方法,快速求最小公倍数的四种方法(小学的题目额!) 假如用C求呢??...
快速求最小公倍数的四种方法 最近,在教学国标本五年级下册关于求最小公倍数时,从学生反映的作业情况来看,学生还是很容易做错的,为此我总结出了四种如何求最小公倍数的方法. 如果两个数是互质数(即两数的最大 ...
- 计算机启动方法基础,电脑开机的四种方法
方法一:设置定时开机 主板上有实时时钟(Real Time Clock,RTC)负责系统的计时,我们可以通过RTC指定开机的时间,就像闹钟一样.不过,由于这项功能很少被人使用,部分虽然提供了此功能的主 ...
- curl linux 测试接口_Linux测试端口的连通性的四种方法
目录 方法一.telnet telnet为用户提供了在本地计算机上完成远程主机工作的能力,因此可以通过telnet来测试端口的连通性,具体用法格式: telnet ip port 说明: ip:是测试 ...
- 虚拟机和主机文件共享的四种方法
第一种方法:使用虚拟机自带的共享功能 1.在vmware里VM->设置->options选项卡->shared folder 添加共享文件,具体如下图所示: 2.然后到 /m ...
- 戴尔服务器重装系统的方法,Dell服务器安装操作系统四种方法.doc
Dell服务器安装操作系统四种方法.doc Dell服务器安装操作系统四种方法PowerEdge服务器手动安装操作系统.....................(适合有软驱软盘,硬盘有数据要保留的用户 ...
- svg鼠标响应事件的四种方法(其中两种可支持火狐)
svg鼠标响应事件的四种方法 鼠标响应事件的四种方法,以click事件为例. Mouse Events - SMIL <?xml version="1.0" encoding ...
- Vue项目中刷新当前页面的四种方法
Vue项目中刷新当前页面的四种方法 前记 刷新当前页面的四种方法 this.$router.go(0) location.reload() 跳转空白页再跳回原页面 使用provide / inject ...
- Linux——让程序在后台运行(四种方法+使用推荐)
目录 一.第一种方法(加"&"符号) 二.第二种方法(nohup命令) 三.第三种方法(screen命令) 四.第四种方法(systemctl命令) 五.总结 六 ...
最新文章
- python示例异常处理与程序调试_笔记:Python异常处理与程序调试
- python一个月能学成嘛-学过 Python 的人没有告诉你,年入百万有多难
- halcon的算子清点:Chapter 10 3d匹配
- Androidx ViewPager+Fragment 懒加载
- VTK:图像亮度用法实战
- python重定向_Python接口自动化(十)重定向(Location)
- 采访实录:黄碟泛滥的市场调查
- 16进制数组转成10进制 qt_第五课_进制2
- javascript优缺点
- opencv 摄像头基本使用
- 微信小程序中的换行、空格
- 转载python3爬虫(2)下载有固定链接的视频
- 【渝粤教育】电大中专电商运营实操 (2)_1作业 题库
- VUE3 Composition API详解
- 【专业发展】技术领导力
- 飞鱼服务器 微信,飞鱼微信客服系统软件
- 学习与尝试 --> 事件风暴
- USB音频编解码芯片电路方案设计(原理图)|TYPEC音频方案|TYPEC扩展坞方案|USB音频方案
- Julia文件和文件夹相关基础函数01
- 修改Pycharm背景色(黑)
热门文章
- 微信小程序official-account组件的使用及样式设置
- idea中tomcat服务器的配置
- centos安装mysql8.0.13_CentOS 7.4安装MySql 8.0.13及配置
- 4fsk调制matlab_数字调制解调技术的MATLAB与FPGA实现
- mysql安装显示3534_MySQL安装成功之后启动错误 3534、28000和简单使用
- mysql update commit吗_MySQL需要commit么
- 数据库表存放在哪里_一文了解数据库和数据仓库
- 学习机软件测试,IBM P630 POWER4 AIX小型机适合软件测试及学习机
- 手机应用url抓取_Python爬虫入门,快速抓取大规模数据(第六部分)
- numpy.random 模块- 随机数