环境:Ubuntu24.04 Server,普通ubuntu用户操作,无root直接登录,全部为生产环境高频操作,记录实操第一现场。
一、前置准备
安装企业常用练习服务 openssh‑server、nginx,用于后续服务管理实操。
说明:Ubuntu的SSH服务名为
ssh,CentOS为sshd,注意区分。
1 | # 更新源 |
二、服务状态排查
生产场景:线上服务异常,快速确认服务存活状态、开机自启状态、运行时长、PID。
1 | # 1. 查看nginx详细运行状态(重点观察:running/dead、启动时间、进程PID) |
实操注意:
systemctl status xxx查看完状态,按q退出查看界面。- Ubuntu SSH服务名:
ssh;CentOS为sshd,命令不要混用。
三、服务启停、重启、重载
模拟日常运维:停止、启动、异常重启、配置平滑重载。
1 | # 1. 停止服务 |
实操注意:
restart:彻底杀掉进程再重新启动,业务连接会断开;reload:只重新加载配置文件,原有业务连接保持,生产改配置优先选reload。
四、开机自启管理
生产场景:服务器意外重启,保障业务自动拉起;关闭无用服务开机自启。
1 | # 1. 设置开机自启 |
五、服务日志排查
生产场景:服务启动失败,通过journalctl工具定位故障根源。
1 | # 1. 查看nginx服务日志,排错首选 |
实操注意:
- 实时日志
journalctl -u nginx -f使用Ctrl+C退出。
刻意故障演练:Nginx配置损坏排错
人为修改nginx配置制造故障,模拟线上配置改错/误删配置内容场景。
1 | # 修改配置,可以故意写错语法,也可以直接删除部分配置内容 |
重启报错信息如下:
日志报错信息如下:
实战经验:
不管是语法写错,还是误删除配置内容导致配置残缺,两类故障都可以两套方案处理:
- 精细修复:优先执行
nginx -t做配置语法校验,根据输出的行号修正配置,适合需要保留自己修改过的配置;- 应急重置:配置彻底改乱,直接重装nginx恢复出厂配置,快速恢复业务,Ubuntu没有
.default备份模板,不能用cp模板的方式。
1 | # Ubuntu应急恢复默认nginx配置 |
工作中优先执行
nginx -t检查语法,减少盲目重启,降低故障修复成本。
六、自定义 systemd 服务
生产场景:把自己写的脚本、后端程序交给systemd托管,实现后台运行、崩溃自动重启、开机自启。
1、编写测试脚本
注意:如果直接用普通用户vim创建文件,后续会遇到203/EXEC执行报错。
1 | sudo vim /opt/test_server.sh |
脚本功能:每5秒把运行状态写入日志文件。
1 |
|
赋予脚本执行权限:
1 | sudo chmod 755 /opt/test_server.sh |
2、编写自定义service单元文件
1 | sudo vim /etc/systemd/system/test.service |
service文件完整内容:
1 | [Unit] |
3、加载配置、启动服务、设置开机自启
修改
.service文件后必须执行daemon‑reload让systemd识别新配置。
1 | # 重新加载systemd配置 |
实操踩坑现场:普通用户创建脚本,即使后续修改权限,依然出现
203/EXEC报错。
报错现象:activating (auto‑restart),反复启动反复退出,Main PID: xxx (code=exited, status=203/EXEC)。
根本原因:systemd系统服务默认以root身份运行;普通用户创建的脚本文件,即便后期修改chmod、chown,仍存在隐性隔离标记,systemd拒绝执行该脚本。
实战解决方案:删除旧脚本,使用root身份重建脚本
1 | # 1. 删除普通用户创建的旧脚本(带有隐性隔离BUG) |

4、验证服务自动重启功能
注意:ps查到带grep字样的行是grep自身进程,不是业务进程;服务启动失败时,业务进程一闪而过,ps无法捕获。
1 | # 查找进程PID |

七、服务开机屏蔽与解锁
生产场景:永久禁用高危服务,禁止服务被启动或设置开机自启。
1 | # mask:彻底屏蔽服务,无法start、enable |
实操踩坑现场:自定义service文件直接mask会提示
File /etc/systemd/system/test.service already exists.
说明:该提示不是故障报错。
mask原理是创建软链接指向/dev/null来屏蔽服务;我们手动放到/etc/systemd/system/下的自定义单元文件,无法直接mask覆盖。unmask执行后无任何输出,代表执行成功,不影响服务启停、开机自启等全部功能,无需处理。
八、总结
start/stop控制当前运行状态;enable/disable控制开机是否自启,二者互不影响。- nginx操作:改配置优先
reload平滑重载;故障优先用nginx -t校验语法;Ubuntu无.default模板,配置损坏用apt reinstall nginx恢复出厂。 - systemctl状态查看用
q退出;journalctl实时跟踪‑f用Ctrl+C退出。 - 自定义systemd系统服务以root身份运行;普通用户创建脚本容易出现
203/EXEC,单纯改权限不一定生效,优先用sudo重建脚本。 - mask屏蔽对手动创建的自定义service会出现文件已存在提示,属于正常现象,unmask无输出即为成功。

