欢迎光临散文网 会员登陆 & 注册

监控运维命令详解

2023-06-07 16:05 作者:chaojilaji123  | 我要投稿

需要关注持续更新的朋友可以关注下面的链接:

[运维相关合集地址](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5MjY4OTQ2Nw==&action=getalbum&album_id=2961710361051660289&scene=173&from_msgid=2247484158&from_itemidx=1&count=3&nolastread=1#wechat_redirect)

# 监控类命令

## watch命令


`watch`命令是一个用于在命令行界面下执行指定命令或脚本,并周期性地显示其输出结果的实用程序。它可以帮助你监视命令的实时输出,以便持续跟踪命令的执行情况。


`watch`命令的常见语法如下:


```shell

watch [选项] 命令

```

其支持的选项如下:


+ `-n`:指定刷新间隔,即执行命令的时间间隔。例如,`watch -n 5`表示每隔5秒执行一次命令,默认值为2秒。


+ `-d`:高亮显示输出结果中发生变化的部分。这可以帮助你快速注意到输出结果的变化。


+ `-t`:在输出结果的顶部显示当前时间。


+ `-c`:清除屏幕上的输出结果,每次刷新时都会清除屏幕并显示最新的输出。


+ `-b`:以批处理模式运行`watch`命令,即不接受输入并将其输出写入文件。这在将`watch`命令与其他命令或脚本结合使用时很有用。


+ `--color`:强制显示输出结果的颜色。这对于支持颜色的命令或脚本很有用。


通过使用`watch`命令,你可以方便地监视系统状态、实时查看日志文件的变化、观察进程的运行情况等。它在调试和监控系统时非常有用,以及在需要持续追踪某些命令输出的情况下使用。



### 后面跟双引号

如果连接的命令比较长,可以使用双引号括起来的方式

例如:

```shell

watch -n 5 -d "ps -aux | grep java"

```

## ps命令

`ps`命令是一个用于查看当前正在运行的进程信息的实用程序。它提供了多种用法和选项,以下是一些常见的用法:


1. 显示当前用户的所有进程:

   ```

   ps

   ```


2. 显示所有进程的详细信息:

   ```

   ps -ef

   ```


3. 显示当前用户的所有进程及其层次结构(树状显示):

   ```

   ps -ef --forest

   ```


4. 以树状结构显示指定进程及其子进程:

   ```

   ps -f --forest -p <PID>

   ```


5. 显示所有进程的信息,包括进程的状态、占用的CPU和内存等:

   ```

   ps aux

   ```


6. 仅显示当前用户的进程,并以用户为单位进行分组:

   ```

   ps ux

   ```


7. 以持续更新的方式显示进程信息:

   ```

   ps -ef --forest --forest

   ```


8. 查找指定进程名的进程:

   ```

   ps -ef | grep <进程名>

   ```


9. 查看指定用户的进程:

   ```

   ps -u <用户名>

   ```


## pstree命令

`pstree`命令是一个用于以树状结构显示进程层次关系的实用程序。它以可读性较好的方式显示进程之间的父子关系,帮助用户更好地理解和分析系统中的进程结构。


`pstree`命令通常在Linux和Unix系统中预装,无需额外安装。你可以直接在终端中使用该命令。下面是使用`pstree`命令的基本语法:


```shell

pstree [选项]

```


一般情况下,你可以直接运行`pstree`命令来显示当前用户的所有进程及其层次关系。它会以树状结构的形式输出进程层次,并标示进程之间的父子关系。


`pstree`命令还提供一些选项来定制其行为,例如:


- `-p`:显示进程的PID(进程ID)。

- `-u`:显示进程的所有者。

- `-h`:高亮显示当前进程及其祖先进程。

- `-a`:显示进程的命令行参数。


你可以组合使用这些选项来满足你的需求,例如:`pstree -p -h`会显示进程的PID,并以高亮方式突出显示当前进程及其祖先进程。


需要注意的是,`pstree`命令可能需要以超级用户(root)权限运行,以显示所有进程的完整层次结构。你可以使用`sudo pstree`命令来获取完整的进程层次信息。



## free 命令

`free`命令用于显示系统的内存使用情况和交换空间(swap)情况。下面是`free`命令的详细用法:


```

free [选项]

```


常用的选项包括:


- `-h`:以人类可读的方式显示内存大小,使用K、M、G等单位。

- `-b`:以字节(Bytes)为单位显示内存大小。

- `-k`:以千字节(Kilobytes)为单位显示内存大小(默认选项)。

- `-m`:以兆字节(Megabytes)为单位显示内存大小。

- `-g`:以吉字节(Gigabytes)为单位显示内存大小。

- `-s <间隔秒数>`:连续显示内存使用情况,并指定刷新间隔。

- `-c <次数>`:指定连续显示内存使用情况的次数。


以下是一些常用的示例:


1. 显示内存和交换空间的使用情况:

   ```

   free

   ```


2. 以人类可读的方式显示内存和交换空间的使用情况:

   ```

   free -h

   ```


3. 每隔5秒连续显示内存和交换空间的使用情况:

   ```

   free -s 5

   ```


4. 显示内存和交换空间的详细信息,包括内存总量、已用内存、空闲内存等:

   ```

   free -b

   ```


`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`命令的帮助信息。


可以使用这些选项的组合来满足特定的需求。例如:


- 显示人类可读的磁盘空间使用情况,并排除特定类型的文件系统:

  ```

  df -h -x <文件系统类型>

  ```


- 显示inode的使用情况,并在最后一行显示总计的磁盘使用情况:

  ```

  df -i --total

  ```


请注意,`<文件系统类型>`是指文件系统的标识,如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 -h <目录或文件>

  ```


- 只显示目录的总计磁盘空间使用情况:

  ```

  du -sh <目录>

  ```


- 显示所有文件和目录的磁盘空间使用情况,包括子目录的详细信息:

  ```

  du -a <目录>

  ```


- 显示指定层级深度的磁盘空间使用情况:

  ```

  du --max-depth=2 <目录>

  ```


请注意,`<目录或文件>`是指要查看磁盘空间使用情况的目录路径或文件路径。你可以通过`du --help`命令获取完整的选项列表和用法说明。


### fdisk命令

`fdisk`命令是一个用于查看和管理磁盘分区的命令行工具。它可以帮助你查看磁盘的分区信息、创建新的分区、删除分区等。以下是一些常用的 `fdisk` 命令选项:


- `-l`:列出系统中的所有磁盘和分区的信息。

  ```

  fdisk -l

  ```


- `/dev/<磁盘设备名>`:指定要操作的磁盘设备,例如 `/dev/sda`。

  ```

  fdisk /dev/sda

  ```


- `n`:创建一个新的分区。

- `d`:删除一个分区。

- `p`:显示分区表的信息。

- `w`:将所做的更改写入磁盘并退出 `fdisk`。

- `q`:不保存更改并退出 `fdisk`。


请注意,使用 `fdisk` 命令进行分区操作需要以超级用户(root)权限运行。此外,对磁盘进行分区操作是一个潜在的危险操作,请确保在进行分区操作之前备份重要的数据。


以下是一个简单的分区操作示例:


1. 列出系统中的所有磁盘和分区信息:

   ```

   fdisk -l

   ```


2. 选择要操作的磁盘设备,例如 `/dev/sda`:

   ```

   fdisk /dev/sda

   ```


3. 在 `fdisk` 的交互式界面中,使用命令 `n` 创建一个新的分区,然后按照提示进行分区类型、起始位置和大小的设置。


4. 使用命令 `p` 显示分区表信息,确认分区已创建。


5. 使用命令 `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 st

MiB Mem :  31662.0 total,   4555.1 free,  26599.6 used,    507.3 buff/cache

MiB Swap:    975.0 total,    113.4 free,    861.6 used.   4554.9 avail Mem 


    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                   

1692815 root      20   0   17.7g   1.5g  20264 S   6.3   4.7   5:53.00 java


以上是top命令的一个结果,我们来简单解读一下:



1. 第一行:显示了任务(进程)的总数和状态信息。

   - `Tasks: 292 total`:系统中的任务总数。

   - `1 running`:正在运行的任务数。

   - `291 sleeping`:睡眠(等待)的任务数。

   - `0 stopped`:停止的任务数。

   - `0 zombie`:僵尸(已结束但未被父进程回收)任务数。


2. 第二行:显示了 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 时间的百分比。


3. 第三行:显示了内存的使用情况。

   - `MiB Mem`:物理内存的统计信息。

   - `31662.0 total`:总的物理内存大小。

   - `4555.1 free`:可用的物理内存大小。

   - `26599.6 used`:已使用的物理内存大小。

   - `507.3 buff/cache`:用于缓存的物理内存大小。


4. 第四行:显示了交换空间(Swap)的使用情况。

   - `MiB Swap`:交换空间的统计信息。

   - `975.0 total`:总的交换空间大小。

   - `113.4 free`:可用的交换空间大小。

   - `861.6 used`:已使用的交换空间大小。

   - `4554.9 avail Mem`:可用于新进程的内存大小。


5. 接下来的行:显示了每个任务(进程)的详细信息。

   - `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   %idle

03: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     Path

unix  2      [ ]         DGRAM                    579005   26313/systemd        /run/user/0/systemd/notify

unix  2      [ ACC ]     STREAM     LISTENING     13693    1228/zabbix_server   /run/zabbix/zabbix_server_rtc.sock


逐行进行分析:


1. `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。


2. `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`命令结果,逐行进行分析:


1. `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。


2. `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. 跳点的序号:每个跳点都会显示一个序号,表示数据包通过的跃点数。序号从1开始递增。


2. IP地址:每个跳点的IP地址将显示出来。这是数据包到达该跳点的网络设备的IP地址。


3. 主机名:如果IP地址可解析为主机名,则可能会显示主机名。这需要进行反向DNS解析,因此不是每个跳点都会显示主机名。


4. 延迟:每个跳点的延迟时间(通常以毫秒为单位)会显示出来。它表示数据包从本地主机发送到该跳点并返回的往返时间。


5. 跃点数(TTL):跃点数表示数据包到达目标所经过的跳点数量。每个数据包在经过一个跳点后,跃点数会递减,直到达到目标或跃点数为零。


6. 完成标志:当数据包到达目标主机时,会显示一个完成标志,表示`traceroute`已经到达目标并完成跟踪。


需要注意的是,由于网络环境的变化和路由策略的差异,不同跟踪的结果可能会有所不同。


当`traceroute`命令的结果中,IP地址列显示为星号(*)时,表示无法获得该跳点的IP地址信息。这通常是因为网络设备或防火墙配置的原因,导致无法获取到该跳点的准确IP地址。这种情况下,`traceroute`无法确定经过的网络节点具体的IP地址。可能的原因包括:


1. 路由器或防火墙配置了规则,不允许`traceroute`请求通过,并且返回的ICMP回复中不包含IP地址信息。

2. 跳点设备的配置问题,导致无法返回准确的IP地址信息。

3. 路由器或防火墙对`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 1500

        inet 20.20.40.232  netmask 255.255.248.0  broadcast 20.20.47.255

        inet6 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 0

        TX packets 40037370  bytes 5499509583 (5.1 GiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

        device interrupt 17  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

        inet 127.0.0.1  netmask 255.0.0.0

        inet6 ::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 0

        TX packets 5399237  bytes 819904930 (781.9 MiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


根据提供的输出,我们可以分析两个网络接口:`eno1`和`lo`。


1. `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。


2. `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`命令查看。该命令会列出系统支持的所有信号及其对应的编号。


例如,可以通过以下命令查看信号列表:


```shell

kill -l

```

### 杀死某个名称的进程

ps -aux | grep 'python3 main.py' | awk '{print $2}' | xargs kill -9


### kill、pkill和killall命令

`kill`、`pkill`和`killall`命令都用于终止正在运行的进程,但它们在使用方式和作用范围上有所不同。


1. `kill`命令:

   - 作用:向指定进程发送信号以终止它。

   - 语法:`kill [选项] <进程ID>`

   - 常用选项:

     - `-l`:列出所有可用的信号。

     - `-s <信号>`:指定要发送的信号。

   - 示例:`kill -9 1234`(发送强制终止信号9给进程ID为1234的进程)。


2. `pkill`命令:

   - 作用:根据进程名或其他属性选择并终止进程。

   - 语法:`pkill [选项] <进程名>`

   - 常用选项:

     - `-f`:使用进程的完整命令行匹配。

     - `-u <用户名>`:根据用户名选择进程。

   - 示例:`pkill -f nginx`(终止所有包含"nginx"关键字的进程)。


3. `killall`命令:

   - 作用:根据进程名终止进程。

   - 语法:`killall [选项] <进程名>`

   - 常用选项:

     - `-e`:精确匹配进程名。

     - `-u <用户名>`:根据用户名选择进程。

   - 示例:`killall -e firefox`(终止所有名为"firefox"的进程)。


需要注意的是,使用这些命令时要小心确认要终止的进程,以免意外关闭重要的进程。在使用强制终止信号(如9号信号)时,进程可能无法进行正常的清理操作,因此建议在必要时使用,并确保备份数据。




监控运维命令详解的评论 (共 条)

分享到微博请遵守国家法律