Linux从头开始学--学习笔记7--系统监控,模块与设备,top,ps,sar命令,CPU利用率、内存利用率

·  阅读 131
Linux从头开始学--学习笔记7--系统监控,模块与设备,top,ps,sar命令,CPU利用率、内存利用率

这是我参与8月更文挑战的第15天,活动详情查看:8月更文挑战

这是我从头开始学习Linux的学习笔记,后续还会更新。

记录自己的技术成长,也希望和大家分享交流,欢迎关注~

本笔记为coursera网站课程《Linux for Developers》的学习笔记

学习目标

  • Delineate the important commands and utilities present on Linux systems

  • Use the main command line utilities for monitoring system performance, memory usage, and I/O and network activity

  • Use gnome-system monitor and ksysguard for graphical performance monitoring

  • Discuss the role of kernel modules and how to load and unload them dynamically

  • Discuss how udev works to handle changes in system hardware and load device drivers at runtime

  • Use systemctl to start and stop services and enable or disable their launch at boot

首先,让我们谈谈系统监视。 Linux中使用了许多命令行实用程序 定期监视系统的性能。 每天都有简单的实用程序, 例如top,它可以让您管理CPU使用率并查看 哪些进程占用了系统上最多的资源。 还有其他程序可以检查内存使用情况, 输入/输出使用情况,网络性能等。 也有图形界面 监控效果。两个著名的每个系统上附带的是:GNOME系统监控, ksysguard,然后还有其他选择和 更强大的方法,可以从 具有图形界面的Linux发行版。 但是正如我所说,大多数Linux管理员倾向于在以下方面做很多工作: 用于监视性能和查看各种日志的命令行

我们要在这里谈论的第二件事 内核如何处理所谓的内核模块, 以及它如何管理设备Linux内核的优势之一是您可以添加 在运行时将其删除,并在不再需要时将其删除。 这些称为内核模块。 这是Linux中非常强大的系统, 我们将讨论其工作原理。 可能必须添加内核模块才能启用已添加到系统的新设备, 例如,它可能已插入USB端口, 或可能像 新的网络协议目前尚未真正运行, 但是如果您加载模块,就可以使用该功能。 就设备管理而言, 确保它非常复杂 当设备添加到系统中或在引导时找到时, 处理得当, Linux使用了称为udev的东西 ,将用户设备作为一种工具来启用此功能。

一.系统监控

1.文件传输工具

我们需要在Internet和本地计算机,或者不同计算机之间传输数据。

您有安全的Shell客户端和服务器, 例如ssh,它建立在OpenSSH实施之上, 其中包括程序,例如用于安全复制的scp,以及 sftp用于安全ftp。 rsync具有服务器和客户端实用程序,并且它们启用 远程计算机之间非常快速的文件传输和同步。 它们建立在ssh之上,并使用安全加密, rsync是一个非常强大的工具。

2.监控和性能实用程序

过程和负载监控实用程序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sCeWtDHg-1614662694925)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20201218161154570.png)]

内存监视实用程序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CGcQzhaz-1614662694929)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20201218161202373.png)]

I / O监控实用程序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TBRi6o9J-1614662694932)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20201218161210900.png)]

网络监控实用程序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sUYOe4V9-1614662694935)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20201218161217826.png)]

3.图形监控工具

Linux上有许多工具可用于监视系统的性能。 其中大多数是基于命令行的,并且 大多数系统管理员可能会在命令行上花更多的时间, 然后他们使用图形工具 但是有一些图形监视工具gnome-system-monitor随GNOME桌面一起提供。 所有统计信息都是实时生成的。 检查CPU负载, 您正在使用多少内存和交换空间, 网络字节等。

KDE有一个更强大的类似实用程序,称为ksysguard。更具可配置性, 您可以选择要显示的传感器或监视器。 您可以一次拥有许多不同的窗口。 您可以同时显示远程系统。 您可以保存自己在做什么,等等。 因此,这是ksysguard的快照,其中包含 显示了六个不同的可能的传感器或监视器。 有相当先进的图形工具 Enterprise Linux发行版所提供的功能远远超出此范围, 根据它们的特定分布。 只需将此视为可以做的事情即可。

4.使用系统监控(演示)

运行gnome-system-monitor, 上面是我的CPU历史记录的图形化图片, 对于系统上的每个CPU,只有一行。

运行:

$ gnome-system-monitor
复制代码

执行一个非常占用CPU的任务, 这是一个内核编译, 在每个CPU上并行进行。 因此,这非常占用CPU资源。 所以,让我这样做。

5.安装和运行ksysguard(实验)

CentOS(Community Enterprise Operating System)是Linux发布版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定发布的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。CentOS 对上游代码的主要修改是为了移除不能自由使用的商标。

$ ksysguard
复制代码

安装之后系统疯狂报错,网上也没找到合适答案,故打算重装系统。

报错:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xnf0OgCO-1614662694937)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20201218173904851.png)]

改用top等指令查看cpu使用情况:

top

top:动态查看进程变化,监控linux的系统状况。top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2341ye13-1614662694938)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20201218174117229.png)]

17:41:28 用户时间

up 7 min, 开机后的运行时间

1 user, 一个用户

load average: 0.04, 0.53, 0.38三个值分别代表1、5、15分钟之前到现在的cpu平均负载情况。如果数值持续大于cpu个数,那么就需要优化你的程序和架构了

atop

atop命令是一个终端环境的监控命令。它显示的是各种系统资源(CPU, memory, network, I/O, kernel)的综合,并且在高负载的情况下进行了彩色标注。

htop

htop命令显示了每个进程的内存实时使用率。它提供了所有进程的常驻内存大小、程序总内存大小、共享库大小等的报告。列表可以水平及垂直滚动。

vmstat

vmstat命令显示实时的和平均的统计,覆盖CPU、内存、I/O等内容。例如内存情况,不仅显示物理内存,也统计虚拟内存。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-87Y2UNoc-1614662694939)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20201218174623310.png)]

二.内核模块和设备管理

1.加载/卸载内核模块

Linux内核中的许多功能可以在最初加载时内置于内核中,也可以在以后根据需要作为模块动态添加(或删除)为模块。实际上,除了一些最核心的内核组件之外,所有组件均设计为模块化的。

此类模块可以是设备驱动程序,也可以不是。

即使内核模块得到了广泛的使用,Linux仍保留了单片内核体系结构,而不是微内核体系结构。这是因为一旦加载了模块,它便成为内核的一个功能齐全的部分,几乎没有任何限制。**它主要通过共享资源(例如内存和锁),而不是像微内核那样通过消息传递,**与所有内核子系统进行通信。

安装方式一:

模块加载和卸载必须以root用户身份进行。如果知道完整的路径名,则始终可以使用以下命令直接加载模块:

$ sudo /sbin/insmod <路径>/module_name.ko
复制代码

设置参数,such as in:

 $ sudo /sbin/insmod <pathto>/module_name.ko irq=12 debug=3
复制代码

使用 lsmod展示模块列表:

$ lsmod
Module                  Size  Used by
nls_utf8               16384  1
isofs                  49152  1
rfcomm                 81920  4
vmw_vsock_vmci_transport    32768  2
vsock                  36864  3 vmw_vsock_vmci_transport
bnep                   24576  2
intel_rapl_msr         20480  0
intel_rapl_common      24576  1 intel_rapl_msr
crct10dif_pclmul       16384  1
crc32_pclmul           16384  0
ghash_clmulni_intel    16384  0
snd_ens1371            28672  2
aesni_intel           372736  0
crypto_simd            16384  1 aesni_intel

复制代码

卸载模块:

$ sudo /sbin/rmmod module_name
复制代码

安装方法二:

在大多数情况下,通常不使用insmodrmmod命令来加载/卸载模块,

而是先进入对应的安装文件夹,**如/ lib / modules / unamer下,其中(uname -r)**下,其中**(uname -r)**给出当前的内核版本,

使用modprobe命令,如下所示:

$ sudo /sbin/modprobe module_name
$ sudo /sbin/modprobe -r module_name
复制代码

为了使modprobe正常工作,必须将模块安装在正确的位置,通常在**/ lib / modules / unamer下,其中(uname -r)**下,其中**(uname -r)**给出当前的内核版本。

2.使用内核模块(演示)

**$(uname -r)**给出当前的内核版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IV12w6SF-1614662694940)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20201218180328855.png)]

内核模块始终具有**.ko文件扩展名,例如e1000e.ko**,ext4.konouveau.ko

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-73ZbNoG0-1614662694942)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20201218180503487.png)]

modinfo命令命令可以用来了解内核模块的信息,无论是加载与否

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zzcVe5lQ-1614662694943)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20201218180718373.png)]

操作:

安装模块

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y6rdJyys-1614662694944)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20201218182118442.png)]

删除模块

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cX2um5lX-1614662694945)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20201218182213746.png)]

3.设备管理

在对待设备文件这块,Linux改变了几次策略。目前很多的Linux分发版本采纳了udev的方式,因为它在Linux设备访问,特别是那些对设备有极端需求的站点(比如需要控制上千个硬盘)和热插拔设备(比如USB摄像头和MP3播放器)上解决了几个问题。

udev的目标是想解决上面提到的这些问题,他通采用用户空间(user-space)工具来管理/dev/目录树,他和文件系统分开。知道如何改变缺省配置能让你之大如何定制自己的系统,比如创建设备字符连接,改变设备文件属组,权限等。

主要的udev配置文件是**/etc/udev/udev.conf**。这个文件通常很短,他可能只是包含几行#开头的注释,然后有几行选项:

udev_root="/dev/"

udev_rules="/etc/udev/rules.d/"

udev_log="err"
复制代码

上面的第二行非常重要,因为他表示udev规则存储的目录,这个目录存储的是以.rules结束的文件。每一个文件处理一系列规则来帮助udev分配名字给设备文件以保证能被内核识别。

4.管理系统服务(运行和停止模块)

**每个操作系统都有通常在系统初始化时启动的服务,并且通常保持运行直到关闭。**这些服务可以随时启动,停止或重新启动,通常需要root特权。

所有相对较新的Linux发行版都采用systemd方法,该方法使用systemctl实用程序完成大部分工作。

一般来说,基于systemd的系统维护向后兼容性包装程序,因此可以使用较旧的命令。

systemctl 提供了一组子命令来管理单个的 unit,其命令格式为

$ systemctl [command] [unit]
复制代码

command 主要有:

start:立刻启动后面接的 unit。

stop:立刻关闭后面接的 unit。

restart:立刻关闭后启动后面接的 unit,亦即执行 stop 再 start 的意思。

reload:不关闭 unit 的情况下,重新载入配置文件,让设置生效。

enable:设置下次开机时,后面接的 unit 会被启动。

disable:设置下次开机时,后面接的 unit 不会被启动。

status:目前后面接的这个 unit 的状态,会列出有没有正在执行、开机时是否启动等信息。

is-active:目前有没有正在运行中。

is-enable:开机时有没有默认要启用这个 unit。

kill :不要被 kill 这个名字吓着了,它其实是向运行 unit 的进程发送信号。

show:列出 unit 的配置。

mask:注销 unit,注销后你就无法启动这个 unit 了。

unmask:取消对 unit 的注销。要显示所有systemd控件的状态,请执行以下操作:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mMMgEXcZ-1614662694946)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20201218184115411.png)]

显示所有可用服务:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J5V5dZfK-1614662694947)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20201218184142073.png)]

仅显示有效服务:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BvGVL6sN-1614662694948)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20201218184225516.png)]

还可以要启动(激活)一个或多个单元,以及停止某个单元

$ sudo systemctl start foo
$ sudo systemctl start foo.service
$ sudo systemctl start /path/to/foo.service
复制代码
$ sudo systemctl stop foo.service
复制代码

查询某个模块或服务的状态:

$ sudo systemctl status foo.service
复制代码

作业

1.top命令可以展示很多信息,整理一下;进一步指令:按某一列排序;显示的时候如何加一列少一列。

img

img

2.ps命令根据进程名查找进程id,以及查找父进程

ps命令

-a,查看所有

-u,以用户(user)的格式显示

-x, 显示后台进程运行参数

-ef,以全格式显示进程所有信息,包括父进程Pid,创建人,创建时间,进程号。等等

一般项目中,我们首先要查询一个进程,并对其进行删除会用一下命令

ps -a | grep helloworld 或

ps -ef |grep helloworld 或者其他

3.sar查近一周的系统活动

sar(System Activity Reporter,系统活动情况报告)是Linux下系统运行状态统计工具,可从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。

1. CPU利用率

sar -p (查看全天)

sar -u 1 10 (1:每隔一秒,10:写入10次)

2. 内存利用率

sar -r (查看全天)

sar -r 1 10 (1:每隔一秒,10:写入10次)

都看到这里了,不如点个赞哦~

在这里插入图片描述

分类:
后端
标签:
分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改