Linux 作为一个开源操作系统,拥有丰富而强大的命令行工具,可以方便地管理和监控系统的硬件资源。本文将介绍如何使用命令行工具来管理和监控 CPU、内存、磁盘、网络等系统硬件资源,并提供相应的代码实例。
使用 top 命令可以查看当前系统中 CPU 占用率最高的进程。下面的命令将显示系统中所有进程的 CPU 使用情况:
```
top
```
此外,还可以使用 pidstat 命令来查看某个进程的 CPU 使用情况,如下所示:
```
pidstat 1 5
```
以上命令将每秒钟显示一次进程的 CPU 使用情况,持续 5 秒钟。其中,“1”表示每秒钟执行一次,而“5”表示共执行 5 次。
使用 free 命令可以查看系统的内存使用情况。以下是 free 命令的使用方法:
```
free -m
```
其中,“-m”参数指定以 MB 为单位显示内存使用情况。可以通过这种方式查看系统中剩余的内存、已使用的内存和缓存/缓冲区的使用情况。此外,还可以使用 top 命令来查看内存占用情况。
```
top -o %MEM
```
以上命令将列出 CPU 占用率前十的进程,其中第二列显示的是进程的内存占用率。
使用 df 命令可以查看系统中的磁盘使用情况。以下是 df 命令的使用方法:
```
df -h
```
其中,“-h”参数指定以人类可读的方式显示磁盘使用情况。可以通过这种方式查看磁盘的总容量、已使用的容量、剩余容量和使用百分比。此外,还可以使用 du 命令来查看某个目录或文件的大小。
```
du -sh /path/to/directory
```
以上命令将显示指定目录的总大小,并以人类可读的方式显示。如果要递归地查看目录下所有文件和子目录的大小,则需要添加“-a”参数。
使用 netstat 命令可以查看系统中的网络连接情况。以下是 netstat 命令的使用方法:
```
netstat -tulnp
```
其中,“-t”参数指定查看 TCP 连接,“-u”参数指定查看 UDP 连接,“-l”参数指定查看正在监听的连接,“-n”参数指定查看端口号而非服务名,“-p”参数指定显示进程 ID。可以通过这种方式查看当前系统中所有的 TCP 和 UDP 连接。
下面是一个使用 Python 语言编写的系统监控程序,可以监控 CPU、内存、磁盘和网络等硬件资源的使用情况,并将监控结果输出到控制台:
```
import psutil
import time
def main():
while True:
print('='*20, 'System Monitoring', '='*20)
print('CPU Usage:', psutil.cpu_percent(interval=1, percpu=True))
print('Memory Usage:', psutil.virtual_memory())
print('Disk Usage:', psutil.disk_usage('/'))
print('Network Connections:', len(psutil.net_connections()))
time.sleep(5)
if __name__ == '__main__':
main()
```
以上程序使用 psutil 模块来获取系统的硬件资源使用情况,使用 time 模块来定时输出监控结果。可以通过修改代码来更改监控间隔、监控的硬件资源以及输出方式等。
使用 iostat 命令可以查看系统的硬盘IO使用情况。以下是 iostat 命令的使用方法:
```
iostat -x
```
该命令将显示每个硬盘的平均IO使用率、传输速率、等待时间和服务时间等信息。通过查看硬盘的IO情况,可以判断系统是否存在IO瓶颈。
使用 ifstat 命令可以实时监测系统的网络带宽使用情况。以下是 ifstat 命令的使用方法:
```
ifstat -t
```
该命令将以表格形式显示每个网络接口的传输速率,包括上传和下载速率。可以通过这种方式监控系统的网络带宽占用情况。
使用 sensors 命令可以查看系统的温度传感器信息。以下是 sensors 命令的使用方法:
```
sensors
```
该命令将显示每个温度传感器的当前温度。可以通过这种方式监控系统的温度情况,以避免过热问题。
除了使用现有的命令行工具,还可以编写自己的脚本来管理和监控系统的硬件资源。下面是一个使用Bash语言编写的简单示例:
```bash
#!/bin/bash
# 获取CPU使用率
cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
# 获取内存使用情况
memory_usage=$(free -m | grep Mem | awk '{print $3}')
# 获取磁盘使用情况
disk_usage=$(df -h | awk '/\/$/ {print $5}')
# 获取网络连接数量
network_connections=$(netstat -tuln | grep -c 'ESTABLISHED')
# 输出监控结果
echo "CPU Usage: $cpu_usage%"
echo "Memory Usage: $memory_usage MB"
echo "Disk Usage: $disk_usage"
echo "Network Connections: $network_connections"
```
以上脚本使用各种命令行工具来获取CPU使用率、内存使用情况、磁盘使用情况和网络连接数量,并将结果输出到控制台。
欢迎加入我们的嵌入式学习群!作为这个群的一员,你将有机会与嵌入式系统领域的专业人士和爱好者们交流、分享经验和学习资源。群内涵盖了各种嵌入式系统的应用和开发,无论你是初学者还是经验丰富的专业人士,都能在这里找到志同道合的伙伴和有益的互动。无论你是对物联网、智能家居、工业自动化等领域感兴趣,还是希望分享你自己的项目和经验,我们的群都会为你提供一个广阔的交流平台。
更多学习资源在这里:扫码进群领资料