🐸 青蛙编程网
首页 / 开发工具 / Linux / 7. 进程与服务

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 排障三板斧

  1. 进程在不在:ps aux | grep app / systemctl status
  2. 日志看一眼:journalctl -u frog -n 50(该服务最近 50 行)、tail -f /var/log/nginx/error.log
  3. 端口冲突:ss -tlnp | grep 80

7.6 动手改

  1. 启动 nginx,curl 首页;restart 后再 curl
  2. 写一个 10 秒脚本 sleep 后 kill 观察区别
  3. 用 ss -tlnp | grep :80 找占 80 端口的进程

7.7 小结

  • 进程看 ps/top,杀 kill/-9
  • 后台常驻 = systemd service:start/stop/restart/enable
  • 排障三问:活着吗?日志说啥?端口占了吗?

下一章:实战:部署静态页 🐸

📥 下载本章代码

ZIP 内含本章全部代码文件与说明,解压即用,与教程内容同步生成。