Linux top、vmstat、iostat、sar命令说明

top命令可用于观测CPU的一些运行指标。进入top命令之后,按1键即可看到每核CPU的详细状况。

CPU的使用有多个维度的指标,以下分别说明:
us 用户态所占用的CPU百分比。
sy 内核态所占用的CPU百分比。如果这个值过高,需要配合vmstat命令,查看是否是上下文切换是否频繁。
ni 高优先级应用所占用的CPU百分比。
wa 等待I/O设备所占用的CPU百分比。如果这个值非常高,输入输出设备可能存在非常明显的瓶颈。
hi 硬件中断所占用的CPU百分比。
si 软中断所占用的CPU百分比。
st 这个一般发生在虚拟机上,指的是虚拟CPU等待实际CPU时间的百分比。如果这个值过大,则你的宿主机压力可能过大。如果你是云主机,则你的服务商可能存在超卖。
id 空闲CPU百分比。

VIRT 这里就是虚拟内存,一般比较大,不用做过多关注。
RES 我们平常关注的就是这一列的数值,它代表了进程实际占用的内存。平常在做监控时,也主要是监控这个数值。
SHR 指的是共享内存,比如可以复用的一些so文件等。

一般的,我们比较关注空闲CPU的百分比,它可以从整体上体现CPU的利用情况。
————————————————————————
Linux vmstat命令说明
要看CPU的繁忙程度,还可以通过vmstat命令
b 存在于等待队列的内核线程数目,比如等待I/O等。数字过大则cpu太忙。
cs 代表上下文切换的数量。如果频繁的进行上下文切换,就需要考虑是否是线程数开的过多。
si/so 显示了交换分区的一些使用情况,交换分区对性能的影响比较大,需要格外关注。
vmstat 1

——————————————————————
通过以下命令即可看到当前操作系统的缓存行大小
cat /sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size

[root@ukihk ~]# cat /sys/devices/system/cpu/cpu0/cache/index1/size
32K
[root@ukihk ~]# cat /sys/devices/system/cpu/cpu0/cache/index2/size
256K
[root@ukihk ~]# cat /sys/devices/system/cpu/cpu0/cache/index3/size

———————————————————————
网络
除了iotop、iostat这些命令外,sar命令可以方便的看到网络运行状况,下面是一个简单的示例,用于描述入网流量和出网流量。
sar -n DEV 1
以下可以选择性的只看TCP的一些状态
sar -n TCP,ETCP 1

常见的网络端口号及说明

计算机应该不会只使用一个应用程序服务,在计算机后台会同时运行多个服务,因此我们需要使用多个端口号。现实中,端口号的范围是从 0 到 65535。
这些端口号,根据用途可分为三个类别(范围):

系统端口(0 – 1023):这些端口是众所周知的端口,由IANA(互联网数字分配机构,Internet Assigned Numbers Authority)分配给特定服务;
注册端口(1023 – 49151):这些端口被称为用户端口,可用于注册IANA。注册是为了避免端口冲突;
动态端口(49152-65535):动态端口可以分配给服务一段时间,主要由客户端程序使用。

传输协议
传输协议,最基本的理解是,它负责建立连接,并确保数据传输无误。
通常,我们使用两种类型的协议:TCP 和 UDP
TCP:它代表传输控制协议,是面向连接的协议,这意味着一旦使用它建立了连接,数据就可以实现双向传输。
TCP有一个内置机制,可以保证无错误地传递数据。这使得它非常适合发送图像、数据、网页、视频等。
UDP:它代表用户数据报协议,与TCP相比更简单,不包括错误检查和恢复服务。
它比TCP更快,不适合发送图像、视频等数据,是广播式传输,主要用于视频会议、流媒体、DNS、VoIP等。

FTP – 21
端口 21 用于FTP(文件传输协议),其主要用途是在客户端和服务器之间交换文件。
默认情况下,FTP 传输不会加密,因此会有一定的风险。

SSH – 22
端口 22 一般用于 SSH 服务。高级用户或系统管理员广泛使用SSH(Secure Shell)访问远程计算机;但是你也可以使用 SSH 通过网络传输数据。
SSH使用加密技术,确保远程服务器和计算机之间的连接是加密的。

TELNET – 23
TELNET代表终端网络。它用于通过互联网或本地计算机连接计算机,并提供双向交互式面向文本的通信。
但是,TELNET不提供任何类型的加密,这是它仅用于连接本地机器的主要原因。

SMTP – 25
简单邮件传输协议(SMTP)用于发送邮件,但无法接收邮件,因为它无法在接收点对邮件进行排队。
因此它通常与其他协议(如POP3或IMAP)配对以接收消息。

DNS – 53
DNS 默认端口号为 53,它将域名转为 IP 地址。因此,你可以在浏览器地址栏中输入域名,而不需要记住其 IP 地址。
DNS在端口53使用TCP和UDP,但默认情况下,它使用UDP,并且只有在无法使用UDP通信时才会切换到TCP。

DHCP – 67,68
动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)主要用于为计算机分配动态IP地址。它还提供其他网络地址,如子网掩码、默认网关和DNS地址。
它使用两个UDP端口:67和68。端口号67由服务器使用,而68由客户端使用。

HTTP – 80
大家应该比较熟悉HTTP(超文本传输协议)这个名称,它用于在web上传输数据,还定义了浏览器如何与网站交互。
简单地说,我们使用HTTP发送和接收来自web服务器的页面请求。

POP3 – 110
我们前文提到过,POP3(邮局协议版本3)主要用于从远程服务器或本地计算机接收邮件。

Portmapper – 111
Portmapper服务构建在RPC之上,需要在客户端和服务器端运行NFS。由于它是通过RPC构建的,因此它在端口 111 上使用 TCP 和 UDP 协议运行。

NTP – 123
网络时间协议(NTP,Network Time Protocal)是最古老但对运行服务器至关重要的协议之一。它通过UDP构建,使用端口号123。
NTP之所以至关重要,是因为它用于同步时间,同步时间不仅方便,而且对于运行各种应用程序也至关重要。

NetBIOS – 137
网络基本输入/输出系统(NetBIOS,Network Basic Input/Output System)是一种网络服务,它使各应用程序能够通过本地网络相互通信。

IMAP – 143
Internet消息访问协议(IMAP,nternet Message Access Protocol)默认为非加密端口,允许您从任何设备访问电子邮件。
IMAP允许你阅读邮件,但默认情况下不允许你在本地下载或存储邮件。

SNMP – 161, 162
简单网络管理协议(SNMP,Simple Network Management Protocol)是网络监控协议的集合。
它主要用于监控防火墙、服务器、交换机和其他网络设备。

HTTPS – 443
超文本传输协议安全(HTTPS)顾名思义,是HTTP的安全版本。它是在web浏览器和网站之间发送数据的主要协议。
它提供了强大的加密功能,受到全球数百万用户的信任和使用。

基于 SSL 的 IMAP – 993
您可以将其视为更安全的IMAP版本,因为IMAP流量将通过安全套接字(socket)到达安全端口。
当我们使用主动加密时,它使用993端口,确保我们在互联网上的安全和隐私。

 

 

Windows 修改默认远程桌面端口

1、在PowerShell 命令来查看当前远程桌面端口<必须使用管理员权限>
Get-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp’ -name “PortNumber”

示例如下:
PortNumber : 3389
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\
WinStations\RDP-Tcp
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\
WinStations
PSChildName : RDP-Tcp
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry

2、通琮PowerShell 命令来更改 RDP 端口;在此命令中,我们会将新的 RDP 端口指定为 55555。
$portvalue = 55555
Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp’ -name “PortNumber” -Value $portvalue
New-NetFirewallRule -DisplayName ‘RDPPORTLatest-TCP-In’ -Profile ‘Public’ -Direction Inbound -Action Allow -Protocol TCP -LocalPort $portvalue
New-NetFirewallRule -DisplayName ‘RDPPORTLatest-UDP-In’ -Profile ‘Public’ -Direction Inbound -Action Allow -Protocol UDP -LocalPort $portvalue

示例如下:
PS C:\Windows\system32> Get-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp’ -name “PortNumber”
PortNumber : 55555
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations
PSChildName : RDP-Tcp
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry