linux操作系统入门、常用命令介绍。

一、linux操作系统的基本组成

1、硬件层
(1) 组成:CPU,内存(RAM),存储设备(SSD-固态硬盘,HDD-机器硬盘),网络接口卡(NIC),显卡,各种输入/输出设备。
(2)查看系统硬件的各类命令

  • lscpu:查看CPU的数量以及各种参数(每个CPU的情况在 /proc/cpuinfo 这个文件里面)
    • Architecture:CPU指令集架构。
      • x86_64: 64 位 Intel/AMD 处理器 (最常见)。
      • i686, i586: 32 位 Intel 处理器。
      • aarch64, armv8l: 64 位 ARM 处理器。
      • armv7l, armv6l: 32 位 ARM 处理器。
      • ppc64(le), s390x: IBM Power 或 System Z 处理器。
    • CPU op-mode(s):CPU 支持的操作模式。32-bit, 64-bit。现代 CPU 通常两者都支持。
    • Address sizes:CPU 支持的物理地址 (RAM) 和虚拟地址空间的大小 (以位为单位)。
    • CPU(s):操作系统看到的逻辑处理器总数。这是最重要的指标之一,代表了系统可并行执行线程的总数。
    • Core(s) per socket:每个卡槽id下面的cpu数量,比如0号id下面几个cpu。
    • Socket(s):系统物理CPU卡槽id数量,比如分0,1两个id。
    • Thread(s) per core:每个CPU支持的线程数。
    • On-line CPU(s) list:在线的,可以用的线程数量。
    • CPU max MHz / CPU min MHz:CPU 支持的最高和最低运行频率(单位 MHz)。实际频率会根据负载和节能策略动态变化。
    • L1d: Level 1 Data Cache (一级数据缓存)。
    • L1i: Level 1 Instruction Cache (一级指令缓存)。
    • L2: Level 2 Cache (二级缓存)。通常每个核心独享或核心组共享。
    • L3: Level 3 Cache (三级缓存)。通常是所有核心共享的最后一级缓存 (LLC)。
    • Flags:CPU 支持的指令集扩展和特性的详细列表。
      • lm: Long Mode (64位支持)。
      • vmx (Intel) / svm (AMD): 硬件虚拟化支持。
      • sse, sse2, sse3, ssse3, sse4_1, sse4_2, avx, avx2, avx512f: SIMD 指令集,对多媒体、科学计算、AI 加速至关重要。
      • aes: AES-NI 指令,加速加密解密。
      • pclmulqdq: 用于加速加密的指令。
      • rdrand/rdseed: 硬件随机数生成器指令。
      • fpu: 浮点运算单元。
      • vme: 虚拟 8086 模式扩展。
      • ht: Hyper-Threading 技术 (旧标志,现在通常用 Thread(s) per core 判断)。
      • nx/xd: 执行禁止位 (DEP 硬件支持)。
      • pdpe1gb: 支持 1GB 大页。
      • constant_tsc: 恒定时间戳计数器 (对性能分析很重要)。
    • NUMA:属于每个 NUMA 节点的逻辑 CPU 列表,是每个线程的节点标号。

image

lscpu [选项]
#常用选项
	-a:显示所有 CPU 信息(包括离线的 CPU)。
	-b, --online:只显示在线 CPU 的信息(默认行为)。
	-c, --offline:只显示离线 CPU 的信息。
	-e, --extended [=列表]:以可读格式或自定义列列表显示扩展的 CPU 信息。
	-p, --parse [=列表]:以易于解析的格式显示指定字段的信息(常用于脚本)。
#常用的组合
	-be,-ce #显示,CPU-对应的cpu线程号,SOCKET-物理卡槽号,CORE-物理核心 ID等。
  • free:查看内存和swap空间。(对应系统文件为 /proc/meminfo)
    • total:系统安装的总物理内存(RAM)或总交换空间(Swap)大小。
    • used:当前已被使用的内存量。包括了被应用程序使用的内存和被内核用于缓冲区和应用的数据缓存的内存。
    • free:完全未被使用的内存量。这个值通常很小,因为 Linux 会尽可能利用空闲内存做缓存。
    • buff/cache:缓冲/缓存。
      • buffers (缓冲):内核缓冲区使用的内存,主要用于存储设备(如硬盘)的元数据(目录项,inode)或者临时放在等待写入磁盘的原始数据块。加速了文件系统对于元数据的访问速度,并且大大提高了磁盘数据写的效率。
      • cache (缓存):页缓存使用的内存,主要用于存储设备读取的文件内容。当一些频繁访问的数据存放在RAM中,可以提高应用程序的读取速度。
    • available:系统实际可用的内存。包括未使用的free内存和可用回收的buffer/Cache中的缓存。
      image
free [选项]
#主要参数
	-h, --human:最常用! 以人类可读格式(K, M, G, T)自动缩放显示内存大小。强烈推荐使用。
	-t, --total:在输出末尾添加一行 Total,汇总显示物理内存 (Mem) 和交换空间 (Swap) 的 total, used, free 列。方便查看整体内存情况。
	-w, --wide:切换到宽输出模式。主要影响是将 buff/cache 列拆分为单独的 buffers 和 cache 列显示。提供更详细的缓存信息。
	-s , --seconds [时间(s)] :持续监控内存使用情况。
	-c , --count [次数] :与 -s 结合使用,指定刷新多少次后停止。
  • lsblk:查看存储磁盘的信息,包括UUID,容量,文件系统类型,挂载点等。(查看系统文件为 /proc/partitions)
lsblk [选项] [设备...]
#常用选项
	-f, --fs	显示文件系统信息(类型、LABEL、UUID、挂载点)
	-o, --output <列>	自定义输出列(如 NAME,SIZE,TYPE,MOUNTPOINT)
	-m, --perms	显示设备权限(所有者、组、模式)

NAME:设备名称(如 sda, sda1, vda)
FSTYPE:文件系统类型(ext4/xfs/swap/LVM等)
LABLE:文件系统标签
UUID:文件系统唯一性标识
MOUNTPOINT:挂载点
SIZE:容量
TYPE:设备类型
image

  • ethtool/ip/nmcli:查看网卡信息。
##1  nmcli device show [网卡名(可选)]
	GENERAL.DEVICE:网卡名
	GENERAL.TYPE:设备类型:ethernet(有线,且可自定义)/ wifi / bridge / vpn / veth(虚拟网卡类型) / bond / loopback等
	GENERAL.HWADDR:网卡的MAC地址。
	MTU:最大传输单元(字节)
	STATE:连接状态码,标识网卡是否与物理机连接。
		• 10 (unmanaged) - 网络接口未被系统管理
		• 20 (unavailable) - 通常是网络管理未启用这个接口,无法进行网络连接。可以检查网线是否插好
		• 30 (disconnected) - 未连接
		• 50 (connecting) - 连接中
		• 60 (authenticating) - 认证中
		• 70 (getting IP) - 获取 IP
		• 80 (checking) - 检查连接
		• 90 (deactivating) - 断开中
		• 100 (connected) - 已连接,标志网卡已连接。
	CONNECTION:当前激活状态的配置名称。对应"/etc/sysconfig/network-scripts/"下面的"ifcfg-"文件
	WIRED-PROPERTIES.CARRIER:标识有线网卡连接状态的属性,当值为on时表示网卡已连接网线。这个状态一般表示系统中这个网卡是都启用,可能做了bond 1主从网卡,连接了,但是没启用。
	IP4.ADDRESS[1]:网络IP地址
	IP4.GATEWAY:网关地址
	IP6.ADDRESS[1]:IPV6网络地址

image

##2 ip link show [dev <接口名>]
	1:接口索引号(内核标识符)
	lo / eth0:接口名称,对应"/etc/sysconfig/network-scripts/"下面的"ifcfg-"文件
	< > 状态标志:核心状态信息;
		• UP:网络适配器已加载,内部可以通过命令 `ip link set eth1 down` 禁用。
		• LOWER_UP:物理链路正常
		• BROADCAST:支持广播
		• MULTICAST:支持组播
		• LOOPBACK:回环接口
		• NOARP:无 ARP 功能
		• PROMISC:混杂模式
		• ALLMULTI:接收所有组播
		• NO-CARRIER:网络接口未检测到载波信号,该网卡接口未被用上,没有信号通过。
	mtu 1500:最大传输单元(字节)
	qdisc fq_codel:队列规则(FQ_CODEL = 公平队列拥塞控制算法)
	state UP:接口状态;UP:运行中、DOWN:已禁用、UNKNOWN:状态未知。
	mode DEFAULT:接口模式(通常为 DEFAULT)。
	qlen 1000:传输队列长度。
#其他的命令查看网卡信息
lspci | grep -i ethernet
ls -l /sys/class/net/ | grep -v virtual

image

2,内核空间
内核空间包含许多小模块。如:进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能等功能。大致系统架构图如下
image

二、系统常用模块的命令介绍

1、基础命令

sh/bash:是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,shell也被称为LINUX的命令解释器(command interpreter)。

  • bash:Bourne-Again Shell,GPL,CentOS 和 Ubuntu 默认使用
  • csh:c shell , C 语言风格
#查看系统中的shell
[root@test ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

tty:查看当前正在使用的终端

[root@test ~]# tty
/dev/pts/7

who:查看当前所有登入的终端

[root@test ~]# who
chances  pts/14       2025-08-20 14:59 (192.18.1.12)
chances  pts/7        2025-08-20 14:58 (192.18.1.12)

hostname、hostnamectl:查看当前系统的主机名,修该系统的主机名。

  • 主机名不支持使用下划线,但支持横线,可使用字母,横线或数字组合
  • 有些软件对主机名有特殊要求
[root@test ~]# hostname
test
#临时生效
[root@test ~]# hostname  NAME
#持久生效,支持CentOS7和Ubuntu18.04以上版本
[root@test ~]# hostnamectl set-hostname NAME

uname:查看系统信息的工具。它可以展示操作系统、内核以及硬件基本信息

[root@test ~]# uname -a
Linux test 3.10.0-693.el7.x86_64 1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

# 仅查看内核版本(用于检查是否需要安全更新)
uname -r
# 输出: 3.10.0-693.el7.x86_64

# 查看系统是32位还是64位
uname -m
# 输出: x86_64 (表示64位) 或 i686/i386 (表示32位)

# 查看操作系统名称
uname -o
# 输出: GNU/Linux

# 查看完整的主机名
uname -n
# 输出: test

date:查看当前系统的时间,也可以矫正当前时间

[root@test ~]# date
Fri Aug 22 10:29:01 CST 2025

##根据需求格式显示日期
date +"FORMAT"

符号	含义		示例输出
%Y	年份(四位数)	2024
%y	年份(后两位数)	24
%m	月份 (01..12)	11
%d	日 (01..31)	15
%H	小时 (00..23)	16
%M	分钟 (00..59)	30
%S	秒 (00..60)	45
%F	完整日期 (= %Y-%m-%d)	2024-11-15
%T	时间 (= %H:%M:%S)	16:30:45

# 生成标准日期(ISO 8601)
date +"%Y-%m-%d"          # 输出:2024-11-15,相当于 `date +%F`

# 生成标准日期时间
date +"%Y-%m-%d %H:%M:%S" # 输出:2024-11-15 16:30:45

# 可以添加其他文字增加可读性,显示更易读的格式
date +"Today is %A, %B %d, %Y. The time is %I:%M:%S %p" 
# 输出:Today is Wednesday, November 15, 2024. The time is 04:30:45 PM


##修改时间
date -s "2025-7-15 16:45:30"


##方便地计算过去或未来的时间
date -d "EXPRESSION" 或 date --date="EXPRESSION"

# 1. 相对当前时间计算
date -d "next day"          # 明天此时
date -d "yesterday"         # 昨天此时
date -d "1 hour ago"        # 1小时前
date -d "2 weeks"           # 2周后
date -d "3 months ago"      # 3个月前
date -d "1 year + 1 day"    # 1年零1天后

# 2. 绝对时间计算(计算特定日期的前几天/后几天)
date -d "2024-11-15 + 10 days"  # 2024-11-15 的10天后
date -d "2024-11-15 - 10 days"  # 2024-11-15 的10天前

# 3. 复杂表达式
date -d "next Friday"       # 下周五
date -d "last Sunday"       # 上周日
date -d "@1700051445"       # 将时间戳转换为可读时间

# 4. 结合格式化输出,非常实用!
# 获取明天的日期
date -d "next day" +"%Y-%m-%d"
# 获取上个月第一天的日期
date -d "$(date +%Y-%m-01) - 1 month" +"%Y-%m-%d"
# 获取本周一的日期
date -d "last monday" +"%Y-%m-%d" # 注意:如果今天是周一,这个会返回上周一
date -d "this monday" +"%Y-%m-%d" # 更准确的“本周一”

clock,hwclock: 显示硬件时钟

#以硬件时钟为准,校正系统时钟
-s, --hctosys

#以系统时钟为准,校正硬件时钟
-w, --systohc

timedatectl:显示和修改系统时区

#显示系统支持的时区
[root@centos8 ~]# timedatectl list-timezones

#修改系统的时区
[root@centos8 ~]#timedatectl set-timezone Asia/Shanghai

#显示现在系统时区的状态
[root@test ~]# timedatectl  status
      Local time: Fri 2025-08-22 15:04:29 CST
  Universal time: Fri 2025-08-22 07:04:29 UTC
        RTC time: Fri 2025-08-22 07:04:45
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

#查看系统时区文件
[root@test ~]# ll /etc/localtime 
lrwxrwxrwx. 1 root root 35 Dec 21  2023 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai

poweroff,halt,reboot:系统关机,重启

whoami: 显示当前登录有效用户

w: 系统当前所有的登录会话及所做的操作

echo:将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号

  • -E (默认)不支持 \ 解释功能
  • -n 不自动换行
  • -e 启用 \ 字符的解释功能
    • \a 发出警告声
    • \b 退格键
    • \c 最后不加上换行符号
    • \e escape,相当于\033
    • \n 换行且光标移至行首*
    • \r 回车,即光标移至行首,但不换行
    • \t 插入tab
    • \\ 插入\字符
    • \0nnn 插入nnn(八进制)所代表的ASCII字符
    • \xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)

history:命令行历史记录,正常情况下用户退出时命令的历史记录会被保存在 ~/.bash_history 这个文件里面。

  • -c:清空命令历史
  • n:显示最近的n条历史记录
###命令历史相关的环境变量

HISTSIZE #命令历史记录的条数,默认是1000条。
[root@test ~]# echo $HISTSIZE
1000
#指定历史文件,默认为~/.bash_history
HISTFILE="/root/.bash_history"
HISTFILESIZE #命令历史文件记录历史的条数
HISTTIMEFORMAT="%F %T `whoami` " #显示时间和用户
HISTIGNORE="str1:str2*:…" # 忽略str1命令,str2开头的历史
HISTCONTROL #控制命令历史的记录方式
ignoredups  #是默认值,可忽略重复的命令,连续且相同为“重复”
ignorespace  #忽略所有以空白开头的命令
ignoreboth   #相当于ignoredups, ignorespace的组合
erasedups #删除重复命令

hash:查看外部命令缓存表。
type:查看命令是外部命令还是内部命令。

  • 内部命令:由shell自带的,而且通过某命令形式提供, ,用户登录后自动加载并常驻内存中
  • 外部命令:在文件系统路径下有对应的可执行程序文件,当执行命令时才从磁盘加载至内存中,执行完毕后从内存中删除
[root@centos8 ~]#type -a echo
echo is a shell builtin #这种表达形式就是内部命令
echo is /usr/bin/echo #否则会显示命令的路径

#显示hash缓存
[root@k8s-mgmtnode01 ~]# hash
hash: hash table empty

alias:命令别名,对于常用的组合命令可以用别名来命名,方便执行。

#定义别名
[root@test ~] alias NAME='VALUE'
#显示当前shell中的别名
[root@test ~] alias


#扫描磁盘
[root@test ~]#alias scandisk='echo - - - >/sys/class/scsi_host/host0/scan;echo - - - >/sys/class/scsi_host/host1/scan;echo - - - > /sys/class/scsi_host/host2/scan'

#取消别名,-a 是取消所有别名
unalias [-a] name

2,常见的环境变量

PS1:命令提示符 prompt,定义终端的显示情况,可以显示不同的颜色,用于区分不同的服务器和用户,也增加观看舒适度。
提示符格式说明:

  • \e: 控制符\033
  • \u: 当前用户
  • \h: 主机名简称
  • \H: 主机名
  • \w: 当前工作目录
  • \W: 当前工作目录基名
  • \t: 24小时时间格式
  • \T: 12小时时间格式
  • !: 命令历史数
  • # : 开机后命令历史数
[root@test ~]# echo $PS1
[\u@\h \W]\$

[root@centos8 ~]#echo $PS1
 \[\e[1;35m\][\u@\h \W]\\$\[\e[0m\]

#字符背景颜色范围: 40--47
40:黑
41:红
42:绿
43:黄
44:蓝
45:紫
46:深绿
47:白色

#字体颜色: 30--37
 30: 黑
31: 红
32: 绿
33: 黄
34: 蓝
35: 紫
36: 深绿
37: 白色

#其他的控制码
\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[nA 光标上移n行
\033[nB 光标下移n列
\033[nC 光标右移n列
\033[nD 光标左移n列
\033[x;yH 设置光标位置x行y列
\033[2J  清屏
\033[K   清除从光标到行尾的内容
\033[s   保存光标位置
\033[u   恢复光标位置
\033[?25l   隐藏光标
\033[?25h   显示光标
\033[2J\033[0;0H  清屏且将光标置顶

image

LANG:系统的字符编码格式,以及中英文

#英文模式
[root@test ~]# echo $LANG
en_US.UTF-8

#中文模式
[root@test ~]#echo $LANG
 zh_CN.UTF-8

3、其他的常用符号

## {} 可以实现打印重复字符串的简化形式
[root@test ~]#echo {000..20..2}
 000 002 004 006 008 010 012 014 016 018 020
 [root@test ~]#echo {a..z..2}
 a c e g i k m o q s u w y
 [root@test ~]#echo {A..z}
 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [  ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z

##`` 和 $() 里面的内容会当成命令执行

##单引号:强引用,六亲不认,变量和命令都不识别,都当成了普通的字符串,"最傻"
##双引号:弱引用,不能识别命令,可以识别变量,"半傻不精"

4、bash常用的快捷键

Ctrl + l    清屏,相当于clear命令
Ctrl + o    执行当前命令,并重新显示本命令
Ctrl + s    阻止屏幕输出,锁定
Ctrl + q    允许屏幕输出,解锁
Ctrl + c    终止命令
Ctrl + z    挂起命令
Ctrl + a    光标移到命令行首,相当于Home
Ctrl + e    光标移到命令行尾,相当于End
Ctrl + f    光标向右移动一个字符
Ctrl + b    光标向左移动一个字符
Ctrl + xx   光标在命令行首和光标之间移动
Alt + f     光标向右移动一个单词尾
Alt + b     光标向左移动一个单词首
Ctrl + u    从光标处删除至命令行首
Ctrl + k    从光标处删除至命令行尾
Alt + r     删除当前整行
Ctrl + w    从光标处向左删除至单词首
Alt + d     从光标处向右删除至单词尾
Alt + Backspace 删除左边单词
Ctrl + d    删除光标处的一个字符
Ctrl + h    删除光标前的一个字符
Ctrl + y    将删除的字符粘贴至光标后
Alt + c     从光标处开始向右更改为首字母大写的单词
Alt + u     从光标处开始,将右边一个单词更改为大写
Alt + l     从光标处开始,将右边一个单词更改为小写
Ctrl + t    交换光标处和之前的字符位置
Alt + t     交换光标处和之前的单词位置
Alt + #     提示输入指定字符后,重复显示该字符#次
posted @ 2025-08-27 16:50  不然我哥  阅读(15)  评论(0)    收藏  举报