7. 进程与服务
这是什么:进程 = 跑起来的程序;systemd = Linux 的服务管家,统一管着网站、数据库这类常驻后台的进程。
为什么用:上一章装好 nginx 后,你总不能一直开着终端跑它——终端一关服务就死。systemd 让服务开机自启、崩溃自动重启,线上才真正稳得住。
如何用:本章先用 ps / top / kill 看得见也杀得掉,再用 systemctl 把 nginx 收编成后台常驻服务。
7.1 看进程
ps aux # 全量进程列表
ps aux | grep nginx # 精准找
top # 动态资源看板(q 退出)
info:PID 是进程号,kill 靠它;%CPU %MEM 看占用。
7.2 终止进程
kill <pid> # 温柔:让进程自己收尾退出
kill -9 <pid> # 强制:进程树直接掐(最后手段)
killall nginx # 按名字杀
7.3 前台 vs 后台
交互跑一条命令:关掉终端就没了。常驻必须后台守护:
python server.py & # & 放后台(终端关仍然挂)
生产绝不用 & 裸跑,用 systemd:
7.4 systemctl:服务的总开关
sudo systemctl start nginx # 启动
sudo systemctl stop nginx # 停止
sudo systemctl restart nginx # 重启
sudo systemctl status nginx # 看状态
sudo systemctl enable nginx # 开机自启
sudo systemctl disable nginx # 关闭自启
status 常见输出:
● nginx.service - nginx web server
Active: active (running) since Wed ...
部署一个后端的标准姿势:写一个
.service文件放/etc/systemd/system/,然后 enable 启动:
# /etc/systemd/system/frog.service
[Unit]
Description= frog backend
[Service]
ExecStart=/srv/frog/.venv/bin/python main.py
Restart=always
User=frog
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload # 改完 service 文件必跑
sudo systemctl start frog
7.5 排障三板斧
- 进程在不在:
ps aux | grep app/systemctl status - 日志看一眼:
journalctl -u frog -n 50(该服务最近 50 行)、tail -f /var/log/nginx/error.log - 端口冲突:
ss -tlnp | grep 80
7.6 动手改
- 启动 nginx,curl 首页;restart 后再 curl
- 写一个 10 秒脚本 sleep 后 kill 观察区别
- 用
ss -tlnp | grep :80找占 80 端口的进程
7.7 小结
- 进程看 ps/top,杀 kill/-9
- 后台常驻 = systemd service:start/stop/restart/enable
- 排障三问:活着吗?日志说啥?端口占了吗?
下一章:实战:部署静态页 🐸