HCRM博客

如何在CentOS中配置和管理服务?

CentOS 服务配置是系统管理员必须掌握的技能之一,它涉及如何有效地管理各种服务,确保系统稳定、安全和高效运行,以下是对 CentOS 服务配置的详细介绍:

服务单元简介

在 CentOS 7 中,服务是通过 systemd 管理的,每个服务都对应一个 .service 文件,这些文件位于 /usr/lib/systemd/system 或 /etc/systemd/system 目录下,通过这些文件,可以定义服务的启动、停止、重启等行为。

如何在CentOS中配置和管理服务?-图1
(图片来源网络,侵权删除)

配置文件详解

1. Unit 区块

Description:简要描述服务的功能。

Documentation:指向服务的文档位置。

AfterBefore:设置服务的启动顺序和依赖关系,After=network.target 表示该服务应在网络服务启动后启动。

WantsRequires:定义服务之间的依赖关系,Wants 表示弱依赖,即使依赖的服务失败,当前服务仍会启动;Requires 表示强依赖,依赖的服务失败则当前服务也会失败。

2. Service 区块

如何在CentOS中配置和管理服务?-图2
(图片来源网络,侵权删除)

Type:定义服务的类型,包括 simple(默认)、forking、oneshot、dbus、notify 和 idle。

simple:服务进程不会 fork。

forking:服务会在启动时 fork,建议设置 PIDFile 以便 systemd 跟踪主进程。

oneshot:服务执行一次任务后退出。

dbus:服务需要在 DBus 上获取指定名称。

notify:服务启动完成后发送通知消息给 systemd。

如何在CentOS中配置和管理服务?-图3
(图片来源网络,侵权删除)

idle:服务在所有操作完成后执行。

RemainAfterExit:设置为 yes,表示服务进程退出后仍视为活动状态。

GuessMainPID:默认为 yes,表示在未设置 PIDFile 时,尝试猜测主进程的 PID。

PIDFile:守护进程的 PID 文件路径,必须是绝对路径。

BusName:DBus 名称,适用于 Type=dbus。

ExecStart:启动服务时要执行的命令。

ExecStartPreExecStartPost:分别在 ExecStart 之前和之后执行的命令。

ExecReloadExecStop:重新加载配置和停止服务时执行的命令。

3. Install 区块

WantedBy:指定服务在哪个目标下启用,multiuser.target 表示多用户模式下启动。

常用命令

1、查看服务状态systemctl status 服务名,如systemctl status httpd

2、启动服务systemctl start 服务名,如systemctl start httpd

3、停止服务systemctl stop 服务名,如systemctl stop httpd

4、重启服务systemctl restart 服务名,如systemctl restart httpd

5、设置开机启动systemctl enable 服务名,如systemctl enable httpd

6、禁用开机启动systemctl disable 服务名,如systemctl disable httpd

7、查看配置文件systemctl cat 服务名.service,如systemctl cat sshd.service

常见问题解答

问题1:如何查看某个服务是否已设置为开机启动?

答:使用systemctl isenabled 服务名 命令可以查看服务是否已设置为开机启动。systemctl isenabled httpd 会返回enableddisabled,表示该服务是否设置为开机启动。

问题2:如何在 CentOS 中创建自定义服务?

答:在 CentOS 中创建自定义服务需要编写一个 .service 文件,并放置在 /etc/systemd/system 目录下,以下是一个简单示例:

[Unit]
Description=My Custom Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/my_custom_script.sh
Restart=onfailure
RestartSec=10s
[Install]
WantedBy=multiuser.target

保存为 my_custom_service.service,然后执行以下命令启用服务:

sudo systemctl daemonreload
sudo systemctl enable my_custom_service
sudo systemctl start my_custom_service

这样,自定义服务就会在开机时自动启动,并在失败时尝试重启。

分享:
扫描分享到社交APP
上一篇
下一篇