本页覆盖部署最关键的三件事:看进程、管服务、查日志。一切围绕”让你的服务持续稳定运行”展开。
1. 进程管理
ps (process status) — 看进程列表
ps (process status) — 看进程列表
ps aux 输出每一列:STAT 列状态字符:aux 的 a/u/x 是单字母选项(不带 --)含义:a= all w/ tty,所有终端的进程u= user-oriented format,按用户友好的格式x= include processes w/o tty,连后台守护进程也算
pgrep / pidof — 直接拿到 PID
pgrep / pidof — 直接拿到 PID
ps aux | grep | awk '{print $2}' 这种老套路简单多了。kill / killall / pkill — 结束进程
kill / killall / pkill — 结束进程
后台运行:nohup / & / jobs / fg / bg
后台运行:nohup / & / jobs / fg / bg
2. systemctl —— 服务管理
systemd 是现代 Linux(Ubuntu 16+, CentOS 7+, Debian 8+)的初始化系统,负责开机启动、进程管理、日志收集等。
systemctl 就是控制 systemd 的命令 —— 部署完任何长期运行的服务(nginx / mysql / 你自己的应用),都靠它启动 / 停止 / 设置开机自启 / 看状态。2.1 核心概念:unit / service
- unit(单元):systemd 管理的对象,一个服务、一个挂载点、一个定时任务都是 unit
- service(服务):最常见的 unit 类型,文件名以
.service结尾 - unit 文件位置:
- 系统自带:
/lib/systemd/system/(不要改) - 自定义/覆盖:
/etc/systemd/system/(在这里写自己的)
- 系统自带:
2.2 看状态:你最常用的命令
systemctl status nginx 输出怎么读:
2.3 操控服务:start / stop / restart / reload
2.4 开机自启:enable / disable
2.5 修改 unit 文件后必做:daemon-reload
只要你新建或修改了.service 文件,systemd 不会自动感知,必须:
daemon-reload 是新手最常踩的坑 —— 明明改了文件却不生效。
2.6 写一个自己的 service 文件
部署一个 Python 应用作示例:1
新建 service 文件
2
加载并启动
3
改了文件之后
3. 看日志
部署系统的核心活动之一就是看日志。systemd 服务用journalctl,应用日志用 tail -f。
3.1 journalctl — systemd 日志
-p 优先级(priority)速查:
3.2 tail -f — 应用日志实时看
Ctrl+C 退出。
