最直接有效的方式是用 systemctl restart 命令,适用于 Ubuntu 22.04+、CentOS 7+、Debian 10+ 等现代 Linux 发行版;需先确认服务名(如 Debian/Ubuntu 的 apache2、CentOS 的 httpd),再执行 sudo systemctl restart 服务名,并用 status 验证运行状态;配置修改后可优先用 reload 实现平滑重载,不支持时再用 restart;旧系统可用 service 或 /etc/init.d/ 脚本作为备选。
最直接有效的方式是用 systemctl restart 命令,适用于绝大多数现代 linux 发行版(如 ubuntu 22.04+、centos 7+、debian 10+)。
确认服务名再执行重启
服务名不一定是你直觉认为的名称,比如:
- Apache 在 Debian/Ubuntu 上叫 apache2,在 CentOS/RHEL 上常叫 httpd
- Nginx 通常就是 nginx,但有些旧系统可能写作 nginx-full
- MySQL 一般是 mysql,MariaDB 则是 mariadb
不确定时,先查一下:
sudo systemctl list-units --type=service | grep -i 关键词
例如:sudo systemctl list-units --type=service | grep -i nginx
标准重启命令(推荐)
运行以下命令即可完成完整重启(先停后启):
-
sudo systemctl restart 服务名
如:
sudo systemctl restart nginx - 执行后建议立刻检查状态:
sudo systemctl status 服务名,确认 Active 状态为 active (running),且没有报错日志
更轻量的重载配置(适合改完配置后)
如果只是修改了配置文件(如 /etc/nginx/nginx.conf),且服务支持热重载,优先用:
-
sudo systemctl reload 服务名
如:
sudo systemctl reload nginx - 它不中断已有连接,比 restart 更平滑;但不是所有服务都支持(如 Apache 的 reload 可能不生效,需用 restart)
- 若 reload 报错 “Failed to reload”,说明配置有误或服务不支持,此时必须用 restart
兼容旧系统的备选命令
极少数仍在用 SysV init 的系统(如某些嵌入式或老旧发行版),可用:
-
sudo service 服务名 restart
如:
sudo service apache2 restart - 或直接调用初始化脚本:
sudo /etc/init.d/apache2 restart - 注意:这些命令在 systemd 系统中仍可运行,但实际是被重定向到 systemctl,建议统一用 systemctl


















