菜单
本页目录

系统信息相关

#系统信息相关
uname -a        #显示所有系统信息
uname -r        #显示内核版本
uptime          #显示系统的运行时间、登录用户数、平均负载
hostnamectl     #显示或设置主机名以及系统信息

#系统日志相关
journalctl -xe                   #查看最近的系统日志
journalctl -u nginx              #查看nginx服务的日志
journalctl --since "2 hours ago" #查看过去两小时的日志

#查看内核日志
dmesg | less             #分页查看内核日志
dmesg -T                 #显示日志中的时间戳

CPU相关

#CPU整体利用率(采集静态的数据存在误差)
grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage}'

#CPU整体利用率(采集动态的数据相对准确)
top -bn2 | grep "Cpu(s)" | tail -n1 | awk '{print 100 - $8}'

#CPU每个核心的利用率(需要单独安装sysstat)
mpstat -P ALL 1 1

#当前的CPU频率
grep "cpu MHz" /proc/cpuinfo

#每个核心的当前频率
lscpu | grep "MHz"

#获取线程数
echo $(nproc)

#获取核心数
lscpu | grep '^Core(s) per socket:' | awk '{print $4}'

#获取总核心数
lscpu | awk '/^Socket\(s\)/ {sockets=$2} /^Core\(s\) per socket/ {cores_per_socket=$4} END {print sockets * cores_per_socket}'

#获取CPU插槽数量
lscpu | grep '^Socket(s):' | awk '{print $2}'

#CPU制造商和型号
grep 'model name' /proc/cpuinfo | uniq

#获取缓存大小
lscpu | grep 'L[1-3] cache'

#是否开启超线程(大于1的值则启用超线程)
lscpu | grep 'Thread(s) per core' | awk '{print $4}'

内存相关

#系统内存的简单使用情况
free -h

#系统内存的详细使用情况
cat /proc/meminfo

#查看内存的硬件信息(内存插槽位置、品牌、速率)
dmidecode --type memory

#内存利用率(需要单独安装sysstat)
sar -r 1 1

磁盘相关

#显示文件系统的磁盘使用情况
df -h

#显示文件系统的inode使用情况
df -i

#估算文件或目录所占用的磁盘空间
du -sh /directory
du -sh file

#显示块设备的信息(包括磁盘及其分区)
lsblk

#列出系统中所有磁盘的分区信息
fdisk -l

#显示块设备的属性(如UUID和文件系统类型)
blkid

#查看当前挂载的文件系统及其挂载点
mount | column -t

#磁盘利用率(需要单独安装sysstat)
iostat -dx 1 1

#显示磁盘的硬件影响(包括硬盘型号、序列号、固件版本、支持的功能、健康状态等需要单独安装smartmontools)
smartctl -a /dev/nvme0n1

#进行一些简单的磁盘性能测试(读写测试)
hdparm -tT /dev/nvme0n1

文件句柄相关

#lsof命令
lsof                          #列出全部打开的文件
lsof -p <PID>                 #列出某个进程打开的文件
lsof -u <username>            #列出某个用户打开的文件
lsof -i                       #列出打开的网络连接
lsof /path/to/file            #列出特定文件的打开情况
lsof +D /path/to/directory    #列出指定目录下的打开文件 
lsof -i :80                   #列出某个端口被哪些进程占用


#ulimit命令 
ulimit -n           #查看当前会话的最大文件句柄数
ulimit -n 1024      #设置当前会话的最大文件句柄数
ulimit -a           #查看所有限制

#fuser命令
fuser /path/to/file_or_directory     #查看某个文件或目录正在被哪些进程使用
fuser -n tcp 80                      #查看某个端口正在被哪些进程占用
fuser -k /path/to/file_or_directory  #强制终止使用指定文件的进程

#直接读取内核维护的文件句柄统计信息
cat /proc/sys/fs/file-nr

#列出特定进程的所有文件句柄
ls -l /proc/<PID>/fd/

#查看系统允许的最大文件句柄数
cat /proc/sys/fs/file-max

#永久设置系统允许的最大文件句柄数(sysctl -p生效)
vim /etc/sysctl.conf
fs.file-max = 2097152

网络相关

#显示所有网络接口的IP地址信息
ip addr show

#显示网络接口的链路状态
ip link show

#显示路由表
ip route show

#DNS查询
dig www.google.com

#显示网卡的详细信息
ethtool eth0

#指定网卡抓包
tcpdump -i eth0

#实时显示网络路径的连通性和丢包情况(结合了ping和traceroute的功能)
mtr www.google.com

端口&进程相关

#显示当前正在运行的进程信息
ps -aux

#显示系统中的网络连接和套接字信息(ss已经替代netstat)
ss -tuln
netstat -tuln
lsof -i -P -n

#查看端口占用情况
lsof -i :22
fuser 22/tcp

#杀死进程
fuser -k 80/tcp
kill -9 <PID>
pkill -f "name"

#查看特定进程的详细信息
ps -p <PID> -o pid,comm,cmd,%cpu,%mem

#过滤指定进程的PID
pidof sshd
pgrep sshd
ps -aux | grep sshd

系统温度相关

#sensors命令(需要安装lm-sensors)
sensors-detect  #收集传感器数据
sensors         #查看传感器温度

#通过/sys/class/thermal(主板、CPU)
ll /sys/class/thermal
cooling_device0    #冷却设备 
cooling_device1    #冷却设备
cooling_device2    #冷却设备(可能有很多cooling_device)
thermal_zone0      #对应的是主板芯片组的温度传感器
thermal_zone1      #对应的是CPU1温度传感器
thermal_zone2      #对应的是CPU2温度传感器

cat /sys/class/thermal/cooling_device0/type 
Processor       #表示通过调整CPU的工作频率或电压来进行冷却

cat /sys/class/thermal/cooling_device1/type 
Fan             #通常通过调节风扇的转速来控制散热

cat /sys/class/thermal/thermal_zone0/type
pch_lewisburg   #type表示设备类别

cat /sys/class/thermal/thermal_zone1/temp 
75000           #temp表示温度(75°C)

#通过/sys/class/hwmon(硬盘、网卡、主板、CPU)
ll /sys/class/hwmon/hwmon0/
hwmon0  
hwmon1  
hwmon2  

cat /sys/class/hwmon/hwmon0/name          #name表设备类别
nvme

cat /sys/class/hwmon/hwmon0/temp1_input  #temp1_input表示温度(42.85°C)
42850

定位高使用率的进程

#定位高CPU使用率的进程
top -o %CPU
ps aux --sort=-%cpu | head -n 10

#定位高内存使用率的进程
top -o %MEM
ps aux --sort=-%mem | head -n 10

#定位高磁盘写入的进程
iotop            #需要安装iotop
pidstat -d 1     #需要安装sysstat

#定位高网络使用的进程
iftop            #需要安装iftop 
nethogs          #需要安装nethogs

#htop命令
默认情况下按CPU使用率排序
按M键切换到按内存使用率排序的模式

相关的一些其他工具和命令

  • vmstat命令
#用于显示:虚拟内存、进程、CPU、I/O、陷阱、以及系统分页等信息的统计数据

#每秒刷新一次共显示5次系统性能数据
vmstat 1 5

#常用参数
-s: 显示系统启动以来的累计统计信息。
-d: 显示磁盘统计信息。
-m: 显示slab内存信息
  • dmidecode命令
#用于显示系统硬件信息:如BIOS版本、序列号、内存容量、处理器信息等

#指定显示的类别
dmidecode -t bios        #显示BIOS信息
dmidecode -t system      #显示系统信息
dmidecode -t baseboard   #显示主板信息
dmidecode -t processor   #显示CPU信息
dmidecode -t memory      #显示内存信息
  • dstat命令
#是一个灵活的实时系统资源统计工具(它结合了vmstat、iostat、netstat、ifstat等工具的功能)

#并列出CPU占用最高的进程
dstat -cdmn --top-cpu
  • sysstat工具包
#是一个性能监控工具包(包含了sar、iostat、mpstat、pidstat等命令)

#系统活动报告工具
sar -u 1 5

#磁盘I/O统计信息
iostat -dx 1

#显示各个CPU核心的使用情况
mpstat -P ALL 1

#显示进程级别的统计信息
pidstat -u 1