一、最常用 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
四、排查服务启动失败万能思路
- 看状态
bash
systemctl status xxx
- 看日志
bash
journalctl -u xxx -f
- 看配置是否写错
bash
systemctl cat xxx
- 看依赖是否启动
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