Ubuntu 服务器上的 Web 服务、数据库、缓存、SSH 等组件,通常都需要通过 systemctl 进行管理。服务是否启动、是否开机自启、为什么启动失败,都会直接影响网站和应用运行。本篇教程介绍 systemctl 的常用操作,帮助站长掌握服务启动、停止、重启和故障排查的基本方法。
一、systemctl 是做什么的
Ubuntu 服务器上很多常见服务都由 systemd 管理,例如 Nginx、MySQL、Redis、SSH、PHP-FPM 等。systemctl 是管理这些服务的常用命令。
通过 systemctl,可以查看服务状态、启动服务、停止服务、重启服务,也可以设置服务是否开机自动启动。
如果网站打不开,第一步往往不是改配置,而是先确认相关服务是否正在运行。
二、查看服务状态
查看服务状态可以使用:
systemctl status nginx
如果要查看 SSH 服务,可以根据系统中的服务名称执行:
systemctl status ssh
不同软件包的服务名称可能不同,具体以服务器实际安装情况为准。
systemctl status 输出中可以重点看:
active (running):服务正在运行;inactive:服务未运行;failed:服务启动失败;- 最近几行日志:通常能看到失败原因;
- Main PID:服务进程编号。
如果服务是 failed,不要马上反复重启,应先查看错误信息。
三、启动、停止和重启服务
常用命令如下:
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
如果只是重新加载配置,可以使用:
sudo systemctl reload nginx
不是所有服务都支持 reload,具体要看服务本身。
restart 和 reload 有什么区别
restart 会重启服务,通常会中断当前进程;reload 是重新加载配置,影响相对更小。
例如修改 Nginx 配置后,如果只是让新配置生效,可以优先考虑 reload。但在 reload 前,应先检查配置语法。
四、设置开机自启
让服务开机自动启动:
sudo systemctl enable nginx
取消开机自启:
sudo systemctl disable nginx
查看是否启用自启:
systemctl is-enabled nginx
开机自启适合 Web 服务、数据库、缓存服务等长期运行组件。但不是所有临时任务都适合设置自启。
五、服务启动失败怎么排查
服务启动失败时,可以按这个顺序排查。
1、先看 status 输出
systemctl status nginx
这里通常会显示最近错误,例如配置文件错误、端口被占用、权限不足、目录不存在等。
2、再看更完整日志
可以使用:
journalctl -u nginx
如果只看最近日志:
journalctl -u nginx -n 50
3、检查端口是否被占用
如果服务启动失败提示端口冲突,可以查看端口:
ss -tulnp
比如 Nginx 要监听 80 端口,但 80 已经被其他服务占用,就会启动失败。
六、服务管理要避免盲目重启
很多新手遇到服务异常,会连续执行 restart。这样可能暂时恢复,也可能掩盖问题。
更稳妥的顺序是:
- 查看服务状态;
- 查看错误日志;
- 检查配置语法;
- 确认端口和权限;
- 再决定是否重启。
如果是生产网站,还要考虑重启是否影响访问。重要服务操作前,建议先确认访问低峰期和备份状态。
FAQ
Q1:systemctl status 显示 failed 怎么办?
A:先看 status 输出中的错误提示,再用 journalctl 查看服务日志,不要直接反复重启。
Q2:enable 服务后是不是立刻启动?
A:不是。enable 只是设置开机自启。如果要立刻启动,还需要执行 start。
Q3:restart 会不会影响网站访问?
A:可能会。Web 服务或数据库重启时可能短暂中断,生产环境应谨慎操作。

