📌 最后一页,也是最"运维"的一页:看进程、管服务、盯监控、装软件。
十五、进程管理
15.1 基本概念
- 程序没运行时就是一段代码;运行起来加载到内存,就成了进程(静态 → 动态)
- 运行方式分前台(游戏)和后台(MySQL 服务)
- 系统服务一般在后台运行,常驻系统,关机才结束
15.2 ps —— 看进程
一般用 ps -aux | more,或者配合 grep 筛选:
ps -aux | grep 目标
| 选项 | 作用 |
|---|---|
-a | 显示终端所有进程 |
-u | 以用户格式显示进程信息 |
-x | 显示后台进程运行的参数 |
输出字段:
| 字段 | 含义 |
|---|---|
| USER | 用户 |
| PID | 进程号 |
| PPID | 父进程号 |
| %CPU / %MEM | CPU / 物理内存占用 |
| VSZ | 虚拟内存占用 |
| RSS | 物理内存占用 |
| TTY | 终端信息 |
| STAT | 当前运行状态 |
| START | 进程执行开始时间 |
| TIME | 占用时间 |
| COMMAND | 启动指令 |
STAT 状态含义:
| 状态 | 含义 |
|---|---|
S | 睡眠 |
s | 该进程是会话的先导进程 |
N | 进程拥有比普通优先级更低的优先级 |
R | 正在运行 |
D | 短期等待 |
Z | 僵死进程 |
T | 被跟踪或停止 |
15.3 父子进程
ps -ef # 以全格式显示当前所有进程
# -e 显示所有进程
# -f 全格式
💡 父进程为 0 的,就是最开始的父进程(一般是 systemd,PID=1)。
15.4 终止进程
kill 选项 进程号 # -9 强制终止
killall 进程名 # 终止进程及其下面的所有子进程
实战一:踢掉非法登录用户
ps -ef | grep sshd # 找到非法用户的进程
kill 进程号
实战二:终止远程登录服务(sshd)
ps -aux | grep sshd
# 找到 root 的 /usr/sbin/sshd 进程的进程号
kill 进程号
ps -aux | grep sshd # 确认没有 sshd 服务了
# 需要时重启
/bin/systemctl start sshd.service
实战三:批量关闭 gedit
killall gedit
子进程也都没了,而且 killall 支持通配符,可用于快速清理内存。
实战四:强制杀死终端(并非 sshd)
ps -aux | grep bash
kill 进程号 # 关不掉!系统认为它正在工作
kill -9 进程号 # 需要 -9 强制关闭
🔑kill杀不掉的,用kill -9。
但-9是"强杀",进程来不及保存状态,可能丢数据,能不用就不用。
15.5 进程树
pstree 选项 # 选项可加可不加,配合 grep 就能快速清晰地找到进程
# -p 显示进程的 PID
# -u 显示进程的所属用户
十六、服务管理
16.1 概念
- service 管理就是进程管理
- 服务运行在后台,一般会监听某个端口(mysqld、sshd、防火墙),所以又称守护进程
- 关闭服务,监听就会停止
service 服务名 [start | stop | restart | reload | status]
CentOS 7.0 以后很多都用systemctl管理了,
但/etc/init.d/下的服务还能继续用service管理。
16.2 查看所有系统服务
setup
在界面里选中、回车即可。**前面有 * 就代表开机自启**; 光标选中,按空格键就能切换 *,修改后退出即可。

16.3 开机流程
开机 → BIOS → /boot → systemd 作为进程 1(PID)→ 运行级别 → 运行对应服务
/etc/inittab 在前面「运行级别」一页提过:CentOS 7 之后被简化成了 target。
16.4 chkconfig(旧方式)
chkconfig --list [| grep xxx] # 查看服务
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off # 指定服务、运行级别,是否自启动
CentOS 7 后服务基本都用 systemctl 管理了。
16.5 systemctl(重点)
systemctl [start | stop | restart | reload | status] 服务名
它管理的服务在/usr/lib/systemd/system里,文件形式是服务名.service。
写的时候可以只写服务名,省略.service。
开机自启管理:
systemctl list-unit-files | grep 服务名 # 查看开机启动状态
systemctl enable 服务名 # 开启自启
systemctl disable 服务名 # 关闭自启
systemctl is-enabled 服务名 # 查询是否自启
💡 CentOS 7 之后服务级别简化了,主要是 3 和 5,
所以直接enable就代表两个级别都设置了。
最容易搞混的一点:start/stop只是临时生效,重启之后会初始化。
要永久生效必须用enable/disable。
两者的关系就像"现在打开软件"和"设置开机自启"。

16.6 防火墙 firewalld
原理: 一个请求遇到防火墙 ——
- 端口开放(防火墙放行该端口)→ 继续访问
- 端口关闭(防火墙堵住端口)→ 无法访问
firewall-cmd --permanent --add-port=端口号/协议 # 打开端口
firewall-cmd --permanent --remove-port=端口号/协议 # 关闭端口
firewall-cmd --reload # ⚠️ 重新载入才生效
firewall-cmd --query-port=端口/协议 # 查询端口是否开放
完整流程举例(假设需要外部访问 111 端口):
telnet IP 111连接失败(防火墙默认关闭)firewall-cmd --permanent --add-port=111/tcp打开端口firewall-cmd --reload重新载入- 再
telnet IP 111就通了
💡 协议可以用netstat -anp | more查看。
测试连通性用telnet IP 端口。
关闭或启动防火墙会立即生效。
十七、动态监控系统
17.1 top —— 监控进程
和 ps 的区别:top 会持续更新。
top 选项
# -d 后面指定秒数(刷新频率)
# -i 不显示闲置、僵死进程
# -p 进程ID,精确监控单个进程
界面解读(前五行):
| 行 | 内容 |
|---|---|
| 1 | 当前时间、系统运行时间、用户数量、负载均值 |
| 2 | 任务数、任务状态 |
| 3 | CPU 占用:用户 us、系统 sy、空闲 id |
| 4 | Mem 内存:总共、空闲、使用、buff |
| 5 | Swap 分区内存:总共、空闲、使用、可获取 |
⚠️ 要定时清除僵死进程(STAT 为 Z 的那些)。
交互操作(直接按键,注意大小写):
| 按键 | 作用 |
|---|---|
P | 按 CPU 使用率排序 |
M | 按内存使用率排序 |
N | 按 PID 排序 |
q 或 Ctrl+C | 退出 top |
u | 输入用户名,查看指定用户的进程 |
k | 输入要结束的进程 ID,再输入 9 强制结束,回车正常结束 |
17.2 netstat —— 监控网络状态
netstat 选项 # 经常配合 | more 查看
# -an 按一定顺序输出
# -p 显示哪个进程在调用
# 常用组合:-anp
| 字段 | 含义 |
|---|---|
| Proto | 网络协议 |
| Local Address | 本地地址(Linux 地址),格式 IP:Port;::: 是 IPv6 格式 |
| Foreign Address | 外部地址 |
| State | LISTEN 监听中,ESTABLISHED 连接成功 |
💡ssh登出时,连接不是立刻断开的,会有一个TIME_WAIT状态,超时等待,
具体等待时间不定。

十八、RPM 与 YUM
18.1 rpm —— 软件包管理
类似 Windows 的 setup.exe。
rpm -qa [| grep] # 查询已安装的 rpm 列表
rpm -q 软件包名 # 查询指定包是否安装
rpm -qi 软件包名 # 查询软件包详细信息
rpm -ql 软件包名 # 查询软件包文件位置及其包含的文件
rpm -qf 文件全路径名 # 查询文件所属的软件包
rpm -qf /etc/passwd
包名格式:
firefox-68.10.0-1.el7.centos.x86_64
│ │ │ │ │
软件名 版本 版本 适用系统 架构
i686、i386表示 32 位系统;noarch表示通用。
卸载:
rpm -e 包名
# 如果提示依赖关系被破坏:foo is needed by xxx
rpm -e --nodeps 包名 # 强制删除
⚠️ 不推荐用 --nodeps,可能导致依赖这个包的程序无法使用。
安装:
rpm -ivh RPM包全路径名称
# -i install 安装
# -v verbose 提示
# -h 显示进度条
rpm -ivh /opt/软件包全名
💡 RPM 包一般在桌面的CentOS 7 x86_64/Packages里找,
复制到/opt/下再装。
安装之后要确认能否正常工作。
18.2 yum —— 自动解决依赖
shell 前端软件包管理器,从指定服务器自动下载,一次性安装依赖包。
yum list | grep 软件 # 去 yum 服务器查询有没有指定软件
# 有多个版本就都会返回
yum install 包名 # 安装
🔑 rpm 要自己处理依赖,yum 自动处理依赖。
所以日常装软件优先用 yum,只有在没有 yum 源时才用 rpm 手动装。
📝 后记
这是我运维学习的第一篇笔记,内容很杂,但都是最基础、最常用的东西。
回头看,这份笔记的价值不在于"记全了",而在于每一个命令我都真的敲过一遍。
后面会按主题拆开,一篇篇写细。
这一页的要点
ps -aux看进程,ps -ef看父子关系kill杀不掉就用kill -9,但强杀可能丢数据start/stop是临时的,enable/disable才是永久的- 防火墙改了端口规则,必须
--reload才生效 top会刷新,ps不会;P按 CPU 排、M按内存排- 能用 yum 就用 yum,别手动折腾 rpm 依赖