答案:CentOS系统中通过systemctl命令管理服务启停与自启,使用enable/disable控制开机启动,start/stop/restart控制运行状态,status查看服务详情,老版本则用chkconfig和service命令。

CentOS系统下,更改启动服务主要通过
systemctl
enable
disable
start
stop
restart
chkconfig
service
在CentOS中管理系统服务启动项的核心就是熟练运用
systemctl
首先,要启用一个服务使其在系统启动时自动运行,你会用到
enable
sudo systemctl enable <服务名>
例如,如果你想让Nginx在每次开机后都自动启动,就是
sudo systemctl enable nginx
systemctl
/etc/systemd/system/multi-user.target.wants/
/usr/lib/systemd/system/
如果想禁用一个服务的开机自启,使其不再随系统启动:
sudo systemctl disable <服务名>
这会移除前面提到的符号链接。
要立即启动一个服务,无论它是否设置为开机自启:
sudo systemctl start <服务名>
要停止一个正在运行的服务:
sudo systemctl stop <服务名>
有时候,服务配置修改后,需要重启来加载新配置:
sudo systemctl restart <服务名>
如果你不确定服务是否支持
restart
reload
sudo systemctl reload <服务名>
查看服务的当前状态,包括是否正在运行、是否开机自启、最近的日志等,这是排查问题时最常用的:
systemctl status <服务名>
我个人觉得,
status
对于那些仍在维护的老旧CentOS 6系统,服务管理则依赖于
chkconfig
service
sudo chkconfig <服务名> on
sudo chkconfig <服务名> off
sudo service <服务名> start
sudo service <服务名> stop
sudo service <服务名> status
systemctl
在CentOS系统里,了解当前服务状态和它们的自启配置,是系统管理员日常工作的重中之重。这不仅仅是为了知道什么在跑,更是为了优化系统资源、确保关键应用稳定运行,以及及时发现潜在的安全隐患。
要查看系统上所有已安装的服务单元文件(无论是否启用或运行),你可以使用:
systemctl list-unit-files --type=service
这个命令会列出所有以
.service
enabled
disabled
static
masked
如果你只想看那些当前正在运行的服务,可以这样:
systemctl list-units --type=service --state=running
这个命令会筛选出状态为
running
--all
--state=failed
当然,最常用的还是查看特定服务的详细状态:
systemctl status <服务名>
这个命令会显示服务的运行状态、进程ID、内存占用、最近的日志条目等等。我通常会仔细查看
Active:
active (running)
inactive (dead)
Loaded:
journalctl -xeu <服务名>
管理服务启动项时,除了前面提到的
enable
disable
mask
mask
sudo systemctl mask <服务名>
这会在
/etc/systemd/system/
/dev/null
unmask
sudo systemctl unmask <服务名>
我个人觉得
mask
disable
Systemd的服务单元文件,通常以
.service
/usr/lib/systemd/system/
/etc/systemd/system/
一个典型的
.service
[]
[Unit]
[Service]
[Install]
[Unit]
Description
Documentation
After
After=network.target
Before
Requires
Wants
Requires
Conflicts
我通常会在这里仔细配置
After
Wants
[Service]
Type
simple
forking
oneshot
notify
ExecStart
ExecStop
ExecReload
WorkingDirectory
User
Group
Environment
restart
on-failure
always
LimitNOFILE
自定义服务时,
ExecStart
User
WorkingDirectory
restart
ExecStart
User
goapp
WorkingDirectory
[Install]
enable
WantedBy
multi-user.target
当执行
systemctl enable <服务名>
WantedBy
.target.wants/
如何自定义或覆盖服务: 如果你想修改一个系统自带服务的行为,不建议直接编辑
/usr/lib/systemd/system/
/etc/systemd/system/
.service
override.conf
例如,要修改
nginx.service
sudo mkdir -p /etc/systemd/system/nginx.service.d
sudo vim /etc/systemd/system/nginx.service.d/custom.conf
custom.conf
[Service] User=mynginxuser Group=mynginxuser
sudo systemctl daemon-reload
sudo systemctl restart nginx
这种方式非常优雅,既保留了系统原有的服务文件,又实现了定制化,避免了升级冲突。
服务启动失败,是系统管理员经常会遇到的头疼问题。面对一个“服务启动失败”的提示,如果只是干等着,那肯定解决不了问题。我总结了一套自己的排查思路,希望能帮助大家高效定位并解决问题。
第一步:查看服务状态和日志(systemctl status
journalctl
systemctl status <服务名>
仔细阅读输出信息。通常,如果服务启动失败,
Active:
inactive (dead)
failed
journalctl -xeu <服务名>
执行
journalctl -xeu <服务名>
-x
-e
-u
Error
failed
Permission denied
No such file or directory
第二步:检查服务单元文件配置(.service
systemctl cat <服务名>
这个命令会直接打印出服务单元文件的内容,包括原始文件和所有覆盖文件。 重点检查
[Service]
ExecStart
User
Group
WorkingDirectory
Environment
Type
Type=forking
我遇到过很多次因为
ExecStart
User
第三步:手动执行启动命令进行测试 有时候,直接通过
systemctl
ExecStart
ExecStart
sudo -u <服务用户> bash
ExecStart
第四步:检查依赖关系和端口冲突
[Unit]
Requires
After
systemctl status <依赖服务名>
sudo netstat -tulnp | grep <端口号>
或者使用
ss
sudo ss -tulnp | grep <端口号>
如果发现端口被占用,你需要找出占用端口的进程并停止它,或者修改服务的监听端口。
第五步:检查文件权限和SELinux
ls -l <文件或目录路径>
通常,
chown
chmod
sestatus
enforcing
AVC denied
permissive
sudo setenforce 0
sudo tail -f /var/log/audit/audit.log
通过这几步,基本上能定位到绝大多数服务启动失败的原因。关键在于系统性地思考,而不是盲目尝试。
以上就是CentOS怎么更改启动服务_CentOS管理系统服务启动项教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号