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让程序反复启动。

start on runlevel [2345]
stop on runlevel [!2345]
respawn
exec /usr/local/src/testserver/testserver

然后启动

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

原文地址:https://www.cnblogs.com/chenyishi/p/16848621.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


linux下开机自启: 在/etc/init.d目录下新建文件elasticsearch 并敲入shell脚本: 注意, 前两行必须填写,且要注释掉。 第一行为shell前行代码,目的告诉系统使用shell。 第二行分别代表运行级别、启动优先权、关闭优先权,且后面添加开机服务会用到。 shell脚本
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod +x /etc/rc.d/rc.local 2、赋予脚本可执行权限假设/usr/local/script/autostart.sh是你的脚本路径,给予执行权限 chmod +x /usr
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用ls -ll,会显示成字节大小,而ls- lh会以KB、MB等为单位进行显示,这样比较直观一些。 通过命令du -h –max-depth=1 *,可以查看当前目录下各文件、文件夹的大小,这个比较实用。 查询当前目录总大小可以使用d
ASP.NET Core应用程序发布linux在shell中运行是正常的。可一但shell关闭网站也就关闭了,所以要配置守护进程, 用的是Supervisor,本文主要记录配置的过程和过程遇到的问题 安装Supervisor 1 yum install python-setuptools
设置时区(CentOS 7) 先执行命令timedatectl status|grep 'Time zone'查看当前时区,如果不是时区(Asia/Shanghai),则需要先设置为中国时区,否则时区不同会存在时差。 #已经是Asia/Shanghai,则无需设置 [root@xia
vim /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO="static" ONBOOT=yes IPADDR=192.168.8.106 NETMASK=255.255.252.0 GATEWAY=192.168.
一、安装gcc依赖 由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装 [root@localhost local]# yum install -y gcc 二、下载并解压安装包 [root@localhost local
第一步 On CentOS/RHEL 6.*: $ sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm On CentOS/RHEL 7: $
/// <summary> /// 取小写文件名后缀 /// </summary> /// <param name="name">文件名</param> /// <returns>返回小写后缀,不带“.”</ret
which nohup .bash_profile中并source加载 如果没有就安装吧 yum provides */nohup nohup npm run start & nohup ./kibana &
1.1 MySQL安装 1.1.1 下载wget命令 yum -y install wget 1.1.2 在线下载mysql安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 1.1.3 安装My
重启 reboot shutdown -r now init 6 关闭 init 0 shutdown -h now shutdown -h 20:25 #8点25关机查看内存 free CPU利用率 top 日期 date 设置时间 date 033017002015 #月日时间年 日历 cal
1、firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 :
1 下载并安装MySQL官方的 Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 使用上面的命令就直接下载了安装用的Yum Repository,大概
CentOS6.x CentOS6中转用Upstrat代替以前的init.d/rcX.d的线性启动方式。 一、相关命令 通过initctl help可以查看相关命令 [root@localhost ~]# initctl help Job commands: start Start job. sto
1、使用命令:df -lk 找到已满磁盘 2、使用命令:du --max-depth=1 -h 查找大文件,删除
ifconfig:查看网卡信息 网卡配置文件位置: /etc/sysconfig/network-scripts/文件夹 nmtui:配置网卡 netstat -tlunp:查看端口信息 端口信息存储位置: /etc/services文件 route:查看路由信息 wget:下载网路文件,例如 wg
ps -ef:查看所有进程, ps -ef |grap firewalld 查看与firewalld相关的进程 which :查看进程:which firewalld kill 进程id:杀掉进程 kill 640,强制杀:kill -9 640 man:查看帮助,例如 man ps 查看
useradd:添加用户 useradd abc,默认添加一个abc组 vipw:查看系统中用户 groupadd:添加组groupadd ccna vigr:查看系统中的组 gpasswd:将用户abc添加到ccna组 gpasswd -a abc ccna groups abc:查看用户abc属