systemctl 管理服务实战手册

一、最常用 8 条(背这 8 条就够 90% 场景)

bash

# 启动服务
systemctl start nginx

# 停止服务
systemctl stop nginx

# 重启服务
systemctl restart nginx

# 重新加载配置(不中断业务)
systemctl reload nginx

# 开机自启
systemctl enable nginx

# 关闭开机自启
systemctl disable nginx

# 查看服务状态
systemctl status nginx

# 查看所有正在运行的服务
systemctl list-units --type=service --state=running

二、看日志(排查崩溃、启动失败必备)

实时看服务日志

bash

journalctl -u nginx -f

看最近 100 行

bash

journalctl -u nginx -n 100

看今天的日志

bash

journalctl -u nginx --since today

配合管道过滤错误

bash

journalctl -u nginx | grep -i error

三、自定义服务(自己写脚本必备)

路径固定:

plaintext

/etc/systemd/system/xxx.service

最简单模板(直接改名字就能用)

ini

[Unit]
Description=我的自定义服务
After=network.target

[Service]
User=root
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/python3 /opt/myapp/app.py
Restart=always  # 崩溃自动重启
RestartSec=3    # 3秒后重启

[Install]
WantedBy=multi-user.target

写完后必须执行:

bash

systemctl daemon-reload
systemctl enable myapp
systemctl start myapp

四、排查服务启动失败万能思路

  1. 看状态

bash

systemctl status xxx
  1. 看日志

bash

journalctl -u xxx -f
  1. 看配置是否写错

bash

systemctl cat xxx
  1. 看依赖是否启动

bash

systemctl list-dependencies xxx

五、运维高频实用命令

1. 查看所有开机自启服务

bash

systemctl list-unit-files --type=service | grep enabled

2. 屏蔽一个服务(不让它开机启动)

bash

systemctl mask firewalld

3. 取消屏蔽

bash

systemctl unmask firewalld

4. 只重启失败的服务

bash

systemctl reset-failed

5. 查看机器启动时间

bash

systemctl status

六、你可以直接背的口诀

  • 改了配置文件 → daemon-reload
  • 想开机自启 → enable
  • 排查问题 → status + journalctl
  • 不中断业务 → reload
  • 崩溃自动拉起来 → 服务文件加 Restart=always

滚动至顶部