systemctl 入门:先搞懂服务状态、启停、重启与开机自启,再记十条常用命令
在 Linux 服务器上管理服务,绕不开 systemctl。它是 systemd 的控制命令,主流发行版(CentOS 7+、Ubuntu 16.04+、EulerOS 等)都用它来启停服务。先记住一个核心规律:systemctl 动作 服务名,动作无非就下面几类。
一、先看懂服务状态
排查问题第一步永远是看状态:
systemctl status nginx
输出里最关键的两行:
Loaded: loaded (.../nginx.service; enabled; ...)—— 单元文件已加载,enabled表示已设置开机自启,disabled表示未设置。Active: active (running)—— 当前正在运行。常见的还有inactive (dead)(已停止)、failed(启动失败)、activating(正在启动中)。
绿色圆点表示运行正常,红色表示异常。输出里还能看到主进程 PID、内存占用和最近几条日志,排查时一目了然。
二、启动、停止与重启
systemctl start nginx # 启动服务
systemctl stop nginx # 停止服务
systemctl restart nginx # 重启服务:先停后启,进程号会变化
systemctl reload nginx # 重载配置:不重启进程,只重新加载配置文件
注意 restart 和 reload 的区别:restart 会中断服务,正在处理的连接会被断开;reload 让服务重新读取配置文件而不中断服务,改完 nginx.conf 这类配置后优先用 reload。不是所有服务都支持 reload,不支持时会报错,这时再改用 restart。
如果改的是 systemd 的 unit 文件本身(比如 /usr/lib/systemd/system/xxx.service),改完要先执行:
systemctl daemon-reload # 重新加载 systemd 单元配置
三、开机自启:enable 与 disable
服务现在运行着,不代表重启机器后还会运行——这是新手最容易踩的坑。开机自启由另一组命令控制:
systemctl enable nginx # 设置开机自启
systemctl disable nginx # 取消开机自启
systemctl is-enabled nginx # 查看是否已设置开机自启
enable 的本质是创建符号链接,把服务链进对应 target 的 wants 目录。配合 status 输出里的 enabled/disabled 一起看,服务的“现在”和“将来”就都清楚了。
四、十条常用命令速记
systemctl status 服务名—— 查看服务状态(含是否开机自启、最近日志)systemctl start 服务名—— 启动服务systemctl stop 服务名—— 停止服务systemctl restart 服务名—— 重启服务systemctl reload 服务名—— 重载配置,服务不中断systemctl enable 服务名—— 设置开机自启systemctl disable 服务名—— 取消开机自启systemctl is-enabled 服务名—— 查询开机自启状态systemctl list-units --type=service --state=running—— 列出所有正在运行的服务journalctl -u 服务名 -n 50—— 查看该服务最近 50 条日志,配合 status 排查
再记两条加分项:systemctl daemon-reload(改完 unit 文件后重载配置)、systemctl mask 服务名(彻底屏蔽服务,防止被依赖误启动,用 unmask 解除)。
五、实战小例子
刚在云服务器上装好 nginx,想让它立刻运行、以后开机也自动运行,三步走:
systemctl start nginx
systemctl enable nginx
systemctl status nginx
先启动、再设自启、最后确认状态。改了配置文件则这样:
nginx -t # 先检查配置语法
systemctl reload nginx # 语法没问题再重载,不断服务
总结一句:start/stop 管现在,enable/disable 管将来,status 随时看,reload 改配置不断服。把这十条命令练熟,日常的服务管理就够用了。
- 点赞
- 收藏
- 关注作者
评论(0)