Linux 系统资源监控与服务管理实战
·
一、监控系统负载
计算机核心资源:
1. CPU: 计算(lscpu)
2. 内存: 缓存数据(掉电丢失)
3. 硬盘: 持久化存储数据
4. 网络: 传播数据

1.1cpu
1.1.1查看cpu
[root@C001 ~ 10:03:46]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 2
座: 1
NUMA 节点: 1
厂商 ID: GenuineIntel
CPU 系列: 6
型号: 158
型号名称: Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz
步进: 9
CPU MHz: 2495.996
BogoMIPS: 4991.99
超管理器厂商: VMware
虚拟化类型: 完全
L1d 缓存: 32K
L1i 缓存: 32K
L2 缓存: 256K
L3 缓存: 6144K
NUMA 节点0 CPU: 0,1
1.1.2给系统加负载
[root@C001 ~ 10:15:52]# md5sum /dev/zero &
[1] 84814
1.1.3查看使用情况
[root@C001 ~ 10:19:43]# top
top - 10:25:17 up 1:39, 2 users, load average: 1.00, 0.84, 0.45
Tasks: 357 total, 4 running, 353 sleeping, 0 stopped, 0 zombie
%Cpu(s): 48.8 us, 3.2 sy, 0.0 ni, 48.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
84814 root 20 0 108072 620 524 R 100.0 0.0 7:40.72 md5sum
10464 root 20 0 134372 5688 4300 S 1.3 0.3 0:56.47 sshd
1 root 20 0 51004 7324 2540 S 0.0 0.4 0:01.71 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.03 kthreadd ......
1.1.3.1按CPU降序排列(按p)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
84814 root 20 0 108072 620 524 R 99.4 0.0 2:43.54 md5sum
10464 root 20 0 134372 5688 4300 S 1.0 0.3 0:53.70 sshd
86814 root 20 0 123996 1892 1188 R 0.3 0.1 0:00.06 top
1 root 20 0 51004 7324 2540 S 0.0 0.4 0:01.71 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.03 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.26 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
.......
1.1.3.2按内存降序排列(按m)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
84814 root 20 0 108072 620 524 R 99.7 0.0 5:14.64 md5sum
10464 root 20 0 134372 5688 4300 S 1.0 0.3 0:55.13 sshd
829 root 16 -4 116784 1632 1236 S 0.3 0.1 0:04.28 auditd
10550 root 20 0 125024 2868 1184 S 0.3 0.2 0:15.04 top
86814 root 20 0 123996 1892 1188 R 0.3 0.1 0:00.32 top
1 root 20 0 51004 7324 2540 S 0.0 0.4 0:01.71 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.03 kthreadd ......
1.1.4CPU指标
%Cpu(s): 48.7 us(用户), 3.3 sy(系统) 50%
1.1.5删除进程
[root@C001 ~ 10:41:53]# kill -15 84814
[1]+ 已终止 md5sum /dev/zero
1.2内存
1.2.1内存指标
KiB Mem: 1870784 total, 359964 used, 1510820 free, 764 buffers
KiB Swap: 2097148 total, 0 used, 2097148 free. 180076 cached Mem
1.3硬盘
1.3.1磁盘容量
[root@C001 ~ 10:31:20]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 18G 4.3G 14G 25% /
devtmpfs 908M 0 908M 0% /dev
tmpfs 914M 0 914M 0% /dev/shm
tmpfs 914M 8.5M 905M 1% /run
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sda1 497M 96M 401M 20% /boot
1.3.2模拟下载
[root@C001 ~ 10:34:24]# wget http://192.168.42.100/02.%E7%B3%BB%E7%BB%9F%E9%95%9C%E5%83%8F/CentOS-7-x86_64-DVD-2207-02.iso
--2026-04-02 10:34:33-- http://192.168.42.100/02.%E7%B3%BB%E7%BB%9F%E9%95%9C%E5%83%8F/CentOS-7-x86_64-DVD-2207-02.iso
正在连接 192.168.42.100:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:4746903552 (4.4G) [application/octet-stream]
正在保存至: “CentOS-7-x86_64-DVD-2207-02.iso”
0% [ ] 5,442,614 2.32MB/s
1.3.3查看硬盘整体速度
#首先安装依赖
[root@C001 ~ 10:34:35]# yum install sysstat -y
[root@C001 ~ 10:37:03]# sar -dp 1
Linux 3.10.0-123.el7.x86_64 (C001) 2026年04月02日 _x86_64_ (2 CPU)
10时37分08秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
10时37分09秒 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10时37分09秒 centos-swap 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10时37分09秒 centos-root 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10时37分09秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
10时37分10秒 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10时37分10秒 centos-swap 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10时37分10秒 centos-root 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
.......
1.3.4清理文件
[root@centos7 ~ 10:43:53]# rm -f CentOS-7-x86_64-DVD-2207-02.iso*
1.4网络
#n是指定监控网络,1是一秒刷新一次,DEV是网卡接口
[root@C001 ~ 16:34:24]# sar -n DEV 1
Linux 3.10.0-123.el7.x86_64 (C001) 2026年04月02日 _x86_64_ (2 CPU)
16时58分37秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
16时58分38秒 eno16777736 15.00 21.00 1.40 2.87 0.00 0.00 0.00
16时58分38秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
16时58分38秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
16时58分39秒 eno16777736 14.00 23.00 1.34 3.19 0.00 0.00 0.00
16时58分39秒 lo 20.00 20.00 4.34 4.34 0.00 0.00 0.00
16时58分39秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
16时58分40秒 eno16777736 38.00 55.00 3.77 17.77 0.00 0.00 0.00
16时58分40秒 lo 20.00 20.00 4.34 4.34 0.00 0.00 0.00
16时58分40秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
16时58分41秒 eno16777736 14.00 23.00 1.34 3.18 0.00 0.00 0.00
16时58分41秒 lo 20.00 20.00 4.34 4.34 0.00 0.00 0.00
1.5总结
- 实时监控核心指标:CPU(用户/系统态)、内存(缓存/swap)、磁盘I/O、网络流量,用top、vmstat等工具查看。
- 部署专业监控工具:集群/长期监控用Prometheus+Grafana、Zabbix或Nagios,实现集中收集和可视化。
- 设置告警阈值:针对CPU、磁盘等核心指标配置阈值,推送告警并避免告警风暴。
- 监控进程与服务:检查关键服务运行状态、进程数,排查异常退出原因。
- 日志管理分析:集中存储系统/应用日志,关注错误、登录异常等,必要时配置日志告警。
- 磁盘健康监控:除空间外,用smartctl检测坏块,定期执行fsck检查文件系统完整性。
- 网络与安全监控:监控端口、异常连接和防火墙规则,可疑流量用tcpdump分析。
- 性能基线分析:记录正常指标基线,指标偏离时及时排查。
- 自动化监控:编写脚本实现个性化需求检查,联动监控系统或触发告警。
- 监控安全:限制监控工具权限,加密数据传输,避免监控系统成为安全薄弱点。
二、systemctl 管理系统服务
pid为1的程序是systemd,也是系统第一个进程,负责操作系统整个资源的管理。系统中服务也由systemd管理。
2.1查看服务状态
[root@C001 ~ 11:24:44]# systemctl status sshd
sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
Active: active (running) since 四 2026-04-02 16:46:06 CST; 5h 21min left
Main PID: 1307 (sshd)
CGroup: /system.slice/sshd.service
└─1307 /usr/sbin/sshd -D
#运行记录
4月 02 16:46:06 C001 sshd[1307]: Server listening on :: port 22.
4月 02 16:46:41 C001 sshd[2137]: Accepted password for root from 192.168.242.1 port 50742 ssh2
4月 02 16:48:00 C001 sshd[2164]: Accepted password for root from 192.168.242.1 port 50870 ssh2
4月 02 16:50:56 C001 sshd[4873]: Accepted password for root from 192.168.242.1 port 51072 ssh2
4月 02 16:51:13 C001 sshd[5175]: Accepted password for root from 192.168.242.1 port 51085 ssh2
4月 02 08:57:18 C001 sshd[10464]: Accepted password for root from 192.168.242.1 port 51399 ssh2
4月 02 09:01:00 C001 sshd[13904]: Accepted password for root from 192.168.242.1 port 51812 ssh2
4月 02 09:23:24 C001 sshd[34609]: Accepted password for root from 192.168.242.1 port 52859 ssh2
4月 02 11:15:37 C001 sshd[7439]: Accepted password for root from 192.168.242.1 port 58899 ssh2
4月 02 11:16:47 C001 sshd[8552]: Accepted password for root from 192.168.242.1 port 58939 ssh2
重点关注:
- Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
配置文件位置 /usr/lib/systemd/system/sshd.service
第一个enable 代表开机自动启动
第二个enable 暂不关注- Active: active (running)
2.2停止服务
[root@C001 ~ 11:24:51]# systemctl stop sshd
[root@C001 ~ 11:27:48]# systemctl is-active sshd
inactive#说明服务未在运行
#查看sshd服务状态
[root@C001 ~ 11:28:04]# systemctl status sshd
sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
Active: inactive (dead) since 四 2026-04-02 11:27:48 CST; 1min 23s ago
Main PID: 1307 (code=exited, status=0/SUCCESS)
#此时sshd服务为开机自启即enabled,但此时是停止状态即inactive(dead)
此时远程连接失效,例如重新在finalshell中重新开一个会话无法接入 服务器

2.3重新启动服务
[root@C001 ~ 11:34:01]# systemctl start sshd
[root@C001 ~ 11:37:14]# systemctl is-active sshd
active
此时外部连接可以接入

2.4禁止sshd服务开机启动
[root@C001 ~ 11:38:31]# systemctl disable sshd
rm '/etc/systemd/system/multi-user.target.wants/sshd.service'
[root@C001 ~ 11:40:14]# systemctl is-enabled sshd
disabled
重新启动虚拟机后shell连接不上

2.5设置sshd服务开机启动
在虚拟机中重新启动sshd服务

重启虚拟机,验证finalshell是否可以连接

2.6总结
2.6.1核心操作要点
- 查看服务状态:systemctl status sshd,重点关注Loaded(配置文件位置)和Active(运行状态)
- 停止服务:systemctl stop sshd,停止后远程连接失效
- 启动服务:systemctl start sshd,启动后恢复远程连接
- 禁止开机自启:systemctl disable sshd,重启虚拟机后服务不自动启动,远程无法连接
- 开启开机自启:systemctl enable sshd,重启虚拟机后服务自动启动,远程可正常连接
2.6.2关键结论
- enabled(开机自启)≠ active(正在运行),二者独立不关联
- 操作核心:启停服务用start/stop,控制自启用enable/disable,查看状态用status
三、unit配置文件
开发一个study服务
脚本说明:这是一个无限循环的脚本,每 5 秒会向 /var/log/study.log 文件中追加一行包含当前时间的日志,内容为 [时间]: I’M studying [ Linux ] 。
3.1写入study的shell脚本
[root@C001 ~ 13:51:41]# vim /usr/local/bin/study
#脚本运行时会自动创建/var/log/study.log
#!/bin/bash
# 第一行内容是脚本的 "解释器声明"(shebang),指定该脚本使用 /bin/bash 作为解释器执行。系统会根据这一行找到对应的 shell 程序来解析后续命令。
# 启动一个无限循环:while 是循环关键字,true 是一个永远为真的条件,因此这个循环会一直执行下去,直到被外部终止(如 Ctrl+C)。
while true
# 循环体的开始标记,do 和后面的 done 之间的内容是循环中重复执行的命令。
do
# 执行 date 命令(获取当前系统时间),并通过 $(...) 捕获其输出,将结果赋值给变量 DATE。
DATE=$(date)
# echo 命令输出字符串,其中 $DATE 会被替换为变量的值
# >> 是追加重定向符号,将输出内容追加到 /var/log/study.log 文件中
# 最终输出内容类似 Fri Oct 31 10:00:00 CST 2025: I'M studying [ Linux ]。
echo "$DATE: I'M studying [ Linux ]" >> /var/log/study.log
# 让脚本暂停执行 5 秒(sleep 命令用于延迟,单位默认为秒),避免循环执行过快。
sleep 5
# 循环体的结束标记,与前面的 while 和 do 配合,标志着一次循环的结束。
done
添加执行权限
[root@C001 ~ 13:52:52]# chmod +x /usr/bin/study
3.2创建study服务配置文件
[root@C001 ~ 13:28:12]# cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/studyd.service
使用vim编辑器修改studyd
[root@C001 ~ 14:08:19]# vim /etc/systemd/system/studyd.service
[root@C001 ~ 14:11:15]# cat /etc/systemd/system/studyd.service
[Unit]
Description=study server daemon
[Service]
ExecStart=/usr/local/bin/study
[Install]
WantedBy=multi-user.target
通知systemd读取unit变化
[root@C001 ~ 14:10:22]# systemctl daemon-reload
启用并启动服务
[root@C001 ~ 14:10:32]# systemctl start studyd
[root@C001 ~ 14:10:39]# systemctl enable studyd
查看服务状态
[root@C001 ~ 14:10:48]# systemctl status studyd
studyd.service - study server daemon
Loaded: loaded (/etc/systemd/system/studyd.service; enabled)
Active: active (running) since 四 2026-04-02 14:10:39 CST; 15s ago
Main PID: 80125 (study)
CGroup: /system.slice/studyd.service
├─80125 /bin/bash /usr/bin/study
└─80378 sleep 5
4月 02 14:10:39 C001 systemd[1]: Started study server daemon.
3.3验证日志
#选项f表明实时跟踪
[root@C001 ~ 14:10:55]# tail -f /var/log/study.log
2026年 04月 02日 星期四 14:07:39 CST: I'M studying [ Linux ]
2026年 04月 02日 星期四 14:07:44 CST: I'M studying [ Linux ]
2026年 04月 02日 星期四 14:07:49 CST: I'M studying [ Linux ]
2026年 04月 02日 星期四 14:07:54 CST: I'M studying [ Linux ]
2026年 04月 02日 星期四 14:10:39 CST: I'M studying [ Linux ]
2026年 04月 02日 星期四 14:10:44 CST: I'M studying [ Linux ]
2026年 04月 02日 星期四 14:10:49 CST: I'M studying [ Linux ]
2026年 04月 02日 星期四 14:10:54 CST: I'M studying [ Linux ]
2026年 04月 02日 星期四 14:10:59 CST: I'M studying [ Linux ]
2026年 04月 02日 星期四 14:11:04 CST: I'M studying [ Linux ]
2026年 04月 02日 星期四 14:11:09 CST: I'M studying [ Linux ]
2026年 04月 02日 星期四 14:11:14 CST: I'M studying [ Linux ]
3.4总结
开发服务:
-
准备服务程序,放在/usr/local/bin/study
-
/usr/bin → 系统自带
-
/usr/local/bin → 你自己的,推荐放这里
-
-
准备服务配置文件 /etc/systemd/system/studyd.service (
文件名 = 服务名,此时studyd就是服务名,程序后面的d,daemon,守护称呼) -
通知systemd 变化 systemctl daemon-reload
-
激活服务
systemctl enable studyd systemctl start studyd
四、vim 编辑文件
- dd整行整行删除
- d‘n’d从光标开始的位置删除n行
- V选中,可以多行选中
- :set nu 显示行号
- :n1,n2d 删除n1~n2行
- /string 搜索并定位到特定字符串为止
- cw 替换一个单词(自动进入插入模式),输入替换词,按esc
- ZZ 保存退出
- u 撤销上一步操作;
- dgg 删除光标之前的所有行
五、OpenSSH服务管理
5.1sshd建立连接流程分析
5.1.1通过Windows命令提示符
抓包结果:

win提示符界面:

5.1.2使用finalshell终端
抓包结果:

5.1.3分析
ARP 阶段:虚拟机通过广播拿到宿主机的 MAC 地址。
三次握手阶段:客户端和服务端建立 TCP 连接通道。
SSH 交互阶段:双方在已建立的 TCP 通道上,进行 SSH 版本协商、密钥交换等认证流程。
5.2ssh工具配置文件
如果.ssh目录不存在,执行以下命令
[laoma@centos7 ~ 16:12:21]$ ssh localhost # 然后ctrl+c 停止即可
5.2.1准备配置文件
[he@C001 ~ 16:10:34]$ cp /etc/ssh/ssh_config .ssh/config
[he@C001 ~ 16:14:27]$ vim .ssh/config
[he@C001 ~ 18:45:37]$ cat .ssh/config
Host *
# ForwardAgent no
# ForwardX11 no
# RhostsRSAAuthentication no
# RSAAuthentication yes
# PasswordAuthentication yes
# HostbasedAuthentication no
# GSSAPIAuthentication no
# GSSAPIDelegateCredentials no
# GSSAPIKeyExchange no
# GSSAPITrustDNS no
# BatchMode no
# CheckHostIP yes
# AddressFamily any
# ConnectTimeout 0
StrictHostKeyChecking no#首次登录不要提示输入yes/no(不要对主机key校验)
User root#新增User行指明默认登录用户
5.2.2验证
[he@C001 ~ 18:46:44]$ ssh 192.168.242.103
root@192.168.242.103's password:
Last login: Thu Apr 2 17:26:07 2026 from 192.168.242.1
5.3ssh命令行传递密码工具sshpass
5.3.1安装依赖
[root@C001 ~ 15:47:51]# yum install sshpass -y
5.3.2验证
[he@C001 ~ 18:55:34]$ sshpass -p 123456 ssh root@192.168.242.103 id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
5.4ssh连接的三种方式
- ssh 用户名(ssh 主机IP)
- ssh 用户名@IP
- ssh 用户名@IP 命令

更多推荐

所有评论(0)