CentOS 7 的服务 systemctl 脚本一般存放在 /usr/lib/systemd/ 目录下,该目录下的 user 目录存放的是用户服务,而 system 目录存放的是系统服务。通常情况下,需要配置成开机启动的服务都放到 /usr/lib/systemd/system 目录下。
CentOS 7 的每一个服务以 .service 为后缀,其文件内容一般包含三个部分:[Unit]、[Service] 和 [Install]。
[Unit] 部分主要是服务说明信息。
Description 字段是关于服务的简单描述。After 字段表示该服务需要在哪些服务启动之后再启动,After 和 Before 字段只是涉及启动的顺序,不涉及依赖关系。设置依赖关系时,需要使用 Wants 或 Requires 字段,Wants 字段表示弱依赖关系,Requires 字段表示强依赖关系。
常见的依赖服务有:network-online.target、remote-fs.target、nss-lookup.target。
network-online.target 是一个主动单元,它包含的服务单元可以将执行流程一直阻塞到网络变为真实可用为止。
remote-fs.target 专用于集合远程文件系统挂载点的目标单元。
nss-lookup.target 专用于标记所有主机与网络的名字查找服务都已可用的目标单元。所有依赖于主机与网络的名字查找服务的服务单元,都必须排在该目标单元之后启动,但不应该包含它。
[Service] 部分是核心区域。
Type 字段一般设置为 forking,表示后台运行模式。PIDFile 字段用来设置 PID 文件的存放位置。ExecStart 字段用来设置启动服务时执行的命令。ExecReload 字段用来设置重启服务时执行的命令。ExecStop 字段用来设置停止服务时执行的命令。
进程的重启和停止可以用 kill 命令来实现。其中,TERM 信号让 Linux 试图去杀死进程及其子进程。HUP 信号让 Linux 和缓地执行进程关闭,然后立即重启。PrivateTmp 字段表示是否给服务分配独立的临时空间。
[Install] 部分用来定义如何安装这个配置文件。
WantedBy 字段一般设置为 multi-user.target,表示多用户命令行状态。
以下,以 tomcat 为例,配置系统服务:
内容如下:
[Unit]
Description=Tomcat
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/opt/tomcat/logs/tomcat.pid
ExecStart=/opt/tomcat/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=false
[Install]
WantedBy=multi-user.target
当然,tomcat 的 catalina.sh 文件除了要配置 JAVA_HOME 外,还需要指定 PID 文件:
设置成开机启动:
启动服务:
停止服务:
重启服务:
查看服务状态:
Copyright © 2005-2023 by www.ricensoftwares.com.cn All Rights Reserved.