2023-2024-1 20232809《Linux内核原理与分析》第十三周作业

目录

Linux安全类实验

一、Linux系统监控常用命令

(1)CPU 监控 top

(2)虚拟内存监控 vmstat

(3)列出打开的文件:lsof

(4)网络包分析器:tcpdump

(5)网络状态统计:netstat

(6)进程监控:htop

(7)输入/输出统计:iostat

(8)实时局域网 IP 监控:IPTraf

(9)服务管理程序:sysv-rc-conf

(10)监视每个进程使用的网络带宽:NetHogs

(11)监视网络带宽:iftop

(12)System Monitor(图形化监视)

二、Linux系统监控工具——Nagios

(1)安装

(2)查看配置文件分布

(3)访问测试

(4)使用 Nagios 

三、Linux监控的python脚本

(1)CPU 监测

(2)Python 实现系统负载监测

(3)Python 实现内存信息的获取

(4)Python 实现网络接口的监测

四、结果

GPT辅助学习


Linux安全类实验

一、Linux系统监控常用命令

(1)CPU 监控 top

Linux 下的 top 命令是一个性能监控程序,许多系统管理员常常用它来监控 Linux 性能,在许多 Linux 或者类 Unix 操作系统里都有这个命令。top 命令用于按一定的顺序显示所有正在运行而且处于活动状态的实时进程,而且会定期更新显示结果。这条命令显示了 CPU 的使用率、内存使用率、交换内存使用大小、高速缓存使用大小、缓冲区使用大小,进程 PID、所使用命令以及其他。它还可以显示正在运行进程的内存和 CPU 占用多的情况。

在图中依次可以看到进程 PID,进程用户,CPU 使用率,内存使用率、交换内存使用大小等等信息。top 命令提供了实时的对系统处理器的状态监视,它将显示系统中 CPU 最“敏感”的任务列表。

通过man top可以查看到详细的 top 命令使用方式。

(2)虚拟内存监控 vmstat

Linux 的 vmstat 命令用于显示虚拟内存、内核线程、磁盘、系统进程、I/O 块、中断、CPU 活动等的统计信息。

一般 vmstat 工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。

(3)列出打开的文件:lsof

它常用于以列表的形式显示所有打开的文件和进程。打开的文件包括磁盘文件、网络套接字、管道、设备和进程。使用这条命令的主要情形之一就是在无法挂载磁盘和显示正在使用或者打开某个文件的错误信息的时候,使用这条命令,你可以很容易地看到正在使用哪个文件。

(4)网络包分析器:tcpdump

tcpdump 是最广泛使用的网络包分析器或者包监控程序之一,它用于捕捉或者过滤网络上指定接口上接收或者传输的 TCP/IP 包。它还有一个选项用于把捕捉到的包保存到文件里,以便以后进行分析。

(5)网络状态统计:netstat

netstat 是一个用于监控进出网络的包和网络接口统计的命令行工具。它是一个非常有用的工具,系统管理员可以用来监控网络性能,定位并解决网络相关问题。

(6)进程监控:htop

htop 是一个非常高级的交互式的实时 Linux 进程监控工具。它和 top 命令十分相似,但是它具有更丰富的特性,例如用户可以友好地管理进程,快捷键,垂直和水平方式显示进程等等。htop 是一个第三方工具,它不包含在 Linux 系统中,你需要使用管理工具去安装它。

(7)输入/输出统计:iostat

iostat 是一个计算机系统监视工具,用于收集和显示操作系统存储的输入和输出统计数据。这个工具常常用来追踪存储设备的性能问题,其中存储设备包括本地磁盘以及诸如用 NFS 等的远端磁盘。

(8)实时局域网 IP 监控:IPTraf

IPTraf 是一个在 Linux 控制台运行的、开放源代码的实时网络(局域网)监控应用。它采集了大量信息,比如通过网络的 IP 流量监控,包括 TCP 标记、ICMP 详细信息、TCP/UDP 流量分离、TCP 连接包和字节数。同时还采集有关接口状态的常见信息和详细信息:TCP、UDP、IP、ICMP、非 IP,IP 校验和错误,接口活动等。

(9)服务管理程序:sysv-rc-conf

Linux 系统任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务都不同,所要完成的工作和要达到的目的都不同,系统可以在这些运行级之间进行切换,以完成不同的工作。sysv-rc-conf 是一个强大的服务管理程序,用于查看程序和服务的运行级别。

操作界面十分简洁,你可以用鼠标点击,也可以用键盘方向键定位,用空格键选择在启动级中开启或关闭程序,用 Ctrl+N 翻下一页,用 Ctrl+P 翻上一页,用 Q 退出。 

(10)监视每个进程使用的网络带宽:NetHogs

NetHogs 是一个开放源源代码的很小程序(与 Linux 下的 top 命令很相似),它密切监视着系统上每个进程的网络活动。同时还追踪着每个程序或者应用所使用的实时网络带宽。

(11)监视网络带宽:iftop

iftop 是另一个在控制台运行的开放源代码系统监控应用,它显示了系统上通过网络接口的应用网络带宽使用(源主机或者目的主机)的列表,这个列表定期更新。iftop 用于监视网络的使用情况,而 top 用于监视 CPU 的使用情况。iftop 也是 top 工具系列中的一员,它用于监视所选接口,并显示两个主机间当前网络带宽的使用情况。
 

(12)System Monitor(图形化监视)

gnome-system-monitor 是 GNOME 系统监视器,能够监听 CPU,内存,进程,硬盘的信息。分为进程监控,资源监控,文件监控:

进程监控:包括进程名,用户,CPU 占用率,进程 PID,内存占用,优先级:

资源监控是对历史资源使用的统计,将其绘制成图展现,从图中可以看出 CPU 使用率的变化,存储占用率变化,带宽占用率变化。

二、Linux系统监控工具——Nagios

(1)安装

(2)查看配置文件分布

(3)访问测试

在火狐浏览器中输入下面的网址进入 nagios,用户名为 nagiosadmin 密码为安装时设定的密码效果如下图所示:

(4)使用 Nagios 

在 nagios 的 web 页面中,可以看到一些目录,点击左边目录中的“service”,可查看所有用户的服务状态详细信息。

三、Linux监控的python脚本

Linux 系统为管理员提供了非常好的方法,使其可以在系统运行时更改内核,而不需要重新引导内核系统,这是通过/proc 虚拟文件系统实现的。/proc 文件虚拟系统是一种内核和内核模块用来向进程(process)发送信息的机制,这个伪文件系统允许与内核内部数据结构交互,获取有关进程的有用信息,在运行中改变设置(通过改变内核参数)。与其他文件系统不同,/proc 存在于内存而不是硬盘中。

proc 文件系统提供的信息如下:

进程信息:系统中的任何一个进程,在 proc 的子目录中都有一个同名的进程 ID,可以找到 cmdline、mem、root、stat、statm 以及 status。某些信息只有超级用户可见,例如进程根目录。每一个单独含有现有进程信息的进程有一些可用的专门链接,系统中的任何一个进程都有一个单独的自链接指向进程信息,其用处就是从进程中获取命令行信息。

CPU 信息:/proc/CPUinfo 文件可以获得中央处理器的当前准确信息。

负载信息:/proc/loadavg 文件包含系统负载信息。

系统内存信息:/proc/meminfo 文件包含系统内存的详细信息,其中显示物理内存的数量、可用交换空间的数量,以及空闲内存的数量等。

(1)CPU 监测

在 cpu.py 中写入以下代码:

运行此 python 文件:

程序简要解析:

读取/proc/CPUinfo中的信息,返回 list,每核心一个 dict。

其中 list是一个使用方括号括起来的有序元素集合。list可以作为以 0 下标开始的数组。

dict是 Python 的内置数据类型之一,它定义了键和值之间一对一的关系。

OrderedDict 是一个字典子类,可以记住其内容增加的顺序。常规 dict 并不跟踪插入顺序,迭代处理时会根据键在散列表中存储的顺序来生成值。在 OrderedDict 中则相反,它会记住元素插入的顺序,并在创建迭代器时使用这个顺序。

(2)Python 实现系统负载监测

写入如下代码:

操作截图:

程序简要解析:

从/proc/loadavg中获取当前负载的信息

import os :Python 中 import 用于导入不同的模块,包括系统提供和自定义的模块。其基本形式为:import 模块名 [as 别名],如果只需要导入模块中的部分或全部内容可以用形式:from 模块名 import *来导入相应的模块。OS 模块 os 模块提供了一个统一的操作系统接口函数,os 模块能在不同操作系统平台如 nt,posix 中的特定函数间自动切换,从而实现跨平台操作。

(3)Python 实现内存信息的获取

代码如下:操作截图:

代码简要解析:

读取proc/meminfo中的信息, Python 字符串的split方法是用的频率还是比较多的。比如我们需要存储一个很长的数据,并且按照有结构的方法存储,方便以后取数据进行处理。当然可以用json的形式,但是也可以把数据存储到一个字段里面,然后有某种标示符来分割。Python 中的strip用于去除字符串的首位字符,最后打印出内存总数和空闲数

(4)Python 实现网络接口的监测

代码如下: 

 操作截图:

代码简要解析:

读取/proc/net/dev 中的信息,Python 中文件操作可以通过 open 函数,这的确很像 C 语言中的 fopen。通过 open 函数获取一个 file object,然后调用 read(),write()等方法对文件进行读写操作。

另外, Python 将文本文件的内容读入可以操作的字符串变量非常容易。文件对象提供了三个“读”方法: read()、readline() 和 readlines()。每种方法可以接受一个变量以限制每次读取的数据量,但它们通常不使用变量。

.read()每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。然而.read()生成文件内容最直接的字符串表示,但对于连续的面向行的处理,它却是不必要的,并且如果文件大于可用内存,则不可能实现这种处理。

.readline() 和 .readlines()之间的差异是后者一次读取整个文件,像 .read() 一样。.readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for … in … 结构进行处理。

另一方面,.readline() 每次只读取一行,通常比 .readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 .readline()。

最后清单是打印出网络接口的输入和输出情况。

四、结果

GPT辅助学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值