CentOS6/7 配置守护进程
CentOS6.x
CentOS6中转用Upstrat代替以前的init.d/rcX.d的线性启动方式。
一、相关命令
通过initctl help可以查看相关命令
[root@localhost ~]# initctl help
Job commands:
start Start job.
stop Stop job.
restart Restart job.
reload Send HUP signal to job.
status Query status of job.
list List known jobs. Event commands:
emit Emit an event. Other commands:
reload-configuration Reload the configuration of the init daemon.
version Request the version of the init daemon.
log-priority Change the minimum priority of log messages from the init daemon
usage Show job usage message if available.
help display list of commands For more information on a command, try `initctl COMMAND --help'.
二、自己配置一个
在/etc/init/文件夹中新建一个testserver.conf配置文件。
通过exec执行发布出来的程序可执行文件。通过设置respawn让程序反复启动。
然后启动
initctl reload-configuration
initctl list
initctl start testserver
通过initctl list即可看程序是不是处于running启动状态。
[root@localhost ~]# initctl list
vmware-tools start/running
rc stop/waiting
tty (/dev/tty3) start/running, process 3024
tty (/dev/tty2) start/running, process 3022
tty (/dev/tty6) start/running, process 3033
tty (/dev/tty5) start/running, process 3028
tty (/dev/tty4) start/running, process 3026
plymouth-shutdown stop/waiting
testserver start/running, process 4157
control-alt-delete stop/waiting
rcS-emergency stop/waiting
readahead-collector stop/waiting
kexec-disable stop/waiting
quit-plymouth stop/waiting
rcS stop/waiting
prefdm start/running, process 3017
init-system-dbus stop/waiting
ck-log-system-restart stop/waiting
readahead stop/waiting
ck-log-system-start stop/waiting
splash-manager stop/waiting
start-ttys stop/waiting
readahead-disable-services stop/waiting
ck-log-system-stop stop/waiting
rcS-sulogin stop/waiting
serial stop/waiting
可以看到其处于启动状态,现在守护进程已经设置成功。
另外,配置文件中可以通过script ... end script执行脚本。举个例子
start on runlevel [2345]
stop on runlevel [!2345]
script
echo “test~~~~~” >>/tmp/test.txt
end script
CentOS7.x
Centos7中可以通过systemd配置守护进程。
一、Unit的含义
systemd可以管理所有系统资源,不同资源统称为 Unit,一共分为12种:
Service unit: 系统服务
Target unit: 多个unit构成一个组
Device unit: 硬件设备
Mount unit: 文件系统的挂载点
Automount unit: 自动挂载点
Path unit: 文件或路径
Scope unit: 不是由Systemd启动的外部进程
Slice unit: 进程组
Snapshot unit: Systemd快照,可以切回某个快照
Socket unit: 进程间通信的socket
Swap unit: swap文件
Timer unit: 定时器
二、Unit管理常用命令(主要针对service)
# 开机自启动
systemctl enable nginx # 关闭自启动
systemctl disable nginx # 服务状态
systemctl status nginx # 服务重启
systemctl restart nginx # 杀死一个服务
systemctl kill nginx # 显示已启动的服务
systemctl list-units --type=service
三、Unit配置文件
每一个Unit都有一个配置文件,用于告诉系统如何启动Unit,systemd默认从 /etc/systemd/system/ 目录读取配置文件,
Unit配置文件目录主要有三个:
/lib/systemd/system
/run/systemd/system
/etc/systemd/system
四、Unit服务配置
每个服务以.service后缀,一般会分为3部分:[Unit],[Service],[Install],具体以nginx服务为例:
[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target [Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop #Restart配置可以在进程被kill掉之后,让systemctl产生新的进程,避免服务挂掉
Restart=on-failure
RestartSec=30 [Install]
WantedBy=multi-user.target
1、[Unit]区块
[Unit]区块通常是配置文件的第一个区块,用来定义Unit的元数据,以及配置与其他Unit的关系。
Description: 简短描述
Documentation: 文档地址
After:依赖,仅当依赖的服务启动之后再启动自定义的服务单元
2、[Service]区块
[Service]区块用来Service的配置,只有service类型的unit才有本区块。
Type: 定义启动时的进程行为。它有以下几种值:
Type=simple :(默认值) systemd认为该服务将立即启动。服务进程不会 fork 。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是 socket 激活型。
Type=forking :systemd认为当该服务进程 fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。
使用此启动类型应同时指定 PIDFile=,以便 systemd 能够跟踪服务的主进程。
Type=oneshot :这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。
Type=notify :与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。
Type=dbus :若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd 认为服务就绪。
Type=idle :systemd 会等待所有任务处理完成后,才开始执行 idle 类型的单元。其他行为与 Type=simple 类似。
其他选项:
ExecStart: 启动服务的命令
ExecStartPre: 启动服务之前执行的命令
ExecStartPost: 启动服务之后执行的命令
ExecReload: 重启服务执行时的命令
ExecStop: 停止服务时执行的命令
ExecStopPost: 停止服务之后执行的命令
RestartSec: 自动重启服务间隔的秒数
Restart: 定义何种情况下会自动重启服务,可能的值包括always(总是重启)、on-success、on-failure、on-abnormal、on-abort、on-watchdog
TimeoutSec: 定义Systemd停止服务之前等待的秒数
Environment: 指定环境变量
PIDFile: pid文件路径
PrivateTmp: true表示给服务分配独立的临时空间
User: 执行命令的用户
Group: 执行命令的组
3、[Install]区块
[Install]区块用来定义如何启动,以及是否开机启动。
WantedBy: 它的值是一个或多个Target,当前Unit激活时(enable)符号链接会放入/etc/systemd/system目录下面以Target名 + .wants后缀构成的子目录中
RequiredBy: 它的值是一个或多个Target,当前Unit激活时(enable)符号链接会放入/etc/systemd/system目录下面以Target名 + .required后缀构成的子目录中
Alias: 当前Unit可用于启动的别名
Also: 当前Unit激活时(enable),会被同时激活的其他Unit
五、Target的概念
Target就是一个Unit组,包含许多相关Unit。启动某个Target的时候,Systemd就会启动里面所有的Unit。
传统init启动模式里面,有RunLevel的概念,跟Target的作用很类似。不同的是,RunLevel是互斥的,不可能多个RunLevel同时启动,但是多个Target可以同时启动。
Target的常用命令:
查看所有target下的unit
systemctl list-unit-files --type=target 查看默认target,即默认的运行级别。对应于旧的`runlevel`命令
systemctl get-default 设置默认的target
systemctl set-default multi-user.target 查看target下的unit
systemctl list-dependencies multi-user.target 切换target,不属于新target的unit都会被停止
systemctl isolate multi-user.target
六、自己配置一个
/lib/systemd/system/目录中定义一个自己的testserver.service文件
[Unit]
Description=testserver [Service]
# 应用程序所在的文件目录
WorkingDirectory=/usr/local/src/testserver/
ExecStart=/usr/local/src/testserver/testserver
Restart=always # 如果服务崩溃,10秒后重新启动服务
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=testserver
User=root # Production:生产环境 Development:开发环境
# Environment=ASPNETCORE_ENVIRONMENT=Development [Install]
WantedBy=multi-user.target # 由此target触发自启动
通过以下命令实现启动
systemctl daemon-reload
// 自动启动
systemctl enable testserver.service
//立即启动
systemctl start testserver.service
//状态查看
systemctl status testserver.service
部分摘自
http://t.zoukankan.com/solohac-p-4154181.html
https://www.cnblogs.com/jkko123/p/12171572.html
CentOS6/7 配置守护进程的更多相关文章
- ASP.NET Core 发布 centos7 配置守护进程
ASP.NET Core应用程序发布linux在shell中运行是正常的.可一但shell关闭网站也就关闭了,所以要配置守护进程, 用的是Supervisor,本文主要记录配置的过程和过程遇到的问题 ...
- .Net Core实战教程(三):使用Supervisor配置守护进程
安装Supervisor yum install python-setuptools easy_install supervisor 配置Supervisor mkdir /etc/superviso ...
- python程序配置守护进程
参考博客 python Supervisor 使用与配置_a35155的博客-CSDN博客 Ubuntu系统下:apt-get install supervisor,通过这种方式安装后,自动设置为开机 ...
- Gradle 1.12翻译——第十九章. Gradle 守护进程
有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com ...
- centos7 守护进程
ASP.NET Core应用程序发布linux在shell中运行是正常的.可一但shell关闭网站也就关闭了,所以要配置守护进程, 用的是Supervisor,本文主要记录配置的过程和过程遇到的问题 ...
- .NET Core 部署到CentOS–2.创建守护进程, 通过Nginx公网访问
继上一篇, 我们确定在内网可以通过 "http://localhost:5000",可以访问到站点后,接下来我们要配置"守护进程","Nginx公网8 ...
- crond守护进程
Linux系统任务计划/etc/crontab cron的主配置文件,可以定义PATHcron格式如下:# .----------------分钟 (0 - 59)# | .------------- ...
- Linux Supervisor 守护进程基本配置
supervisor:C/S架构的进程控制系统,可使用户在类UNIX系统中监控.管理进程.常用于管理与某个用户或项目相关的进程. 组成部分supervisord:服务守护进程supervisorctl ...
- cloudera learning3:Hadoop配置和守护进程logs
Services:Haddoop cluster上可以部署的组件,比如HDFS,YARN,HBase等. Roles:在service配置时,由Cloudera Manager创建.比如NameNod ...
随机推荐
- [WPF]WPF设置单实例启动
WPF设置单实例启动 使用Mutex设置单实例启动 using System; using System.Threading; using System.Windows; namespace Test ...
- flask 可插拔视图
Flask 0.7 版本引入了可插拨视图.可插拨视图基于使用类来代替函数,其灵感来自于 Django 的通用视图.可插拨视图的主要用途是用可定制的.可插拨的视图来替代部分 实现.普通的函数视图 演示代 ...
- 学军中学第三届“图灵杯”趣味网络邀请赛——中级T4.欧拉回路 (图论,哈希)
题面 补题链接 7 5 6 7 1 2 3 3 13 5 30 50 10 30 70 8 题解 存在欧拉回路的条件是:1. 每个点的度数都是偶数.2. 有边的连通块最多一个. 数据范围是允许我们 n ...
- Docker 入门指南
Docker 入门指南 目录 基础概念 安装教程 基本操作 常用安装 构建操作 容器编排 壹.基础概念 什么是Docker? Docker是基于Go开发的应用容器引擎,属于 Linux 容器的一种封装 ...
- shell脚本自动化部署Zabbix4.2(修改脚本替换版本)
#!/bin/bash # 检查操作系统版本,该脚本只能运行在 Centos 7.x 系统上 cat /etc/redhat-release |grep -i centos |grep '7.[[:d ...
- 用trie树解决最大异或对问题(On)
在给定的N个整数A1,A2--ANA1,A2--AN中选出两个进行xor(异或)运算,得到的结果最大是多少? 输入格式 第一行输入一个整数N. 第二行输入N个整数A1A1-ANAN. 输出格式 输出一 ...
- 引擎之旅 Chapter.1 高分辨率时钟
目录 游戏中的时间线 真实时间线 游戏时间线 全局时钟的实现方式 我们如何理解时间.在现实生活中,时间就是一个有方向的直线.从一个无穷远到另一个无穷远.用数学去抽象地思考,它就是一个从无穷小到无穷大的 ...
- Grafana Mimir:支持乱序的指标采集
Grafana Mimir:支持乱序的指标采集 译自:New in Grafana Mimir: Introducing out-of-order sample ingestion 很早之前在使用th ...
- K8s nginx-ingress 如何配置二级目录转发远程静态服务器基于Vue路由history模式打包的应用程序
背景 首先这标题有点绕,我先解释下: 首先我们有静态服务器,上面某个目录有Vue路由history模式打包的应用程序(也就是build后的产物): 但是静态服务器一般不做对外域名用的,我们需要在k8s ...
- 互联网公司员工职级、研发效能度量、OKR与绩效考核
今天要写这篇文章,来自最近有两个点触动了我.第一个触动点是奈飞(netflix)做出了一个巨大动作<"不搞职级.人人平等" 25 年后行不通了?Netflix 破天荒引入细分 ...