Linux-系统信息收集
Ax 收集进程信息
和进程管理相关的重要命令是top、ps和pgrep.
a top命令
输出CPU占用最多进程的列表,是动态的。
b ps命令
收集进程信息的重要工具。
ps -f
查看更多信息
ps -axf
打印终端所有进程信息
ps -eo comm,pcpu --sort -pcpu | head
列出占用CPU做多的10个进程
ps -C CMD -o pid=
打印出命令的PID,加入=就可以移除列名
ps -elf --sort -nlwp | head
列出线程数最多的10个进程
ps -eo pid,cmd e | tail -n 3
列出环境变量
c pgrep命令
获得特定命令的进程ID 列表
pgrep CMD
d which、whereis、file、whatis与uptime
which
命令用于找出某个命令的位置。
whereis
命令不仅返回位置还打印命令手册的位置。
file
命令是一个打印文件类型和细节的命令。
whatis
命令输出简短的描述信息,信息从命令手册中解析
uptime
命令,平均负载的三个值,分别指明了1分钟、5分钟、15分钟的平均值。
Bx 杀死进程以及发送或响应信号
a kill命令
如Ctrl + C、Ctrl + Z 一样,kill命令也会向进程发送
信号。trap命令用于接收
这样的信号。
kill -l
列出可用的信号
kill 进程ID列表
终止进程,使用空格作为列表的定界符
kill -s SIGNAL PID
向进程发送指定的信号
- 1 (SIGHUP)对控制进程或终端的终结进行挂起检测
- 2 (SIGINT)按下Ctrl + C 时发出的信号
- 9 (SIGKILL)强行杀死进程
- 15(SIGTERM)默认用于终止进程
- 20(SIGTSTP) 按下Ctrl + Z 时发出的信号
比如我们要终止一个进程,可以
kill -s SIGKILL PROCESS_ID
or
kill -9 PROCESS_ID
b 相关命令
killall
c 捕捉信号命令
trap 'signal_handler_function_name' SIGNAL LIST
编写一个能响应信号的脚本
#!/bin/bash
# 信号处理
function handler()
{
echo Hey,received signal : SIGINT
}
echo My process ID is $$
trap 'handler' SIGINT
while true;
do
sleep 1
done
按下Ctrl+C后输出的信息。
Cx 采集系统信息
apt-get install neofetch
如果安装不了就下载github的
neofetch
download: https://github.com/dylanaraps/neofetch/archive/2.0.2.tar.gz && tar xvfz 2.0.2.tar.gz && cd neofetcth-2.0.2 && make && sudo make install
这个命令还可以通过配置查看更多的东西
系统信息包括主机名、内核版本、Linux发布版本名称、CPU信息、内存信息、磁盘分区信息等。
hostname
或 uname -n
获取主机名
uname -a
获取内核版本、硬件架构
uname -r
内核发行版本
uname -m
打印主机类型
uname -p
处理器架构
arch
处理器架构
/proc
是一个在内存中的伪文件系统,引入了用户空间读取系统接口,可以获取大量信息
environ
环境变量cwd
进程工作目录exe
进程对应可执行文件的符号链接
cat /proc/4295/environ
显示该进程的环境变量
– CPU –
iscpu
CPU 相关信息
getconf LONG_BIT
CPU运行模式
cat /proc/cpuinfo
打印CPU名称
cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l
cpu是否支持64bit
(结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit)
cat /proc/cpuinfo | head -20
CPU详细信息
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
打印CPU型号
grep 'physical id' /proc/cpuinfo | sort | uniq | wc -l
CPU 物理数量(物理)
cat /proc/cpuinfo |grep 'processor'|wc -l
CPU物理数量(核数)
cat /proc/cpuinfo |grep "cores"|uniq
CPU每个物理的核心core数量
cat /proc/cpuinfo |grep MHz|uniq
主频
cat /proc/cpuinfo | sed -n 5p
获取cpuinfo第五行保包含处理器的名称
– 内存 –
cat /proc/meminfo
内存详细信息
cat /proc/meminfo |head -20
内存信息前20条
cat /proc/meminfo | head -l
可用内存信息
cat /proc/partitions 或 fdisk -l
分区信息
free -m
内存使用情况
– 硬盘 –
fdisk -l |grep Disk
硬盘分区状态
lsblk
硬盘分布
fdisk -l
硬盘详细信息
mount | column -t
查看挂在分区状态
swapon -s
查看挂在分区状态
df -hT
硬盘使用情况
smartctl
硬盘检测
– 网卡 –
lspci | grep -i 'eth'
查看网卡硬件信息
ifconfig -a
查看接口
ip link show
查看接口
ethtool eth0
网络接口信息
for i in seq 0 9;do ethtool eth${i} | egrep 'eth|Link';done
所有网卡链路状态
– PCI –
lspci -tv | more
列出所有PCI信息
lshw
系统详细信息
2021-5-17 update hardware info
dmidecode|grep "System Information" -A9|egrep "Manufacturer|Product|Serial"
服务器型号及序列号
dmidecode |grep -A16 "System Information$"
主板型号
dmidecode -t bios
主板信息
dmidecode -t memory | head -45 | tail -23
内存槽及内存条
dmidecode -t memory | head -45 | tail -24
查看内存硬件信息
dmidecode|grep -P 'Maximum\s+Capacity'
最大支持内存
dmidecode | grep -A5 "Memory Device" | grep Size | grep -v Range
Linux 查看内存的插槽数,已经使用多少插槽.每条内存多大
dmidecode|grep -A16 "Memory Device"|grep 'Speed'
查看内存频率
dmesg | grep -i Ethernet
网卡信息
lspci | head -10
查看pci信息,即主板所有硬件槽信息
Dx 补充
a 系统状态检测
#ifconfig
网卡配置,网络状态 // 下载:yum install net-tools -y
# uname
内核,系统版本
# uptime
系统负载信息,开机多久
# time
CPU耗时
# hostname
查看主机名
# hostnamectl
查看主机名详细信息
# hwclock
系统时间
# tzselect
时区选择
# free
内存信息
# who
当前用户
# last
登入记录
# history
历史命令
# sosreport
差错检测
# supportconfig
收集信息出报告
b 性能监控
# top / atop / stabltop/htop
动态监视
# vmstat
性能监控
# cpustat
性能监控
# glances
性能监控 python写的
# nmon
性能监控
# pcp-gui
性能监控 GUI
# collectl 和 colplot
强大性能监控,第二个是在浏览器中查看
# iostat
CPU与磁盘
# pidstat // 下载:yum install sysstat -y
性能监控
# dstat
性能监控
# perf
CPU占用率
# sar和ksar
安装包 sysstat,图形化
# mpstat
系统信息平均值
# ps
系统命令进程
# pidof
指定服务进程PID
# kill
结束进程
# killall
结束指定名称的所有进程
Ex 参考
[1] 《Linux Shell脚本攻略》第二版 Shantanu Tushar\Sarath Lakshman 著