Linux是一种开源的类Unix操作系统,它有很多不同的发行版,如Ubuntu、CentOS、Debian等。Linux系统提供了很多命令行工具,可以让用户方便地查看和管理系统的各种信息,如硬件配置、内存使用、进程状态、网络连接等。本文将介绍一些常用的命令,以及它们的用法和示例。
- 系统基本信息:uname
- Linux发行版信息: lsb_release
- CPU详细信息:lscpu
- 内存使用情况:free
- 系统实时进程状态: top
- 网络接口信息: ifconfig
- 网络连接相关信息:netstat
- 无线网络接口信息:iwconfig
- 磁盘分区信息:fdisk
- 磁盘使用情况: df
- 系统主机名等信息:hostnamectl
- PCI设备信息:lspci
- USB设备信息:lsusb
- 系统硬件详细信息:dmidecode
使用:
man command
或者command -h
查看相关命令的完整参数。
系统基本信息:uname
uname命令可以显示系统的基本信息,如内核版本、操作系统名称、主机名、硬件架构等。它有以下常用的选项:
- -a:显示所有信息
- -s:显示内核名称
- -r:显示内核版本
- -v:显示内核发布日期
- -o:显示操作系统名称
- -n:显示主机名
- -m:显示硬件架构
例如,输入uname -a
,可以得到类似下面的输出:
root@CQUPTLEI:~# uname -a
Linux CQUPTLEI 5.4.0-149-generic #166-Ubuntu SMP Tue Apr 18 16:51:45 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
这表示当前系统是Linux,内核版本是5.4.0-149-generic,发布日期是2023年4月18日,硬件架构是x86_64,操作系统名称是GNU/Linux。
Linux发行版信息: lsb_release
lsb_release命令可以显示Linux发行版的信息,如发行版名称、版本号、代号等。它有以下常用的选项:
- -a:显示所有信息
- -d:显示发行版描述
- -c:显示发行版代号
- -r:显示发行版版本号
例如,输入lsb_release -a
,可以得到类似下面的输出:
root@CQUPTLEI:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.6 LTS
Release: 20.04
Codename: focal
这表示当前系统是Ubuntu发行版,版本号是20.04.6 LTS,代号是focal。
LSB
是Linux标准基础(Linux Standard Base)的简称。它是一个由Linux基础设施提供商、应用程序开发者和Linux社区共同制定的标准,旨在提供一致的软件接口和二进制兼容性,以增强不同Linux发行版之间的互操作性。
LSB的目标是定义一组核心规范和标准,确保在符合LSB的Linux系统上开发和运行的应用程序能够在不同的Linux发行版上保持一致的行为。这使得应用程序开发者能够更容易地将其软件移植到不同的Linux环境中,而不需要为每个发行版进行额外的定制和调整。
LSB标准涵盖了各种方面,包括文件系统布局、共享库、命令工具、系统调用接口、初始化脚本、包管理和日志系统等。它定义了一些基本的命令和工具,如lsb_release,用于查看Linux发行版的信息,以及其他用于检查和验证系统符合LSB标准的工具。
通过遵循LSB标准,Linux发行版可以提供更高的互操作性,允许开发者在不同的Linux系统上更轻松地交付和运行应用程序。这也为企业和组织提供了更大的灵活性,使其能够选择不同的Linux发行版,并确保其应用程序能够在这些发行版上正常运行。
CPU详细信息:lscpu
lscpu 用于显示关于CPU的详细信息。它提供了有关处理器架构、逻辑核心数、大小端模式、CPU频率、缓存层次结构和支持的特性等信息。
常见的参数:
- -a, --all:
显示所有可用的CPU信息,包括默认和扩展的信息。
-
-p, --parse:
解析/proc/cpuinfo文件并以可读格式显示处理器信息。 -
-s, --socket:
只显示物理插座(socket)的信息,包括插座编号、核心数和线程数等。 -
-c, --cpu:
只显示逻辑CPU的信息,包括CPU编号、核心编号、线程编号等。 -
-x, --hex:
在显示CPU特性和标志时,以十六进制格式显示。 -
-y, --extended=KEY:
显示扩展的CPU信息。KEY可以是以下之一:cache,cpu,flags,topology。 -
-e, --online:
只显示在线的CPU的信息,即正在运行的CPU。 -
-V, --version:
显示lscpu命令的版本信息。
使用lscpu
:
内存使用情况:free
free命令可以显示系统的内存使用情况,包括物理内存、交换分区、缓冲区和缓存等。它有以下常用的选项:
- -h:以人类可读的格式显示信息,如KB、MB、GB等
- -m:以MB为单位显示信息
- -g:以GB为单位显示信息
- -t:显示总计信息
例如,输入free -h
,可以得到类似下面的输出:
root@CQUPTLEI:~# free
total used free shared buff/cache available
Mem: 2030144 986392 108608 66064 935144 785052
Swap: 1049596 793048 256548
系统实时进程状态: top
top命令可以实时地显示系统的进程状态,如CPU占用率、内存占用率、运行时间等。它有以下常用的选项:
- -u :只显示指定用户的进程
- -p :只显示指定进程ID的进程
- -c:显示完整的命令行
- -d :设置刷新间隔,单位为秒
例如,输入top
,可以得到类似下面的输出:
这表示当前系统已经运行了42天,有2个用户登录,平均负载是0.46、0.39、0.26。
共有249个进程,其中一个在运行,248个在睡眠。
CPU的使用率是2.0%用户态,2.2%系统态,95.5%空闲。
内存的使用情况是xxxxxx(看图)。交换分区的使用情况是xxxx。
最后显示了各个进程的信息,如进程ID、用户、优先级、虚拟内存、物理内存、共享内存、状态、CPU占用率、内存占用率、运行时间、命令等。
网络接口信息: ifconfig
ifconfig命令可以显示和配置网络接口的信息,如IP地址、子网掩码、广播地址、MAC地址等。它有以下常用的选项:
- -a:显示所有接口的信息,包括未激活的
- -s:只显示摘要信息,不显示详细信息
- :只显示指定接口的信息
例如,输入ifconfig
,可以得到类似下面的输出:
这表示当前系统有3个网络接口。
eth0是以太网接口,它的IP地址是xxx.xxx.xxx.xxx,子网掩码是xxx.xxx.xxx.xxx,广播地址是xxx.xxx.xxx.xxx,MAC地址是xx:xx:xx:xx:xx:xx。
lo是本地回环接口,docker0是docker的。
网络连接相关信息:netstat
netstat可以显示活动的TCP\UDP连接、监听的端口、路由表、接口统计、多播成员等。
常用参数:
- -a:显示所有活动的TCP连接和监听的TCP和UDP端口
- -b:显示每个连接或监听端口所涉及的可执行文件的名称。在某些情况下,一个可执行文件可能包含多个独立的组件,这时会显示创建连接或监听端口所涉及的组件序列。这个选项可能比较耗时,而且需要足够的权限才能使用。
- -e:显示以太网统计信息,如发送和接收的字节数和数据包数。这个参数可以和-s一起使用。
- -n:显示数字形式的地址和端口号,而不是尝试解析主机名。
- -o:显示每个连接的进程标识符(PID)。你可以在任务管理器中根据PID找到对应的应用程序。这个参数可以和-a, -n, -p一起使用。
- -p :只显示指定协议的连接。协议可以是tcp, udp, tcpv6, 或 udpv6。如果这个参数和-s一起使用来显示协议统计信息,协议可以是tcp, udp, icmp, ip, tcpv6, udpv6, icmpv6, 或 ipv6。
- -r:显示IP路由表。这相当于route print命令。
- -s:按协议显示统计信息。默认情况下,会显示TCP, UDP, ICMP, 和 IP协议的统计信息。如果安装了IPv6协议,还会显示TCP over IPv6, UDP over IPv6, ICMPv6, 和 IPv6协议的统计信息。-p参数可以用来指定一组协议。
- -t:显示当前连接状态。
- < interval>:每隔指定的秒数重新显示选定的信息。按CTRL+C停止重新显示。如果省略这个参数,命令只会打印一次选定的信息。
无线网络接口信息:iwconfig
显示和配置无线网络接口的信息,包括无线网卡名称、频率和连接状态等。
服务器没有连接无线网,就不展示示例了(懒得切换双系统)。
磁盘分区信息:fdisk
列出系统上所有磁盘分区的信息,包括磁盘设备、分区类型和分区大小等。
关于磁盘相关的命令,可以去看我之前的文章。这里常用的参数是 -l
比如这台服务器有2个磁盘:vda 和vdb,各自分了2个区。
磁盘使用情况: df
df命令可以显示系统的磁盘使用情况,包括总容量、已用空间、可用空间、使用百分比等。它有以下常用的选项:
- -h:以人类可读的格式显示信息,如KB、MB、GB等
- -m:以MB为单位显示信息
- -g:以GB为单位显示信息
- -T:显示文件系统类型
- -a:显示所有文件系统,包括特殊的
- < directory >:只显示指定目录所在的文件系统
例如,输入df -hT
,可以得到类似下面的输出:
系统主机名等信息:hostnamectl
查看和设置系统的主机名,包括主机名、操作系统版本、架构和系统时区等信息。
参数:
-
status:
显示当前系统的主机名、操作系统版本、架构和时区等信息。 -
set-hostname NAME:
设置系统的主机名为指定的名称。需要root权限或使用sudo执行此操作。 -
set-chassis TYPE:
设置系统的机箱类型。可用的类型包括desktop(桌面)、laptop(笔记本电脑)、server(服务器)和vm(虚拟机)等。 -
set-deployment DEPLOYMENT:
设置系统的部署环境。可用的部署环境包括production(生产环境)、development(开发环境)、testing(测试环境)和custom(自定义环境)等。 -
set-icon-name NAME:
设置系统主机的图标名称。该图标名称通常对应于图形用户界面(GUI)中显示的主机图标。 -
set-location LOCATION:
设置系统所在的位置信息。可以是一个自定义的位置字符串,例如办公室名称或机房编号。 -
set-timezone TIMEZONE:
设置系统的时区。需要指定有效的时区标识符,例如"Asia/Shanghai"或"America/New_York"等。 -
set-volatile BOOL:
设置主机名是否为临时(易失性)的。如果设置为"yes",主机名将在系统重启后重置为默认值。 -
set-static-hostname NAME:
设置系统的静态主机名。静态主机名在系统重启后保持不变。 -
set-pretty NAME:
设置一个用于美化目的的主机名。可以是一个友好的名称,用于在特定环境中显示给用户。 -
set-transient-hostname NAME:
设置系统的临时主机名。临时主机名在系统重启后重置为默认值。
例:hostnamectl status
PCI设备信息:lspci
lspci是一个用于显示系统中所有PCI总线和连接到它们的所有设备的信息的命令。默认情况下,它显示一个简要的设备列表。
这里:PCI的意思是Peripheral Component Interconnect,它是一种个人电脑总线,用于连接主板上的各种外围设备,如显卡、声卡、网卡等。
你可以使用以下一些常用参数来请求更详细的输出或者适合其他程序解析的输出 :
- -m:以向后兼容的机器可读的格式显示输出
- -mm:以机器可读的格式显示输出,便于脚本解析
- -t:以树状图的形式显示输出,包括所有总线、桥、设备和它们之间的连接
- -v:显示详细的输出,包括设备类别、供应商、子系统、IRQ等
- -vv:显示更详细的输出,包括能力列表、PCI配置空间等
- -vvv:显示最详细的输出,包括所有可解析的信息,即使看起来不太有趣(例如,未定义的内存区域)
- -k:显示每个设备的内核驱动程序和模块
- -x:以十六进制格式显示标准部分的PCI配置空间(前64字节或者对于CardBus桥是前128字节)
- -xxx:以十六进制格式显示整个PCI配置空间(256字节)。这个选项只有root用户才能使用,因为一些PCI设备在你试图读取某些部分的配置空间时会出错(这个行为可能不违反PCI标准,但至少很愚蠢)。不过,这样的设备很少见,所以你不必太担心。
- -xxxx:以十六进制格式显示扩展的(4096字节)PCI配置空间,这个空间在PCI-X 2.0和PCI Express总线上可用。
- -b:以总线中心视图显示所有IRQ号和地址,而不是内核看到的那样。
- -D:始终显示PCI域号。默认情况下,在只有域0的机器上,lspci会抑制它们。
- -P:通过每个桥的路径来识别PCI设备,而不是通过总线号。
- -PP:通过每个桥的路径来识别PCI设备,同时显示总线号和设备号。
- -n:以数字形式显示PCI供应商和设备代码,而不是在PCI ID列表中查找它们。
- -nn:以数字和名称的形式显示PCI供应商和设备代码。
- -q:如果在本地pci.ids文件中找不到某个设备,则使用DNS查询中央PCI ID数据库,并将结果保存在本地缓存中。如果DNS查询成功,则在后续运行中即使没有给出这个选项也会识别出结果。请只在自动化脚本中谨慎使用这个选项,以避免过载数据库服务器。
- -qq:无论是否在本地pci.ids文件中找到某个设备,都使用DNS查询中央PCI ID数据库,并重置本地缓存。
- -Q:即使在本地pci.ids文件中找到某个设备,也使用DNS查询中央PCI ID数据库。如果你怀疑显示的条目是错误的,请使用这个选项。
USB设备信息:lsusb
列出连接到系统的所有USB设备的信息,包括设备ID、制造商和设备速度等。
常用参数 :
- -v:显示详细的信息,包括设备类别、供应商、子系统、配置描述符等
- -t:以树状图的形式显示输出,包括所有总线、设备和它们之间的连接
- -s [ [ bus]: ] [ devnum]:只显示指定总线和/或设备号的设备。两个编号都是十进制的,可以省略。
- -d [ vendor]: [ product]:只显示指定供应商和产品ID的设备。两个ID都是十六进制的。
- -D device:不扫描/dev/bus/usb目录,而是只显示给定设备文件的信息。设备文件应该类似于/dev/bus/usb/001/001。这个选项显示详细信息,类似于-v选项;你必须是root用户才能使用这个选项。
- -V:打印版本信息并成功退出。
系统硬件详细信息:dmidecode
显示有关系统硬件(如主板、BIOS、内存、处理器等)的详细信息。
dmidecode是一个用于解析系统的DMI(也称为SMBIOS)表内容并以人类可读的格式显示的命令。DMI表包含了系统硬件组件的描述,以及一些其他有用的信息,如序列号和BIOS版本。你可以使用以下一些常用参数来控制输出:
- -d, --dev-mem FILE:从指定的设备文件读取内存(默认是/dev/mem)
- -h, --help:显示帮助信息并退出
- -q, --quiet:显示更简洁的输出,不显示未知、非活动和OEM特定的条目
- -s, --string KEYWORD:只显示指定关键字对应的DMI字符串的值。关键字必须是以下列表中的一个:bios-vendor, bios-version, bios-release-date, system-manufacturer, system-product-name, system-version , system-serial-number, system-uuid, baseboard-manufacturer, baseboard-product-name, baseboard-version , baseboard-serial-number, baseboard-asset-tag, chassis-manufacturer, chassis-type, chassis-version , chassis-serial-number, chassis-asset-tag, processor-family, processor-manufacturer, processor-version , processor-frequency。
- -t, --type TYPE:只显示指定类型的DMI条目。类型可以是一个数字,或者一个逗号分隔的数字列表,或者一个数字范围,如0-4。类型也可以是以下关键字之一:bios, system, baseboard, chassis, processor, memory, cache, connector, slot。
- -u:显示未解析的条目内容,以十六进制格式。
- -V:打印版本信息并成功退出。
除了上面常用的命令外,还有很多其他命令,以及第三方工具。比如top
的升级版htop
。
把 永 远 爱 你 写 进 诗 的 结 尾 ~