CentOS服务管理核心是systemctl命令,它统一了服务的启动、停止、重启、状态查看和开机自启设置,取代了传统的service和chkconfig命令,提升了效率与标准化程度。通过systemctl start/stop/restart/status可控制服务运行状态,enable/disable用于管理开机自启,mask可屏蔽服务阻止启动,修改服务文件后需执行systemctl daemon-reload刷新配置。排查服务失败时,首先使用systemctl status查看状态,结合journalctl -u <服务名>分析日志,检查配置文件语法、端口占用、权限、SELinux策略及依赖关系。自定义服务需在/etc/systemd/system/下创建.service文件,包含[Unit](描述和依赖)、[Service](运行参数、用户、命令等)和[Install](启用目标)三部分,编写后需重载配置并启用启动服务,实现对脚本或应用的标准化管理。

CentOS上的服务管理,说白了,就是围绕着
systemctl
在CentOS上,服务的启动、停止和设置主要通过
systemctl
启动服务: 要让一个服务跑起来,比如
httpd
systemctl start httpd
这个命令会尝试启动
httpd
停止服务: 当你想让一个正在运行的服务停下来时,比如
nginx
systemctl stop nginx
这会安全地关闭
nginx
重启服务: 如果你修改了服务的配置文件,或者只是想刷新一下服务状态,通常会选择重启。例如,重启
php-fpm
systemctl restart php-fpm
这个操作会先停止服务,然后再启动它。
查看服务状态: 这是排查问题和确认服务运行情况最常用的命令。比如,想知道
mariadb
systemctl status mariadb
它会显示服务是否正在运行、最近的日志输出、进程ID等详细信息。我个人觉得
systemctl status
service
设置开机自启动(启用服务): 很多时候,我们希望服务在系统启动后自动运行,避免每次重启服务器后手动启动。启用
sshd
systemctl enable sshd
这个命令会在系统启动时创建一个符号链接,让
systemd
取消开机自启动(禁用服务): 如果一个服务你不再需要它在开机时自动运行,或者想手动控制,可以禁用它:
systemctl disable firewalld
这会移除之前创建的符号链接,阻止
firewalld
屏蔽服务(阻止任何形式的启动): 有时候,你可能想彻底阻止某个服务被启动,即使是其他服务依赖它也不行。这时可以使用
mask
systemctl mask postfix
它会创建一个指向
/dev/null
postfix
unmask
重新加载 systemd 配置: 当你创建或修改了服务单元文件(
.service
systemd
systemctl daemon-reload
这是个很关键的步骤,常常有人会忘记。
从我个人经验来看,从旧的SysVinit/Upstart系统迁移到以
systemd
service
chkconfig
service
/etc/init.d/
systemctl
systemd
systemd
.service
虽然在CentOS 7+上,你可能偶尔还能用
service httpd start
systemctl
systemctl
服务启动失败,这简直是运维日常。我遇到过太多次了,一开始可能有点手足无措,但久而久之就总结出了一套自己的排查流程。
第一步,也是最重要的一步,就是查看服务状态:
systemctl status <service_name>
这个命令的输出至关重要,它会告诉你服务是
active (running)
inactive (dead)
failed
failed
systemctl status nginx
bind() to 0.0.0.0:80 failed (98: Address already in use)
netstat -tulpn | grep :80
如果
status
journalctl
systemd
journalctl -xe # 查看所有系统日志,-x 显示解释,-e 跳到最后 journalctl -u <service_name> # 只看特定服务的日志
通过
journalctl -u nginx
除了日志,还有几个常见点需要检查:
nginx.conf
httpd.conf
nginx -t
apachectl configtest
setenforce 0
排查过程其实就是个侦探游戏,根据线索一步步缩小范围,最终找到真凶。
有时候,系统自带的服务单元文件不能满足我们的需求,或者我们需要将一个自定义的脚本、应用程序包装成一个可管理的
systemd
.service
crontab
systemd
.service
systemctl
自定义服务单元文件通常放在
/etc/systemd/system/
.service
my_app.service
.service
[Unit]
[Service]
[Install]
1. [Unit]
Description
After
After=network.target
Requires
Requires
2. [Service]
Type
simple
ExecStart
forking
ExecStart
oneshot
ExecStart
ExecStop
ExecReload
WorkingDirectory
User
Group
Restart
on-failure
always
Environment
3. [Install]
systemctl enable
WantedBy
target
multi-user.target
一个简单的自定义服务示例 (/etc/systemd/system/my_script.service
假设你有一个Python脚本
/opt/my_script/run.py
[Unit] Description=My Custom Python Script Service After=network.target [Service] Type=simple User=your_user # 替换为实际的用户 Group=your_group # 替换为实际的组 WorkingDirectory=/opt/my_script ExecStart=/usr/bin/python3 /opt/my_script/run.py Restart=on-failure # 如果脚本运行失败,systemd会自动重启它 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target
创建并启用自定义服务的步骤:
/etc/systemd/system/my_script.service
systemctl daemon-reload
这一步是告诉
systemd
systemctl enable my_script.service
这会设置
my_script
systemctl start my_script.service
systemctl status my_script.service
你可以看到脚本是否正在运行,以及最近的日志输出。
通过这种方式,你可以将任何需要长时间运行的程序或脚本,或者需要开机自启的任务,都纳入
systemd
以上就是CentOS服务管理怎么操作_CentOS服务启动停止设置方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号