首页  /  Linux 基础  /  正文

进程 · 服务 · 监控 · 软件包

Linux 基础 2026-10-01📖 14 分钟👁 —
🐧 Linux 运维基础笔记第 6 / 7 页1234567📖 完整导航 →
📌 最后一页,也是最"运维"的一页:看进程、管服务、盯监控、装软件。

十五、进程管理

15.1 基本概念

15.2 ps —— 看进程

一般用 ps -aux | more,或者配合 grep 筛选:

ps -aux | grep 目标
选项作用
-a显示终端所有进程
-u以用户格式显示进程信息
-x显示后台进程运行的参数

输出字段:

字段含义
USER用户
PID进程号
PPID父进程号
%CPU / %MEMCPU / 物理内存占用
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 服务名 [start | stop | restart | reload | status]
CentOS 7.0 以后很多都用 systemctl 管理了,
但 /etc/init.d/ 下的服务还能继续用 service 管理。

16.2 查看所有系统服务

setup

在界面里选中、回车即可。**前面有 * 就代表开机自启**; 光标选中,按空格键就能切换 *,修改后退出即可。

service 与 systemctl 的关系

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。
两者的关系就像"现在打开软件"和"设置开机自启"。
systemctl 服务管理

16.6 防火墙 firewalld

原理: 一个请求遇到防火墙 ——

firewall-cmd --permanent --add-port=端口号/协议       # 打开端口
firewall-cmd --permanent --remove-port=端口号/协议    # 关闭端口
firewall-cmd --reload                                 # ⚠️ 重新载入才生效
firewall-cmd --query-port=端口/协议                   # 查询端口是否开放

完整流程举例(假设需要外部访问 111 端口):

  1. telnet IP 111 连接失败(防火墙默认关闭)
  2. firewall-cmd --permanent --add-port=111/tcp 打开端口
  3. firewall-cmd --reload 重新载入
  4. 再 telnet IP 111 就通了
💡 协议可以用 netstat -anp | more 查看。
测试连通性用 telnet IP 端口。
关闭或启动防火墙会立即生效。

十七、动态监控系统

17.1 top —— 监控进程

和 ps 的区别:top 会持续更新。

top 选项
#   -d   后面指定秒数(刷新频率)
#   -i   不显示闲置、僵死进程
#   -p   进程ID,精确监控单个进程

界面解读(前五行):

行内容
1当前时间、系统运行时间、用户数量、负载均值
2任务数、任务状态
3CPU 占用:用户 us、系统 sy、空闲 id
4Mem 内存:总共、空闲、使用、buff
5Swap 分区内存:总共、空闲、使用、可获取
⚠️ 要定时清除僵死进程(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外部地址
StateLISTEN 监听中,ESTABLISHED 连接成功
💡 ssh 登出时,连接不是立刻断开的,会有一个 TIME_WAIT 状态,超时等待,
具体等待时间不定。
netstat 监控网络状态

十八、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 手动装。

📝 后记

这是我运维学习的第一篇笔记,内容很杂,但都是最基础、最常用的东西。

回头看,这份笔记的价值不在于"记全了",而在于每一个命令我都真的敲过一遍。

后面会按主题拆开,一篇篇写细。


这一页的要点

  1. ps -aux 看进程,ps -ef 看父子关系
  2. kill 杀不掉就用 kill -9,但强杀可能丢数据
  3. start/stop 是临时的,enable/disable 才是永久的
  4. 防火墙改了端口规则,必须 --reload 才生效
  5. top 会刷新,ps 不会;P 按 CPU 排、M 按内存排
  6. 能用 yum 就用 yum,别手动折腾 rpm 依赖