2022-07-26

 

Top命令

第一行,任务队列信息,同 uptime 命令的执行结果

top - 19:25:53 up 138 days,  4:42,  1 user,  load average: 0.39, 0.37, 0.34

系统当前时间,系统运行时间138天4小时42分钟; 登录了一个用户; 系统在之前 1 分钟、5 分钟、15分钟的平均负载(每隔5秒钟检查一次活跃的进程数)

第二行,Tasks任务(进程)

Tasks: 195 total,   3 running, 191 sleeping,   0 stopped,   1 zombie

系统总进程:195 3个正在运行的进程数 191个进程休眠 0个正在停止的进程数 僵尸进程: 1

第三行:CPU 信息

Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.7%id, 0.1%wa, 0.0%hi, 0.1%si, 0.0%st

0.1%us【user space】— 用户空间占用CPU的百分比。 0.1%sy【sysctl】— 内核空间占用CPU的百分比。 0.0%ni【】— 改变过优先级的进程占用CPU的百分比 99.7%id【idolt】— 空闲CPU百分比 0.1%wa【wait】— IO等待占用CPU的百分比 0.0%hi【Hardware IRQ】— 硬中断占用CPU的百分比 0.1%si【Software Interrupts】— 软中断占用CPU的百分比 0.0%st【steal time】意为虚拟时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比。

第四行:物理内存信息

KiB Mem :  1881840 total,    65412 free,  1521240 used,   295188 buff/cache

物理内存的总量1881840KB 空闲的物理内存数量65412KB 己经使用的物理内存数量1521240 295188KB作为缓冲的内存数量

第五行:交换分区(swap)信息

KiB Swap:        0 total,        0 free,        0 used.   178016 avail Mem

交换分区(虚拟内存)的总大小0 空闲交换分区的大小0 已经使用的交换分区的大小0

第六行:空行

第七行以下:各进程(任务)的状态监控

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

PID:进程ID USER:进程所有者 PR:进程优先级 NI:负值表示高优先级,正值表示低优先级 VIRT:进程使用的虚拟内存总量,单位KB。(VIRT=SWAP+RES) RES:进程使用的物理内存大小,单位KB。(RES=CODE+DATA) SHR:共享内存大小,单位KB S:进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 %CPU:该进程占用 CPU 的百分比 %MEM:进程使用的物理内存百分比 TIME+:该进程共占用的 CPU 时间,单位1/100秒 COMMAND:进程名称(命令名/命令行)

例一:

按”k”键,会提示输入要杀死进程的PID,然后会提示输入信号,信号9代表强制中止。

例二:

top -b -n 1 > /root/top.log

让top命令只执行一次,然后把执行结果保存到top.log文件中,这样就能看到所有的进程了。

例三: top 命令如果不正确退出,则会持续运行。在 top 命令的交互界面中按 “q” 键会退出 top 命令

例四 如果只想让 top 命令查看某个进程,就可以使用 “-p 选项”

top -p pid

进程线程协程

进程

  • 是正在运行的程序的实例。
  • 是系统进行资源分配和调度的基本单位,是操作系统结构的基础。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对比较稳定安全。
  • 进程分配CPU 的性能和运行的时间片,不能让一个闲着,单个 CPU 一次只能运行一个任务。如果一个进程跑着,就把一个 CPU 给完全占住,那是非常不合理的,这就是多进程。

线程

  • 又叫做轻量级进程,是进程的一个实体,是处理器任务调度和执行的基本单位。 一个进程可以由多个线程组成。
  • 它可与同属一个进程的其他的线程共享进程所拥有的全部资源。线程间通信主要通过共享内存,上下文切换很快,资源开销较少,而且创建线程比创建进程要快 10 倍甚至更多,但相比进程不够稳定容易丢失数据。
  • 比如打开抖音进程直播的时候,可以边看边评论,这就是多线程。

协程

  • 一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。协程基于线程,但又比线程更加轻量级的存在,这种由程序员自己写程序来管理的轻量级线程叫做用户态的轻量级线程,协程的调度完全由用户控制。
  • 节省 CPU:避免系统内核级的线程频繁切换,造成的 CPU 资源浪费。协程是用户态的线程,用户可以自行控制协程的创建于销毁,极大程度避免了系统级线程上下文切换造成的资源浪费
  • 节约内存:一个线程需要分配 8MB 栈内存和 64MB 堆内存,系统内存的制约导致我们无法开启更多线程实现高并发。而在协程编程模式下,可以轻松有十几万协程,这是线程无法比拟的;
  • 稳定:前面提到线程之间通过内存来共享数据,这也导致了一个问题,任何一个线程出错时,进程中的所有线程都会跟着一起崩溃。
  • 开发效率:使用协程在开发程序之中,可以很方便的将一些耗时的IO操作异步化,例如写文件、耗时 IO 请求等。

多进程和多线程的主要区别是:1、线程是进程的子集,一个进程可能由多个线程组成;2、多进程的数据是分开的,共享复杂,需要用IPC,但同步简单;3、多线程共享进程数据,共享简单,但同步复杂。

image

网络排错

排错

现代网络模型参考OSI设计的,排错参考OSI模型分层,或者二分法。 在这里插入图片描述

物理链路

使用ethtool命令,查看打印结果中的“Link detected”项目是否是“yes”,查看网线是否接好。

在这里插入图片描述 检查本机IP地址,路由、DNS设置

分别Ping目标域名和IP看是否连通以及DNS设置是否正常。

DNS:

nslookup www.baidu.com
dig www.baidu.com

vi /etc/resolv.conf,修改本机的DNS服务器 vi /etc/hosts,修改自己设置的DNS对应规则

路由:traceroute -I www.baidu.com( -I 使用ICMP回应取代UDP)

在这里插入图片描述

在这里插入图片描述

发送icmp回显请求如果成功说明三层可达 ping不通的三层原因一般是路由不可达或流量过滤

ping

  • icmp重定向
  • icmp目标主机不可达
  • icmp请求回显超时

tracert/tracepath/traceroute

  • 发送icmp回显请求,ttl分别为1,2,3…收到TTL超时消息,就可以知道经过的设备,如果路径中显示*说明设备没有回程路由或者有安全设置不返回icmp信息

telnet/tcping/curl

  • 尝试访问一个端口,可以检测端口开放状态。端口不通的4层原因一般是服务没起或防火墙/安全组过滤。 在这里插入图片描述

抓包工具TCPDUMP/WIRESHARK

1.网卡 2.局域网内设备网关 3.本机IP参数 4.路由 5.DNS 6.Internet防火墙 7.服务器