CentOS 是一个基于 Linux 的开源操作系统,广泛应用于服务器和云计算领域,在 CentOS 7 及其后续版本中,系统和服务管理主要依赖于 systemd,systemd 是一个系统和服务管理器,用于替代传统的 SysV 和 Upstart。
下面将详细介绍如何在 CentOS 上启动、停止、重启服务以及设置开机自启动:

启动服务
要启动一个服务,可以使用 systemctl start 命令,要启动 httpd 服务(apache HTTP 服务器),可以执行以下命令:
- sudo systemctl start httpd.service
停止服务
要停止一个正在运行的服务,可以使用 systemctl stop 命令,要停止 httpd 服务,可以执行以下命令:
- sudo systemctl stop httpd.service
重启服务
要重启一个服务,可以使用 systemctl restart 命令,如果服务当前正在运行,该命令会先停止服务然后重新启动;如果服务未运行,则会直接启动服务,要重启 httpd 服务,可以执行以下命令:
- sudo systemctl restart httpd.service
还有 tryrestart 选项,它只会在服务已经在运行的情况下重启服务:
- sudo systemctl tryrestart httpd.service
reload 选项用于重新加载服务的配置文件而不中断服务:
- sudo systemctl reload httpd.service
检查服务状态
要检查某个服务的状态,可以使用 systemctl status 命令,要查看 httpd 服务的状态,可以执行以下命令:

- sudo systemctl status httpd.service
设置开机自启动
要让某个服务在系统启动时自动启动,可以使用 systemctl enable 命令,要设置 httpd 服务开机自启动,可以执行以下命令:
- sudo systemctl enable httpd.service
相应地,如果要禁用某个服务的开机自启动,可以使用 systemctl disable 命令:
- sudo systemctl disable httpd.service
常见服务文件示例
以下是一些常见服务的 systemd 服务文件示例:
Nginx 服务文件 (/usr/lib/systemd/system/nginx.service)
- [Unit]
- Description=The NGINX HTTP and reverse proxy server
- After=network.target remotefs.target nsslookup.target
- [Service]
- Type=forking
- User=nginx
- Group=nginx
- ExecStart=/usr/sbin/nginx c /etc/nginx/nginx.conf
- ExecReload=/usr/sbin/nginx s reload
- ExecStop=/usr/sbin/nginx s quit
- PrivateTmp=true
- [Install]
- WantedBy=multiuser.target
MySQL 服务文件 (/usr/lib/systemd/system/mysqld.service)
- [Unit]
- Description=MySQL Server
- After=network.target syslog.target auditd.service
- Before=remotefs.target
- Conflicts=shutdown.target
- Wants=network.target
- After=network.target syslog.target
- [Service]
- Type=simple
- User=mysql
- Group=mysql
- ExecStart=/usr/sbin/mysqld daemonize pidfile=/run/mysqld/mysqld.pid
- TimeoutSec=600
- Restart=onfailure
- RestartPreventExitStatus=1
- LimitNOFILE=5000
- [Install]
- WantedBy=multiuser.target
相关问答FAQs
问题1:如何在 CentOS 上查看所有已启动的服务?

答:可以使用以下命令查看所有已启动的服务:
- sudo systemctl listunits type=service state=running
问题2:如何查看某个服务是否设置为开机自启动?
答:可以使用以下命令查看某个服务是否设置为开机自启动:
- sudo systemctl isenabled [service_name].service
要查看 httpd 服务是否设置为开机自启动,可以执行:
- sudo systemctl isenabled httpd.service