运维监控的几种方法
需要关注持续更新的朋友可以关注下面的链接:运维相关合集地址
监控类命令
watch 命令
watch
命令是一个用于在命令行界面下执行指定命令或脚本,并周期性地显示其输出结果的实用程序。它可以帮助你监视命令的实时输出,以便持续跟踪命令的执行情况。
watch
命令的常见语法如下:
其支持的选项如下:
-n
:指定刷新间隔,即执行命令的时间间隔。例如,watch -n 5
表示每隔 5 秒执行一次命令,默认值为 2 秒。-d
:高亮显示输出结果中发生变化的部分。这可以帮助你快速注意到输出结果的变化。-t
:在输出结果的顶部显示当前时间。-c
:清除屏幕上的输出结果,每次刷新时都会清除屏幕并显示最新的输出。-b
:以批处理模式运行watch
命令,即不接受输入并将其输出写入文件。这在将watch
命令与其他命令或脚本结合使用时很有用。--color
:强制显示输出结果的颜色。这对于支持颜色的命令或脚本很有用。
通过使用watch
命令,你可以方便地监视系统状态、实时查看日志文件的变化、观察进程的运行情况等。它在调试和监控系统时非常有用,以及在需要持续追踪某些命令输出的情况下使用。
后面跟双引号
如果连接的命令比较长,可以使用双引号括起来的方式例如:
ps 命令
ps
命令是一个用于查看当前正在运行的进程信息的实用程序。它提供了多种用法和选项,以下是一些常见的用法:
显示当前用户的所有进程:
显示所有进程的详细信息:
显示当前用户的所有进程及其层次结构(树状显示):
以树状结构显示指定进程及其子进程:
显示所有进程的信息,包括进程的状态、占用的 CPU 和内存等:
仅显示当前用户的进程,并以用户为单位进行分组:
以持续更新的方式显示进程信息:
查找指定进程名的进程:
查看指定用户的进程:
pstree 命令
pstree
命令是一个用于以树状结构显示进程层次关系的实用程序。它以可读性较好的方式显示进程之间的父子关系,帮助用户更好地理解和分析系统中的进程结构。
pstree
命令通常在 Linux 和 Unix 系统中预装,无需额外安装。你可以直接在终端中使用该命令。下面是使用pstree
命令的基本语法:
一般情况下,你可以直接运行pstree
命令来显示当前用户的所有进程及其层次关系。它会以树状结构的形式输出进程层次,并标示进程之间的父子关系。
pstree
命令还提供一些选项来定制其行为,例如:
-p
:显示进程的 PID(进程 ID)。-u
:显示进程的所有者。-h
:高亮显示当前进程及其祖先进程。-a
:显示进程的命令行参数。
你可以组合使用这些选项来满足你的需求,例如:pstree -p -h
会显示进程的 PID,并以高亮方式突出显示当前进程及其祖先进程。
需要注意的是,pstree
命令可能需要以超级用户(root)权限运行,以显示所有进程的完整层次结构。你可以使用sudo pstree
命令来获取完整的进程层次信息。
free 命令
free
命令用于显示系统的内存使用情况和交换空间(swap)情况。下面是free
命令的详细用法:
常用的选项包括:
-h
:以人类可读的方式显示内存大小,使用 K、M、G 等单位。-b
:以字节(Bytes)为单位显示内存大小。-k
:以千字节(Kilobytes)为单位显示内存大小(默认选项)。-m
:以兆字节(Megabytes)为单位显示内存大小。-g
:以吉字节(Gigabytes)为单位显示内存大小。-s <间隔秒数>
:连续显示内存使用情况,并指定刷新间隔。-c <次数>
:指定连续显示内存使用情况的次数。
以下是一些常用的示例:
显示内存和交换空间的使用情况:
以人类可读的方式显示内存和交换空间的使用情况:
每隔 5 秒连续显示内存和交换空间的使用情况:
显示内存和交换空间的详细信息,包括内存总量、已用内存、空闲内存等:
free
命令的输出结果包括以下字段:
total
:总内存量。used
:已使用的内存量。free
:可用的内存量。shared
:被共享的内存量。buffers
:被缓冲的内存量。cached
:被缓存的内存量。Swap
:交换空间的总量、已使用量和空闲量。
这些字段描述了系统内存的不同方面和用途。以下是这些字段之间的关系:
total
:表示系统中的总内存量,包括物理内存和交换空间。used
:表示已被系统和进程使用的内存量,包括正在使用的物理内存和交换空间。free
:表示当前未被使用的内存量,包括未被系统和进程使用的物理内存和交换空间。shared
:表示被多个进程共享的内存量。这包括通过共享内存机制分配的内存,例如共享库、共享内存段等。buffers
:表示被内核用于缓冲数据的内存量。这些缓冲区用于加速磁盘读写操作,以提高系统性能。cached
:表示被内核缓存的文件数据的内存量。当文件被读取时,内核会将数据缓存到内存中,以便更快地响应后续读取请求。Swap
:表示交换空间的相关信息,包括总交换空间量、已使用的交换空间量和可用的交换空间量。交换空间用于在物理内存不足时暂时存储和交换出不常用的内存页。
总体上,used
包括了 shared
、buffers
、cached
和实际被进程使用的内存。而 free
则表示未被系统和进程使用的内存,包括未被缓冲和缓存的空闲内存。
需要注意的是,这些值是基于当前时刻的快照,内存使用情况是动态变化的,因此在不同时间查询时,这些值可能会有所不同。
df 命令、du 命令和 fdisk 命令
这三个命令都是查看硬盘使用情况的命令
df 命令
df
命令用于显示文件系统的磁盘空间使用情况。它提供了多种选项,用于定制输出的格式和内容。以下是一些常用的选项:
-h
:以人类可读的方式显示磁盘空间大小,使用 K、M、G 等单位。-k
:以千字节(Kilobytes)为单位显示磁盘空间大小。-m
:以兆字节(Megabytes)为单位显示磁盘空间大小。-g
:以吉字节(Gigabytes)为单位显示磁盘空间大小。-i
:显示 inode 的使用情况(文件系统索引节点)。-T
:显示文件系统的类型。-t <文件系统类型>
:只显示指定类型的文件系统。-x <文件系统类型>
:排除指定类型的文件系统。--total
:在最后一行显示总计的磁盘使用情况。--exclude-type <文件系统类型>
:排除指定类型的文件系统。--help
:显示df
命令的帮助信息。
可以使用这些选项的组合来满足特定的需求。例如:
显示人类可读的磁盘空间使用情况,并排除特定类型的文件系统:
显示 inode 的使用情况,并在最后一行显示总计的磁盘使用情况:
请注意,<文件系统类型>
是指文件系统的标识,如 ext4、ntfs、vfat 等。你可以通过df --help
命令获取完整的选项列表和用法说明。
du 命令
du
命令用于显示目录或文件的磁盘空间使用情况。它可以帮助你确定文件和目录所占用的磁盘空间大小。以下是一些常用的du
命令选项:
-h
:以人类可读的方式显示磁盘空间大小,使用 K、M、G 等单位。-k
:以千字节(Kilobytes)为单位显示磁盘空间大小(默认选项)。-m
:以兆字节(Megabytes)为单位显示磁盘空间大小。-g
:以吉字节(Gigabytes)为单位显示磁盘空间大小。-s
:只显示总计的磁盘空间使用情况,而不显示每个文件和目录的详细信息。-c
:在最后一行显示总计的磁盘空间使用情况。-a
:显示所有文件和目录的磁盘空间使用情况,而不仅限于目录的总计。--exclude=<模式>
:排除符合指定模式的文件或目录。--max-depth=<层级>
:限制显示的层级深度。
你可以使用这些选项的组合来满足不同的需求。以下是一些示例:
显示目录或文件的磁盘空间使用情况,并以人类可读的方式显示大小:
只显示目录的总计磁盘空间使用情况:
显示所有文件和目录的磁盘空间使用情况,包括子目录的详细信息:
显示指定层级深度的磁盘空间使用情况:
请注意,<目录或文件>
是指要查看磁盘空间使用情况的目录路径或文件路径。你可以通过du --help
命令获取完整的选项列表和用法说明。
fdisk 命令
fdisk
命令是一个用于查看和管理磁盘分区的命令行工具。它可以帮助你查看磁盘的分区信息、创建新的分区、删除分区等。以下是一些常用的 fdisk
命令选项:
-l
:列出系统中的所有磁盘和分区的信息。
/dev/<磁盘设备名>
:指定要操作的磁盘设备,例如/dev/sda
。
n
:创建一个新的分区。d
:删除一个分区。p
:显示分区表的信息。w
:将所做的更改写入磁盘并退出fdisk
。q
:不保存更改并退出fdisk
。
请注意,使用 fdisk
命令进行分区操作需要以超级用户(root)权限运行。此外,对磁盘进行分区操作是一个潜在的危险操作,请确保在进行分区操作之前备份重要的数据。
以下是一个简单的分区操作示例:
列出系统中的所有磁盘和分区信息:
选择要操作的磁盘设备,例如
/dev/sda
:
在
fdisk
的交互式界面中,使用命令n
创建一个新的分区,然后按照提示进行分区类型、起始位置和大小的设置。使用命令
p
显示分区表信息,确认分区已创建。使用命令
w
将更改写入磁盘并退出fdisk
。
查看 cpu 情况
top 命令
Tasks: 292 total, 1 running, 291 sleeping, 0 stopped, 0 zombie%Cpu(s): 0.7 us, 0.8 sy, 0.0 ni, 98.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stMiB Mem : 31662.0 total, 4555.1 free, 26599.6 used, 507.3 buff/cacheMiB Swap: 975.0 total, 113.4 free, 861.6 used. 4554.9 avail Mem
1692815 root 20 0 17.7g 1.5g 20264 S 6.3 4.7 5:53.00 java
以上是 top 命令的一个结果,我们来简单解读一下:
第一行:显示了任务(进程)的总数和状态信息。
Tasks: 292 total
:系统中的任务总数。1 running
:正在运行的任务数。291 sleeping
:睡眠(等待)的任务数。0 stopped
:停止的任务数。0 zombie
:僵尸(已结束但未被父进程回收)任务数。第二行:显示了 CPU 的使用情况。
%Cpu(s)
:CPU 使用率的统计信息。0.7 us
:用户空间占用 CPU 的百分比。0.8 sy
:系统内核占用 CPU 的百分比。0.0 ni
:用户进程以调整优先级方式占用 CPU 的百分比。98.5 id
:CPU 空闲的百分比。0.0 wa
:等待磁盘 I/O 的百分比。0.0 hi
:硬件中断(高优先级)占用 CPU 的百分比。0.0 si
:软件中断(低优先级)占用 CPU 的百分比。0.0 st
:被虚拟化偷取的 CPU 时间的百分比。第三行:显示了内存的使用情况。
MiB Mem
:物理内存的统计信息。31662.0 total
:总的物理内存大小。4555.1 free
:可用的物理内存大小。26599.6 used
:已使用的物理内存大小。507.3 buff/cache
:用于缓存的物理内存大小。第四行:显示了交换空间(Swap)的使用情况。
MiB Swap
:交换空间的统计信息。975.0 total
:总的交换空间大小。113.4 free
:可用的交换空间大小。861.6 used
:已使用的交换空间大小。4554.9 avail Mem
:可用于新进程的内存大小。接下来的行:显示了每个任务(进程)的详细信息。
PID
:任务的进程 ID。USER
:任务的所有者。PR
:任务的优先级。NI
:任务的优先级调整值。VIRT
:任务占用的虚拟内存大小。RES
:任务占用的物理内存大小。SHR
:任务共享的内存大小。S
:任务的状态(R:运行,S:睡眠,Z:僵尸等)。%CPU
:任务占用的 CPU 使用率。`%MEM
`:任务占用的内存百分比。
TIME+
:任务已运行的总时间。COMMAND
:任务的命令名称。
以上是对 top 命令结果的详细解释,它提供了关于系统任务、CPU、内存和进程的重要信息。top
命令有许多选项可以用于定制输出和控制显示的内容。以下是一些常用的top
命令选项:
-d <秒数>
:指定更新显示的时间间隔。-n <次数>
:指定显示信息的刷新次数后退出top
。-b
:以批处理模式运行top
,将结果输出到标准输出而不是交互式界面。-c
:显示命令的完整路径而不仅仅是命令名称。-i
:忽略或显示空闲的进程。-s <字段>
:以指定的字段进行排序,例如-s %CPU
按照 CPU 使用率排序。-u <用户名>
:仅显示属于指定用户的进程。-p <进程ID>
:仅显示指定进程 ID 的信息。-H
:以线程的方式显示进程的信息。1
:切换到显示每个 CPU 核心的详细信息。t
:切换到显示进程和 CPU 的信息。
mpstat 命令
下面是该命令的一次结果
Linux 5.10.0-15-amd64 (debian-2) 06/07/2023 x86_64 (16 CPU)03:01:22 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle03:01:22 PM all 0.22 0.00 0.19 0.00 0.00 0.00 0.00 0.00 0.00 99.59
简单解读一下
03:01:22 PM
:报告生成的时间。
下面是每一列的含义:
CPU
:显示 CPU 的标识。%usr
:用户空间程序使用 CPU 的百分比。%nice
:以调整优先级方式运行的用户进程使用 CPU 的百分比。%sys
:内核空间程序使用 CPU 的百分比。%iowait
:等待 I/O 完成而处于空闲状态的 CPU 百分比。%irq
:服务硬件中断请求的 CPU 百分比。%soft
:服务软件中断请求的 CPU 百分比。%steal
:被其他虚拟化实例“偷取”的 CPU 百分比。%guest
:运行虚拟化客户机的 CPU 百分比。%gnice
:以调整优先级方式运行的虚拟化客户机的 CPU 百分比。%idle
:处于空闲状态的 CPU 百分比。
对于示例中的数据行:
all
:表示所有 CPU 的统计数据,表示所有 CPU 的平均值。%usr
:用户空间程序使用 CPU 的百分比为 0.22%。%nice
:以调整优先级方式运行的用户进程使用 CPU 的百分比为 0%。%sys
:内核空间程序使用 CPU 的百分比为 0.19%。%iowait
:等待 I/O 完成而处于空闲状态的 CPU 百分比为 0%。%irq
、%soft
、%steal
、%guest
、%gnice
:都是 0%,表示没有相关的活动。%idle
:处于空闲状态的 CPU 百分比为 99.59%。
这些统计信息显示了在报告生成的时间点上,系统中的 CPU 使用情况。
下面是一些常用的mpstat
命令选项:
-P <CPU列表>
:指定要显示统计信息的特定 CPU 列表。例如,mpstat -P 0,2
将仅显示 CPU 0 和 CPU 2 的统计信息。-u
:显示 CPU 使用率的统计信息。-I <中断类型>
:显示指定类型的中断信息。可用的中断类型包括CPU
、IRQ
、NMI
和SERR
。-V
:显示mpstat
命令的版本信息。-P ALL
:显示每个 CPU 的统计信息。-I ALL
:显示所有中断类型的统计信息。-A
:显示所有可用的统计信息。-I SUM
:显示中断摘要的统计信息。-I SUM -p ALL
:显示中断汇总信息,包括每个 CPU 的统计信息。
查看网络情况
netstat 命令
netstat
命令有多个选项,可以根据需要来显示网络连接、路由表和网络统计信息。以下是一些常用的netstat
命令选项:
-a
:显示所有的网络连接和监听端口。-t
:仅显示 TCP 协议相关的网络连接。-u
:仅显示 UDP 协议相关的网络连接。-n
:以数字形式显示 IP 地址和端口号,而不进行主机和服务名称解析。-p
:显示与每个网络连接关联的进程/程序的 PID 和名称。-r
:显示系统的路由表信息。-s
:显示网络统计信息,如传输层统计和协议统计。-l
:仅显示监听状态的网络连接。-e
:显示扩展信息,如用户、inode、计时器信息等。-c
:连续显示网络连接信息,不断刷新显示。-i
:显示网络接口的信息和统计。
下面是一个结果
Proto RefCnt Flags Type State I-Node PID/Program name Pathunix 2 [ ] DGRAM 579005 26313/systemd /run/user/0/systemd/notifyunix 2 [ ACC ] STREAM LISTENING 13693 1228/zabbix_server /run/zabbix/zabbix_server_rtc.sock
逐行进行分析:
unix 2 [ ] DGRAM 579005 26313/systemd /run/user/0/systemd/notify
Proto
:协议类型,这里是 UNIX。RefCnt
:引用计数,表示当前连接的引用数量。Flags
:标志位,这里为空。Type
:连接的类型,这里是 DGRAM(数据报套接字)。State
:连接的状态,这里没有显示具体状态。I-Node
:连接关联的 I-Node(索引节点)号。PID/Program name
:关联的进程 ID 和程序名称,这里是 26313/systemd。Path
:连接关联的路径,这里是/run/user/0/systemd/notify。unix 2 [ ACC ] STREAM LISTENING 13693 1228/zabbix_server /run/zabbix/zabbix_server_rtc.sock
Proto
:协议类型,这里是 UNIX。RefCnt
:引用计数,表示当前连接的引用数量。Flags
:标志位,这里是[ ACC ],表示连接处于"已接受"状态。Type
:连接的类型,这里是 STREAM(流套接字)。State
:连接的状态,这里是 LISTENING(监听状态)。I-Node
:连接关联的 I-Node(索引节点)号。PID/Program name
:关联的进程 ID 和程序名称,这里是 1228/zabbix_server。Path
:连接关联的路径,这里是/run/zabbix/zabbix_server_rtc.sock。
这些信息提供了关于网络连接的详细信息,包括连接类型、状态、进程关联和相关路径。
ss 命令
ss
命令是用于查看套接字(socket)信息的工具,具有比netstat
更快速和更强大的功能。以下是一些常用的ss
命令选项:
-t
:仅显示 TCP 协议相关的套接字信息。-u
:仅显示 UDP 协议相关的套接字信息。-w
:仅显示 RAW 协议相关的套接字信息。-x
:仅显示 UNIX 域套接字信息。-a
:显示所有的套接字信息,包括监听和非监听状态。-l
:仅显示监听状态的套接字信息。-o
:显示计时器信息。-e
:显示详细的套接字信息,包括用户、inode、计时器等。-i
:显示网络接口的信息和统计。-p
:显示与每个套接字关联的进程/程序的 PID 和名称。-n
:以数字形式显示 IP 地址和端口号,而不进行主机和服务名称解析。-r
:显示路由表信息。-s
:显示网络统计信息,如传输层统计和协议统计。-4
:仅显示 IPv4 套接字信息。-6
:仅显示 IPv6 套接字信息。
看看例子
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 0 20.20.40.232:ssh 10.110.0.9:23033
CLOSE-WAIT 32 0 xxx.xxx.xxx.xxx:58836 xxx.xxx.xxx.xxx:https
逐行分析为:根据提供的ss
命令结果,逐行进行分析:
ESTAB 0 0 20.20.40.232:ssh 10.110.0.9:23033
State
:套接字的状态,这里是 ESTAB,表示连接已建立。Recv-Q
:接收队列中的数据大小,这里是 0。Send-Q
:发送队列中的数据大小,这里是 0。Local Address:Port
:本地地址和端口,这里是 20.20.40.232:ssh。Peer Address:Port
:对等端(远程主机)地址和端口,这里是 10.110.0.9:23033。CLOSE-WAIT 32 0 20.20.40.232:58836 xxx.xxx.xxx.xxx:https
State
:套接字的状态,这里是 CLOSE-WAIT,表示本地端已关闭,但远程端尚未关闭连接。Recv-Q
:接收队列中的数据大小,这里是 32。Send-Q
:发送队列中的数据大小,这里是 0。Local Address:Port
:本地地址和端口,这里是 20.20.40.232:58836。Peer Address:Port
:对等端(远程主机)地址和端口,这里是 xxx.xxx.xxx.xxx:https。
这些信息提供了关于套接字的详细信息,包括套接字状态、数据队列大小和本地/远程地址与端口。
traceroute 命令
traceroute
命令用于跟踪数据包从本地主机到目标主机的路径。它通过发送一系列的数据包,逐跳地测量和显示每个跳点的延迟和路径信息。以下是一些常用的traceroute
命令选项:
-I
:使用 ICMP Echo 请求(类似于 ping)进行跟踪,默认使用 UDP。-T
:使用 TCP SYN 请求进行跟踪。-U
:使用 UDP 数据包进行跟踪,默认使用 UDP。-n
:以数字形式显示 IP 地址,而不进行主机名称解析。-q <次数>
:设置每个跳点发送的数据包数量。-w <超时时间>
:设置等待响应的超时时间。-m <跳数>
:设置跟踪的最大跳数。-p <端口号>
:指定使用的端口号。-r
:忽略路由表,直接发送数据包到目标主机。-s <源IP>
:设置源 IP 地址。-z <等待时间>
:设置每个发送数据包之间的等待时间。-f <生存时间>
:设置第一个 TTL(生存时间)的值。-l
:在最后一个跳点显示主机名称。-a
:使用 AS(自治系统)号替代 IP 地址进行显示。-A
:显示 ASN(自治系统号)信息。-w
:显示每个跳点的时延信息。
traceroute
命令的结果通常会显示每个跳点的信息,包括跳点的序号、IP 地址、主机名(如果可解析)、延迟和跃点数(TTL)。以下是traceroute
命令可能显示的一些常见结果:
跳点的序号:每个跳点都会显示一个序号,表示数据包通过的跃点数。序号从 1 开始递增。
IP 地址:每个跳点的 IP 地址将显示出来。这是数据包到达该跳点的网络设备的 IP 地址。
主机名:如果 IP 地址可解析为主机名,则可能会显示主机名。这需要进行反向 DNS 解析,因此不是每个跳点都会显示主机名。
延迟:每个跳点的延迟时间(通常以毫秒为单位)会显示出来。它表示数据包从本地主机发送到该跳点并返回的往返时间。
跃点数(TTL):跃点数表示数据包到达目标所经过的跳点数量。每个数据包在经过一个跳点后,跃点数会递减,直到达到目标或跃点数为零。
完成标志:当数据包到达目标主机时,会显示一个完成标志,表示
traceroute
已经到达目标并完成跟踪。
需要注意的是,由于网络环境的变化和路由策略的差异,不同跟踪的结果可能会有所不同。
当traceroute
命令的结果中,IP 地址列显示为星号(*)时,表示无法获得该跳点的 IP 地址信息。这通常是因为网络设备或防火墙配置的原因,导致无法获取到该跳点的准确 IP 地址。这种情况下,traceroute
无法确定经过的网络节点具体的 IP 地址。可能的原因包括:
路由器或防火墙配置了规则,不允许
traceroute
请求通过,并且返回的 ICMP 回复中不包含 IP 地址信息。跳点设备的配置问题,导致无法返回准确的 IP 地址信息。
路由器或防火墙对
traceroute
请求进行了过滤或屏蔽。
在这种情况下,traceroute
仍然会显示其他可用信息,如跳点的序号、延迟时间和跃点数(TTL),但无法提供具体的 IP 地址。
telnet 命令
telnet
命令是一个用于远程登录或测试网络连接的工具。以下是telnet
命令的一些常见选项:
-l <username>
:指定要用于登录的用户名。-p <port>
:指定要连接的目标端口号。-4
:强制使用 IPv4 地址。-6
:强制使用 IPv6 地址。-a
:尝试自动登录(自动模式)。-E
:在发送环境变量之前不等待远程主机的确认。-e <escape character>
:指定用于发送命令的转义字符。-k <realm>
:使用 Kerberos 5 认证,并指定领域。-L
:启用加密模式。-r
:在连接建立后立即打开记录文件。-x
:使用加密传输模式。-v
:显示详细的调试信息。
和 traceroute 类似
ifconfig 命令
ifconfig
命令用于查看和配置网络接口的信息,包括 IP 地址、网络掩码、MAC 地址等。以下是一些常见的ifconfig
命令选项:
<interface>
:指定要查看或配置的网络接口名称,如eth0
、wlan0
等。up
:激活指定的网络接口。down
:停用指定的网络接口。promisc
:将指定的网络接口设置为混杂模式,使其能够捕获经过该接口的所有数据包。hw <MAC address>
:设置指定网络接口的物理地址(MAC 地址)。inet <IP address> [<netmask>]
:配置指定网络接口的 IPv4 地址和可选的网络掩码。inet6 <IPv6 address>/<prefix length>
:配置指定网络接口的 IPv6 地址和前缀长度。mtu <value>
:设置指定网络接口的最大传输单元大小。broadcast <IP address>
:设置指定网络接口的广播地址。netmask <netmask>
:设置指定网络接口的网络掩码。metric <value>
:设置指定网络接口的路由度量值。txqueuelen <value>
:设置指定网络接口的传输队列长度。
这些只是ifconfig
命令的一些常用选项,实际上还有更多选项和功能可用。为了获取详细的选项列表和用法说明,您可以在命令行中输入man ifconfig
以查看ifconfig
命令的手册页。请注意,ifconfig
在一些新的 Linux 发行版中已被ip
命令所取代,因此建议尽量使用ip
命令进行网络接口的配置和管理。
来看一个例子
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 20.20.40.232 netmask 255.255.248.0 broadcast 20.20.47.255inet6 fe80::2eea:7fff:fe93:ef5e prefixlen 64 scopeid 0x20<link>ether 2c:ea:7f:93:ef:5e txqueuelen 1000 (Ethernet)RX packets 39320669 bytes 46025532065 (42.8 GiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 40037370 bytes 5499509583 (5.1 GiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0device interrupt 17
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 5399237 bytes 819904930 (781.9 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 5399237 bytes 819904930 (781.9 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
根据提供的输出,我们可以分析两个网络接口:eno1
和lo
。
eno1
接口:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>
:指示该接口处于启用状态,可以进行广播和多播通信。mtu 1500
:指定该接口的最大传输单元大小为 1500 字节。inet 20.20.40.232
:指定该接口的 IPv4 地址为 20.20.40.232。netmask 255.255.248.0
:指定该接口的 IPv4 网络掩码为 255.255.248.0。broadcast 20.20.47.255
:指定该接口的 IPv4 广播地址为 20.20.47.255。inet6 fe80::2eea:7fff:fe93:ef5e
:指定该接口的 IPv6 地址为 fe80::2eea:7fff:fe93:ef5e。prefixlen 64
:指定该接口的 IPv6 前缀长度为 64。ether 2c:ea:7f:93:ef:5e
:指定该接口的物理地址(MAC 地址)为 2c:ea:7f:93:ef:5e。txqueuelen 1000
:指定该接口的传输队列长度为 1000。RX packets
和TX packets
:指示该接口接收和发送的数据包数量。bytes
:指示该接口接收和发送的总字节数。RX errors
和TX errors
:指示该接口接收和发送的错误数据包数量。device interrupt 17
:指示该接口使用的设备中断号为 17。lo
接口:flags=73<UP,LOOPBACK,RUNNING>
:指示该接口处于启用状态,并支持环回(loopback)通信。mtu 65536
:指定该接口的最大传输单元大小为 65536 字节。inet 127.0.0.1
:指定该接口的 IPv4 地址为 127.0.0.1,即本地环回地址。netmask 255.0.0.0
:指定该接口的 IPv4 网络掩码为 255.0.0.0。inet6 ::1
:指定该接口的 IPv6 地址为::1,即本地环回地址。prefixlen 128
:指定该接口的 IPv6 前缀长度为 128。loop
:指示该接口是一个本地环回接口。txqueuelen 1000
:指定该接口的传输队列长度为 1000。RX packets
和TX packets
:指示该接口接收和发送的数据包数量。bytes
:指示该接口接收和发送的总字节数。RX errors
和TX errors
:指示该接口接收和发送的错误数据包数量。
综上所述,eno1
是一个活动的以太网接口,具有 IPv4 和 IPv6 地址,而lo
是一个本地环回接口,用于在本地进行回环测试和通信。
杀死进程的 kill 命令
kill
命令可以发送不同的信号给进程,以便控制其行为。以下是一些常见的kill
命令信号及其对应的编号:
SIGTERM (15):默认的终止信号,请求进程正常终止。
SIGHUP (1):终端挂起信号,通常用于通知进程重新加载配置文件或重新启动。
SIGINT (2):终端中断信号,通常由 Ctrl+C 键触发,用于中断正在运行的进程。
SIGKILL (9):强制终止信号,立即终止进程,无法捕获或忽略。该信号无法被阻塞、处理或忽略,是一种"杀手锏"。
SIGSTOP (19):停止信号,暂停进程的执行。类似于 Ctrl+Z 键触发的暂停操作。
SIGCONT (18):继续信号,恢复被暂停的进程的执行。
除了上述常见的信号外,还有其他信号可供使用,具体的信号列表可以通过kill -l
命令查看。该命令会列出系统支持的所有信号及其对应的编号。
例如,可以通过以下命令查看信号列表:
杀死某个名称的进程
ps -aux | grep 'python3 main.py' | awk '{print $2}' | xargs kill -9
kill、pkill 和 killall 命令
kill
、pkill
和killall
命令都用于终止正在运行的进程,但它们在使用方式和作用范围上有所不同。
kill
命令:作用:向指定进程发送信号以终止它。
语法:
kill [选项] <进程ID>
常用选项:
-l
:列出所有可用的信号。-s <信号>
:指定要发送的信号。示例:
kill -9 1234
(发送强制终止信号 9 给进程 ID 为 1234 的进程)。pkill
命令:作用:根据进程名或其他属性选择并终止进程。
语法:
pkill [选项] <进程名>
常用选项:
-f
:使用进程的完整命令行匹配。-u <用户名>
:根据用户名选择进程。示例:
pkill -f nginx
(终止所有包含"nginx"关键字的进程)。killall
命令:作用:根据进程名终止进程。
语法:
killall [选项] <进程名>
常用选项:
-e
:精确匹配进程名。-u <用户名>
:根据用户名选择进程。示例:
killall -e firefox
(终止所有名为"firefox"的进程)。
需要注意的是,使用这些命令时要小心确认要终止的进程,以免意外关闭重要的进程。在使用强制终止信号(如 9 号信号)时,进程可能无法进行正常的清理操作,因此建议在必要时使用,并确保备份数据。
评论