一、OSI七层模型和TCP/IP五层模型
OSI七层模型
- 应用层:实际应用程序之间的接口,是人机交互的场所,为计算机用户提供应用接口,也为用户直接提供各种网络服务。
- 表示层: 向应用层提供数据,并数据的转换和编码,以及代码的格式化,使数据标准化,确保数据能够让另一系统的应用层所识别
- 会话层:在表示层实体之间建立、管理和终止会话;将用户数据分离;对设备间的对话进行控制,协调和组织各应用程序之间的通信,具有单工、半双工和全双工三种模式。
- 传输层:负责将数据进行分段并重组为数据流,建立主机端到端的链接,为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。对上层应用程序进行多路复用,建立会话以及拆除虚电路。
- 网络层:管理设备编制、跟踪设备在网络中的位置并确定最佳的数据传输路径,负责在位于不同网络中的设备之间传输数据流。在互联网中提供路由选择和拥塞控制等服务
- 数据链路层:提供数据的物理传输,并处理错误通知、网络拓扑和流量控制。将网络层传下的报文封装成帧,供物理层传输。
- 物理层:定义了要在终端系统之间激活、维护和断开物理链路所需要满足的电气、机械、规程和功能需求,确定了数据终端设备与数据通信设备之间的接口。
2、OSI模型哥层的功能:
应用层
- 提供用户界面
- 文件、打印、消息、数据库和应用程序服务
表示层
- 数据的转换、压缩和加密服务
会话层
- 对话控制
- jia将不同yingyong应用程序的数据进行分离
传输层
- 提供可靠或不可靠的端到端的传输
- 重传前的纠错处理
网络层
- 路由选择
数据链路层
- 将数据封装成帧
- 使用MAC地址ti提供介质访问
- 执行错误检测,但不纠错
物理层
- 建立数据终端设备与数据通信设备直接的接口
3、通信模式:对等通信
TCP/IP五层模型
OSI结构模型
TCP/IP模型
应用层
应用层
表示层
会话层
传输层
传输层
网络层
网络成
数据链路层
数据链路层
物理层
物理层
1、物理层
对应OSI7层模型的物理层,为数据端设备提供传送数据的通路,数据通路可以是一个物理媒体,也可以是多个物理媒体连接而成。一次完整的数据传输,包括激活(在通信的两个数据终端设备间连接起来,形成一条通路)物理连接,传送数据,终止物理连接。
2、链路层
链路层,又称为数据链路层。通常包含着操作系统中的设备驱动程序和计算机中对应的网卡。链路层负责处理将数字信号转换为电信号并形成特定的数据帧,然后以广播的方式传输给相应的接收方。
3、网络层
网络层又称为互联网层,负责处理以太帧在网络中的活动,如发送、接收、选路等等。另外网络层上使用了Ip地址作为网络层传输的网络地址,其有别与链路层的物理地址,能使得操作系统进行跨网段的互访。网络层主要功能:定义网络地址、划分网段、MAC寻址、数据包路由等。
4、运输层
运输层主要为主机之间的通信提供端到端的通信,其主要功能包括:端口定义、标识应用身份、端口之间的通信等。网络层使用两个不同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。其中TCP为主机之间的通信提供了可靠的数据传输,使用三次握手的机制来建立相应的TCP连接,以确保双方通信的可靠性。而UDP则提供了一种简单的传输方式,而简单也意味着不可靠。
5、应用层
在前面三层的多个协议及功能的支持下,应用层负责处理应用程序的相关数据。应用层定义了各种各样的协议来规范数据格式,并且可以按照对应的格式来解读数据。
应用层
- 定义了用于节点间应用程序通行的协议
- 定义了用户界面规范
传输层
- 指定了网络对分组进行逻辑传输相关的协议
- 提供可靠地端对端通信和数据传输
网络层
- 定义网络地址、划分网段、MAC寻址、数据包路由等
数据链路层
- 处理将数字信号转换为电信号并形成特定的数据帧,然后以广播的方式传输给相应的接收方。
物理层
- 为数据端设备提供传送数据的通路,数据通路可以是一个物理媒体,也可以是多个物理媒体连接而成
二、iproute家族
ip命令
ip [options] OBJECT {command | help}
options:
-r:显示主机的时候,不使用ip地址,尝试使用主句的域名显示; -s:显示更详细的信息OBJECT:={link | address | route | netns}link:网络设备配置
ip link set :改变设备属性
DEVICE:指明要管理的设备,可省略 DEVICE {up | dowm}:启用或禁用接口 DEVICE promisc {on | off} :启用或禁用接口的混杂模式 DEVICE name NEWNAME:指定接口使用新的名称 ip link show [DEVICE]:显示设备属性 ip link list:显示设备的属性列表address:协议地址管理
ip address add:添加新的IP地址
ip addr add IFADDR dev IFACE。可在统一接口上添加多个IP地址,同网段ip地址显示为secondary [label NAME]:为额外添加的ip地址指明接口别名 [broadcast ADDRESS]:广播地址,会根据ip和netmask自动计算得到 [scope scope_value]:设定地址作用域
global:全局可用 site: link:接口可用,不用于与其他主机通信 host:进本即可用route:路由管理
ip route add:添加路由
dev NAME:设置路由从哪个接口出去 via ADDRESS:下一跳地址 src ADDRESS:一个接口有多个ip地址时,要指明源地址 ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP] ip route add default via GW:添加默认路由 ip route show l list:显示路由表 ip route change:更改路由,使用格式与ip route add相同 ip route replace:替换路由,格式与ip route add相同 ip route del DESTINATION:删除路由条目 ip route flush TYPE PREFIX:清空路由表 ip route get TYPE RPEFIX:获取指定的路由条目netns:网络名称空间
ip netns add NETNAMESPACE_NAME:设定网络名称空间名 ip link set IFACE netns NETNAMESPACE_NAME:把指定接口移动到指定网络名称空间中 ip netns exec NETNAMESPACE_NAME COMMAND:在网络名称空间中执行命令 ip netns del NAME:删除指定的netns ip netns list:列出所有的netns
示例
1、为ens33网卡指定ip [root@localhost ~]# ip addr add 192.168.2.107 dev ens33 [root@localhost ~]# ip addr list 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:a4:84:0e brd ff:ff:ff:ff:ff:ff inet 192.168.2.105/24 brd 192.168.2.255 scope global noprefixroute dynamic ens33 valid_lft 6807sec preferred_lft 6807sec inet 192.168.2.107/32 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::74ad:6110:89fe:b8b2/64 scope link noprefixroute valid_lft forever preferred_lft forever 2、添加默认路由 [root@localhost ~]# ip route add default via 192.168.2.1 [root@localhost ~]# ip route default via 192.168.2.1 dev ens33 default via 192.168.2.1 dev ens33 proto dhcp metric 100 192.168.2.0/24 dev ens33 proto kernel scope link src 192.168.2.105 metric 100 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
ss命令
ss命令用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。
语法
ss [options] [FILTER]
选项
-t:查看tcp协议相关链接 -u:查看udp相关的链接 -w:查看raw socket相关的链接 -l:查看监听状态的链接 -a:查看所有状态的链接 -n:以数字格式显示 -p:查看相关的进程及其PID -e:查看扩展隔世信息 -m:显示内存用量 -o:查看计算器信息
FILTER:=[ state TCP-STATE ] [EXPRESSION]:TCP状态过滤功能
TCP的常见状态:
LISTEN:监听 ESTABLISHED:建立的连接 FIN_WAIT_1:发送断开后等待断开确认 FIN_WAIT_2:收到断开后确认断开 SYN_SENT:确认收到断开信号 SYN_RECV:确认 CLOSED:
EXPRESSION:
- dport:目标端口
- sport:源端口
示例
[root@localhost ~]# ss -tln State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:111 *:* LISTEN 0 5 192.168.122.1:53 *:* LISTEN 0 128 *:22 *:* LISTEN 0 128 127.0.0.1:631 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 127.0.0.1:6010 *:* LISTEN 0 128 :::111 :::* LISTEN 0 128 :::22 :::* LISTEN 0 128 ::1:631 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 128 ::1:6010 :::* [root@localhost ~]# ss -ptln State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:111 *:* users:(("rpcbind",pid=720,fd=8)) LISTEN 0 5 192.168.122.1:53 *:* users:(("dnsmasq",pid=1536,fd=6)) LISTEN 0 128 *:22 *:* users:(("sshd",pid=1101,fd=3)) LISTEN 0 128 127.0.0.1:631 *:* users:(("cupsd",pid=1097,fd=12)) LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=1345,fd=13)) LISTEN 0 128 127.0.0.1:6010 *:* users:(("sshd",pid=3239,fd=9)) LISTEN 0 128 :::111 :::* users:(("rpcbind",pid=720,fd=11)) LISTEN 0 128 :::22 :::* users:(("sshd",pid=1101,fd=4)) LISTEN 0 128 ::1:631 :::* users:(("cupsd",pid=1097,fd=11)) LISTEN 0 100 ::1:25 :::* users:(("master",pid=1345,fd=14)) LISTEN 0 128 ::1:6010 :::* users:(("sshd",pid=3239,fd=8))
netstat命令
netstat命令用来打印Linux中网络系统的状态信息,包括路由表、实际的网络连接及每个网络接口设备的状态信息。
语法
netstat [options]
选项参数
-r:显示路由表; -n:以数字格式显示,不解析Ip地址为主机名; -t:显示tcp协议相关的套接字连接; -u:显示udp协议的相关连接; -l:显示处于监听状态的连接; -a:显示所有连接; -p:显示相关连接及其对应的进程的名字与PID;常用选项组合:-rn,-tnl,-unl,-tunl,-tan,-tnlp
示例
1、显示路由表 [root@localhost ~]# netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default gateway 0.0.0.0 UG 0 0 0 ens33 default gateway 0.0.0.0 UG 0 0 0 ens33 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 2、查看tcp协议相关的链接 [root@localhost ~]# netstat -tln Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN tcp6 0 0 :::111 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:631 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN tcp6 0 0 ::1:6010 :::* LISTEN
route命令
-
TARGET via GW,这种格式一行是一个路由条目。
-
每三行为一个路由条目,但是同一个配置文件中不能 与第一种方式混用;
ADDRESS#=TARGET NETMASK#=MASK GATEWAY#=NEXTHOP
语法
route [options] [OBJECT] [command]
选项参数
options:
-n:以数字格式显示地址 -A:设置地址类型 -C:打印Linux核心的路由缓存OBJECT:
add:添加路由
route add [-net | -host] TARGET gw GETEWAY [dev IFNAME]
-net :后面需要跟一个网络地址,表示网络路由 -host:后面需要跟一个主机地址,表示主机路由 del:删除路由
route del [-net | -host] TARGET gw GATEWAY [dev IFNAME]
[root@localhost ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 ens33 0.0.0.0 192.168.2.1 0.0.0.0 UG 100 0 0 ens33 192.168.2.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 [root@localhost ~]# route del default gw 192.168.2.1 dev ens33 [root@localhost ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.2.1 0.0.0.0 UG 100 0 0 ens33 192.168.2.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
三、进程管理工具
ps命令
ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。
语法
ps [options]
选项参数
ps命令有三种风格:
- UNIX选项格式:类似于-a
- BSD选项格式:如aux
- GNU长选项:如–help
常用选项:
-a:显示所有与终端相关的进程 -x:显示所有与终端无关的进程 -u:以用户为中心组织进程状态信息的显示 -A:显示所有进程信息 -e:显示所有进程 -f:显示完整格式的进程信息 -F:显示更完整格式的进程信 -H:以层级结构显示进程的相关信息常用组合: aux,-ef,-eFH,-eo或-axops aux中某些列的含义:
VSZ:虚拟内存集 RSS:resident size常驻内存集 STAT:进程状态
R:running S:可中断睡眠态 D:不可中断睡眠态 T:stopped停止态 Z:zomble僵死态 +:前台进程 l:多线程进程 N:低优先级进程 <:高优先级进程 s:session leader C:cpu利用率 PSR:当前进程运行的CPU编号 START:进程的启动时间; TIME:进程的运行时间; COMMAND:进程名ps -eo | -axo
o field1······:定义显示进程信息
进程的启动方式:
- 系统启动过程中自动启动:与终端无关的进程
- 用户通过终端启动:与终端相关的进程
示例
[root@localhost ~]# ps aux | head -10 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 193772 6876 ? Ss 14:16 0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0.0 0.0 0 0 ? S 14:16 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 14:16 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 14:16 0:00 [kworker/0:0H] root 7 0.0 0.0 0 0 ? S 14:16 0:00 [migration/0] root 8 0.0 0.0 0 0 ? S 14:16 0:00 [rcu_bh] root 9 0.0 0.0 0 0 ? S 14:16 0:01 [rcu_sched] root 10 0.0 0.0 0 0 ? S< 14:16 0:00 [lru-add-drain] root 11 0.0 0.0 0 0 ? S 14:16 0:00 [watchdog/0]
top命令
top命令通常用于动态显示进程的变化信息,监控Linux系统状态。
语法
top [options]
选项
-b:bash,批次显示 -n #:显示的批次数量 -d #:指明延迟时长,单位为秒
top命令界面:
[root@localhost ~]# top -d 5 -n 3 -u wxq top - 15:42:08 up 1:26, 2 users, load average: 0.00, 0.01, 0.05 Tasks: 236 total, 2 running, 234 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 3863576 total, 2118264 free, 860124 used, 885188 buff/cache KiB Swap: 3145724 total, 3145724 free, 0 used. 2670080 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2019 wxq 20 0 317500 3916 3052 S 0.0 0.1 0:00.03 gnome-keyring-d
top命令显示的每一行的意义:
第一行
当前系统时间,即14:33:45 系统启动到现在的运行时长:up 17 min 当前一登录系统的用户数:,即2 users 系统在1,5,15分钟的平均负载,值越小表示系统越空闲,高于1说明当前系统负载过高:即load average:0.00,0.01,0.05 第二行:显示的是目前进程的总量、进程的运行态、睡眠态、停止态、僵死态进程的数量。即Tasks:….. 第三行:显示的是CPU的整体负载,若是多核心CPU,可按数字键1来切换成不同CPU的负载率
us:用户空间进程占用cpu百分比 sy:内核空间占用CPU百分比 ni:nice值调整后额外占用CPU的百分比 id:kongxian空闲百分比 wa:等待I/O完成占用的cpu百分比 hi:处理硬件终端占用CPU的百分比 si:处理软中断占用的CPU百分比 st:被虚拟机划走的CPU百分比 第四行:表示物理内存和交换分区的使用情况
total:总空间 free:空闲孔家 used:已用空间 buff/cache:用于缓冲和缓存的孔家 第五行:表示交换分区的使用情况
avail Mem:可用内存空间 第六行:默认显示空白,当在top程序中输入命令时,显示状态的地方,可输入的命令有
P:已占据CPU百分比大小排序 M:已占据内存空间大小排序 T:CPU累计占用时间排序 l:是否显示系统负载行 t:是否显示进程再要信息即CPU负载状态 1:此为数字1,平局或单独显示CPU的负载状态 m:是否显示内存相关状态信息 q:退出 s:修改延迟时间 k:终止指定进程
PID:进程ID USER:进程所属的使用者 PR:进程优先级 NI:nice值 VIRT:虚拟内存集 RES:进程当前使用的内存大小 SHR:共享内存空间大小 S:进程的状态 %CPU:CPU占用率 %MEM:内存占用率 TIME+:运行时长
1、查看用户wxq的进程状态,top每5秒刷新一次,共刷新三次
[root@localhost ~]# top -d 5 -n 3 -u wxq top - 15:42:08 up 1:26, 2 users, load average: 0.00, 0.01, 0.05 Tasks: 236 total, 2 running, 234 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 3863576 total, 2118264 free, 860124 used, 885188 buff/cache KiB Swap: 3145724 total, 3145724 free, 0 used. 2670080 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2019 wxq 20 0 317500 3916 3052 S 0.0 0.1 0:00.03 gnome-keyring-d 2041 wxq 20 0 771136 11152 6472 S 0.0 0.3 0:00.34 gnome-session-b 2050 wxq 20 0 58860 960 464 S 0.0 0.0 0:00.00 dbus-launch 2051 wxq 20 0 69260 2680 1168 S 0.0 0.1 0:00.34 dbus-daemon 2114 wxq 20 0 391720 4328 3516 S 0.0 0.1 0:00.05 imsettings-daem 2118 wxq 20 0 388776 6132 3240 S 0.0 0.2 0:00.02 gvfsd 2123 wxq 20 0 417772 3400 2720 S 0.0 0.1 0:00.00 gvfsd-fuse 2215 wxq 20 0 72384 776 0 S 0.0 0.0 0:00.02 ssh-agent 2243 wxq 20 0 346728 5652 3008 S 0.0 0.1 0:00.00 at-spi-bus-laun 2248 wxq 20 0 68368 2468 1836 S 0.0 0.1 0:00.03 dbus-daemon 2251 wxq 20 0 233036 5996 3184 S 0.0 0.2 0:00.02 at-spi2-registr 2284 wxq 20 0 3764524 192564 57500 S 0.0 5.0 0:08.78 gnome-shell 2297 wxq 9 -11 1285368 9228 4348 S 0.0 0.2 0:00.15 pulseaudio 2339 wxq 20 0 424720 5008 3808 S 0.0 0.1 0:00.01 xdg-permission- 2341 wxq 20 0 907512 28216 18332 S 0.0 0.7 0:00.12 gnome-shell-cal 2355 wxq 20 0 187356 2780 2268 S 0.0 0.1 0:00.01 dconf-service 2363 wxq 20 0 1475028 31348 20552 S 0.0 0.8 0:00.12 evolution-sourc
htop命令
htop是top的增强版,默认情况下系统没有安装,需要使用epel源来安装。是一个交互式的进程查看器。此命令的显示结果中各行和各字段的含义与top命令相同。
htop命令显示界面:
[root@localhost ~]# htop -d 5 -u wxq 1 [ 0.0%] Tasks: 128, 288 thr; 1 running 2 [||| 3.4%] Load average: 0.00 0.01 0.05 3 [ 0.0%] Uptime: 01:31:06 4 [ 0.0%] Mem[||||||||||||||||||||||||| 926M/3.68G] Swp[ 0K/3.00G] PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 2020 wxq 20 0 310M 3916 3052 S 0.0 0.1 0:00.00 /usr/bin/gnome-keyring-daemon --daemonize --login 2277 wxq 20 0 310M 3916 3052 S 0.0 0.1 0:00.00 /usr/bin/gnome-keyring-daemon --daemonize --login
语法
htop [options]
选项
- -d #:延迟时长
- -u username:仅显示指定用户的进程
- -s column:根据指定的字段进行排序
交互式子命令:
- l:显示光标所在进程所打开的文件列表
- s:显示光标所在进程执行的系统嗲欧总
- a:绑定进程到指定的cpu
- #:快速定位光表示PID为#的进程上
- u:显示所有用户进程
- H:显示/隐藏用户线程threads
- K:显示/隐藏内核线程
- F:使用光标选择进程
- P M T:根据CPU%,MEM%,TIME排序
- c:标记进程和子进程
- Esc:返回主界面
示例
[root@localhost ~]# htop -d 10 -u wxq 1 [ 0.0%] Tasks: 132, 290 thr; 1 running 2 [ 0.0%] Load average: 0.01 0.02 0.05 3 [|| 2.0%] Uptime: 01:37:25 4 [ 0.0%] Mem[||||||||||||||||||||||||| 935M/3.68G] Swp[ 0K/3.00G] PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 2657 wxq 20 0 393M 19108 15172 S 0.0 0.5 0:05.65 /usr/bin/vmtoolsd -n vmusr 2284 wxq 20 0 3676M 188M 57536 S 0.0 5.0 0:09.16 /usr/bin/gnome-shell 2020 wxq 20 0 310M 3916 3052 S 0.0 0.1 0:00.00 /usr/bin/gnome-keyring-daemon --daemonize --login 2277 wxq 20 0 310M 3916 3052 S 0.0 0.1 0:00.00 /usr/bin/gnome-keyring-daemon --daemonize --login 2281 wxq 20 0 310M 3916 3052 S 0.0 0.1 0:00.01 /usr/bin/gnome-keyring-daemon --daemonize --login 2019 wxq 20 0 310M 3916 3052 S 0.0 0.1 0:00.03 /usr/bin/gnome-keyring-daemon --daemonize --login 2252 wxq 20 0 753M 11152 6472 S 0.0 0.3 0:00.00 /usr/libexec/gnome-session-binary --session gnome-classic 2253 wxq 20 0 753M 11152 6472 S 0.0 0.3 0:00.07 /usr/libexec/gnome-session-binary --session gnome-classic 2267 wxq 20 0 753M 11152 6472 S 0.0 0.3 0:00.00 /usr/libexec/gnome-session-binary --session gnome-classic 2041 wxq 20 0 753M 11152 6472 S 0.0 0.3 0:00.34 /usr/libexec/gnome-session-binary --session gnome-classic 2050 wxq 20 0 58860 960 464 S 0.0 0.0 0:00.00 dbus-launch --sh-syntax --exit-with-session 2052 wxq 20 0 69260 2680 1168 S 0.0 0.1 0:00.00 /usr/bin/dbus-daemon --fork --print-pid 5 --print-address 2051 wxq 20 0 69260 2680 1168 S 0.0 0.1 0:00.35 /usr/bin/dbus-daemon --fork --print-pid 5 --print-address 2115 wxq 20 0 382M 4328 3516 S 0.0 0.1 0:00.00 /usr/libexec/imsettings-daemon 2116 wxq 20 0 382M 4328 3516 S 0.0 0.1 0:00.00 /usr/libexec/imsettings-daemon 2126 wxq 20 0 382M 4328 3516 S 0.0 0.1 0:00.00 /usr/libexec/imsettings-daemon 2114 wxq 20 0 382M 4328 3516 S 0.0 0.1 0:00.05 /usr/libexec/imsettings-daemon
vmstat命令
vmstatmi命令用于报告虚拟内存的状态统计信息,包括进程、内存、磁盘IO等运行信息。
语法
vmstat [options] [delay [count]]
delay:间隔显示
count:间隔多少秒
参数选项
-s:将一些事件导致的内存变化情况列表说明 -S:后面可以接单位,如K、M取代bytes的容量 -d:列出磁盘的读写总量统计表
显示结果每列表示的含义:
proc:进程段
r:处于等待运行的进程的个数。就是实时显示CPU上等待运行的任务的队列长度 b:处理不可中断睡眠状态的进程的个数,即IO阻塞队列长度 memory:内存段
swpd:交换内存使用量 free:空闲物理内存总量 buff:用于buffer缓冲的内存总量 cache:用于cache缓存的内存总量 swap:交换分区段
si:数据进入swap中的速率 so:数据离开swap中的速率 io:块级IO
bi:从块设备读入数据到系统的速率 bo:保存数据到块设备的速率 system:系统段
in:中断速率,每秒被中断的次数 cs:进程切换的速率 cpu:CPU段
us:用户空间占用CPU百分比 sy:用于运行内核占用的CPU百分比 id:空闲的CPU百分比 wa:等待IO花费的时间 st:被虚拟化技术划走的cpu百分比
示例
1、内存吧变化列表说明
[root@localhost ~]# vmstat -s 3863576 K total memory 859648 K used memory 913436 K active memory 458004 K inactive memory 2118760 K free memory 2100 K buffer memory 883068 K swap cache 3145724 K total swap 0 K used swap 3145724 K free swap 2667 non-nice user cpu ticks 27 nice user cpu ticks 6045 system cpu ticks 1875619 idle cpu ticks 301 IO-wait cpu ticks 0 IRQ cpu ticks 204 softirq cpu ticks 0 stolen cpu ticks 748797 pages paged in 116901 pages paged out 0 pages swapped in 0 pages swapped out 863045 interrupts 788334 CPU context switches 1537683366 boot time 4590 forks
2、列出磁盘的读写总量
[root@localhost ~]# vmstat -d disk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur sec sda 19276 39 1497595 14855 2624 497 233896 13200 0 9 sr0 0 0 0 0 0 0 0 0 0 0 md0 0 0 0 0 0 0 0 0 0 0
四、练习
1、使用until和while分别实现192.168.0.0/24 网段内,地址是否能够ping通,弱ping通则输出"success!",若ping不通则输出"fail!"
a、使用while循环实现:
[root@localhost ~]# vim /home/bash/pingtest.sh #!/bin/bash #用while循环检测网段192.168.0.0/24的连通性 declare i=1 while [ $i -le 255 ];do ping -i 0.5 -c 1 192.168.0.$i &>/dev/null result=$? if [ $result -eq 0 ] then echo "192.168.0.$i success." else echo "192.168.0.$i fail." fi let i=$i+1 done [root@localhost ~]# bash /home/bash/pingtest.sh 192.168.0.1 fail. 192.168.0.2 success. 192.168.0.3 fail.
b、使用until实现
[root@localhost ~]# vim /home/bash/pingtest1.sh #!/bin/bash #使用until实现192.168.0.0/24网段连通性测试 declare i=1 until [ $i -ge 255 ];do ping -i 0.5 -c 1 192.168.0.$i &>/dev/null result=$? if [ $result -eq 0 ];then echo "192.168.0.$i success." else echo "192.168.0.$i fail." fi let i=$i+1 done [root@localhost ~]# bash -x /home/bash/pingtest1.sh + declare i=1 + '[' 1 -ge 255 ']' + ping -i 0.5 -c 1 192.168.0.1 + result=1 + '[' 1 -eq 0 ']' + echo '192.168.0.1 fail.' 192.168.0.1 fail. + let i=1+1 + '[' 2 -ge 255 ']' + ping -i 0.5 -c 1 192.168.0.2 + result=0 + '[' 0 -eq 0 ']' + echo '192.168.0.2 success.'
原创文章,作者:N32_王先桥,如若转载,请注明出处:http://www.178linux.com/124371