遇到的问题,都有解决方案,希望我的博客能为你提供一点帮助。

一、Linux中的基础命令和操作(约30%-40%)
1.用户和组(5%左右)
1.1用户简介(了解)
要求:了解,知道有三个用户类型,知道之间的区别
在Linux中,主要分为以下三种用户类型:
(1)root用户:在Linux系统中,root用户的uid为0,该用户对所有的命令和文件具有访问、修改、执行的权限。
(2)普通用户:系统中大多数的用户为普通用户,需要管理员用户进行创建,拥有的权限收到一定的限制,一般只在用户自己的主目录拥有完全权限,提升权限时,需要使用sudo命令。
(3)系统用户:通常会用于一个守护进程或者软件,这类用户在安装系统后默认存在,且默认情况下通常不允许通过shell的交互式登录系统,但此类用户方便系统管理,对于系统的正常运行是必不可缺的。
1.2用户管理的三个配置文件
1.2.1 /etc/passwd(掌握)
文件格式如下:

文件作用:
/etc/passwd的角色:/etc/passwd是用于记录用户基本信息的文件,如同系统中用户的花名册,包含系统内所有用户的登录相关记载。例如系统中的root用户、普通用户等,都在该文件中有对应的记录行,记录着用户名、用户 ID(UID)、组 ID(GID)、家目录、登录 Shell 等基本信息。- 登录验证流程 
- 账号检查:当用户尝试登录系统时,系统首先会查阅 
/etc/passwd文件,查看是否存在用户输入的账号。比如输入用户名testuser,系统就在/etc/passwd中查找是否有以testuser为用户名的记录行。 - 确定 UID:若找到对应的账号记录,系统就会从记录中提取该用户的用户 ID(UID) 。UID 是系统识别用户身份的重要标识,每个用户都有唯一的 UID 。
 - 密码核对:系统依据确定的 UID ,到 
/etc/shadow文件中找到对应的加密密码。因为/etc/shadow存储着用户加密后的密码以及相关密码属性信息。然后将用户输入的密码进行加密处理,并与/etc/shadow中存储的加密密码进行比对。 - 登录成功:如果密码核实无误,说明用户身份合法,系统允许用户登录。登录后,系统会读取该用户的配置文件,加载用户个性化的设置,如环境变量、Shell 配置等,从而为用户提供相应的操作环境 。
 
 - 账号检查:当用户尝试登录系统时,系统首先会查阅 
 
要求:主要理解/etc/passwd文件的格式,看到具体的文件内容可以知道每一项代表的是啥
| /etc/passwd | /etc/shadow | |
|---|---|---|
| 主要存储内容 | 用户名:密码占位符:用户 ID:组 ID:用户注释:家目录:登录 Shell | 用户名、加密密码、密码最后修改时间、密码最短有效期、密码最长有效期、密码警告期、密码不活动期、账号失效时间 | 
| 文件权限 | 通常为 rw-r--r--,所有用户可读,root 可写 | 通常为 rw-------,仅 root 可读写 | 
| 作用 | 提供用户基本信息,供系统识别用户身份、确定用户家目录及默认 Shell 等 | 用于验证用户输入密码是否正确,保障密码安全 | 
| 密码相关 | 早期存加密密码,现多为占位符(x) | 存储经加密算法处理后的真实密码 | 
| 互补关系体现 | 为系统提供用户基本属性框架,与密码信息分离,保障安全性 | 补充存储密码及相关属性,与基本信息配合完成用户身份验证 | 
示例:

解释:
root:x:0:0:root:/root:/bin/bashroot:用户名,是用户登录系统时使用的名称 。x:密码占位符,在早期系统中存放加密后的密码,现在密码通常存储在/etc/shadow文件,这里仅为占位 。0:用户 ID(UID),0代表超级用户,具有系统最高权限 。0:组 ID(GID),表明该用户所属初始组的 ID ,这里0对应的组一般也是root组 。root:用户描述字段,可用于记录用户相关信息,如真实姓名等,这里是root。/root:用户的家目录,root用户的家目录为/root,用于存放用户个人文件等 。/bin/bash:用户登录后使用的默认 Shell,bash是常用的交互式 Shell,提供命令行操作环境 。
bin:x:1:1:bin:/bin:/sbin/nologinbin:用户名,系统用户,主要用于运行一些系统相关的二进制文件程序 。x:密码占位符 。1:用户 ID(UID) 。1:组 ID(GID) 。bin:用户描述 。/bin:家目录,存放相关程序文件 。/sbin/nologin:表示该用户不能用于交互式登录系统,nologin会阻止用户登录并提示该账号不可用 。
1.2.2 /etc/shadow(一般了解就行)
文件格式:

示例:

分析:
root:用户名,代表系统的超级用户,拥有最高权限。$6$.fFMoeVPf9Kh5oGb$Il3UTpAdkyL63cZSewcK33jq r/8ZJJr04Ue.Cq6Fd1tjUxekl75W9K7ukjC57UntX/:加密后的密码。$6$表示采用 SHA - 512 加密算法 ,中间部分.fFMoeVPf9Kh5oGb是盐值(用于增强密码加密安全性 ),后面部分是加密后的密码字符串。0:密码最后修改时间,指从 1970 年 1 月 1 日起到密码最后一次修改时的天数 ,这里表示密码最后修改时间距离 1970 年 1 月 1 日过去了 0 天(实际可能因系统设置或记录方式存在特殊情况 )。99999:密码最大使用期限,即密码必须修改的最长天数,超过此天数密码将失效,这里表示大约 274 年(99999÷365≈274 )才会强制要求修改密码。7:密码警告时间,指密码过期前提前警告用户修改密码的天数 ,这里表示在密码过期前 7 天,系统会提醒用户修改密码。:::后面几个字段(密码最短使用期限、密码禁用期、账号失效时间、保留字段 )为空 ,表示未设置相关内容。
1.2.3 /etc/group(一般了解就行)
文件格式:

示例:
 分析:
root:x:0:root:用户组名,此为系统中权限最高的用户组,通常超级用户root属于该组。x:密码占位符,在早期系统中用于存放用户组密码,但现在很少使用,一般仅为占位。0:组 ID(GID),0这个 GID 具有特殊意义,与超级用户相关联。- 空字段:该字段用于记录属于这个用户组的用户名列表,这里为空,不代表没有成员 ,像 
root用户默认属于root组,但不一定在此列出。 
bin:x:1:bin:用户组名,主要用于与系统二进制文件相关的程序或服务 。x:密码占位符 。1:组 ID(GID) 。- 空字段:同样用于记录组成员,此处为空,但不意味着没有成员归属该组 。
 
1.2.4 /etc/gshadow (了解)
 文件格式:
1.3用户管理操作(掌握)
经典四大件:增删改查
要求熟练掌握:增删改查操作
| 操作类型 | 命令及示例 | 解释 | 
|---|---|---|
| 添加用户 | sudo useradd [options] username示例: sudo useradd -m usernamesudo passwd username | useradd 用于创建新用户,[options] 是可选项。-m 选项表示在创建用户时自动为其创建家目录。创建用户后,使用 passwd 命令为该用户设置密码,执行该命令后会提示输入新密码及确认密码。 | 
| 删除用户 | sudo userdel -r username | userdel 用于删除用户,-r 选项表示在删除用户的同时,会一并删除该用户的家目录和邮件目录,避免残留无用的数据。 | 
| 修改用户信息 - 更改用户名 | sudo usermod -l newusername oldusername | usermod 用于修改用户的各种属性。-l 选项用于指定新的用户名,此命令将原用户名 oldusername 更改为 newusername。 | 
| 修改用户信息 - 更改用户登录 shell | sudo usermod -s /bin/bash username | usermod 的 -s 选项用于指定用户登录时使用的 shell。这里将用户 username 的登录 shell 设置为 /bin/bash。 | 
| 查看用户信息 - 显示当前用户 | whoami | 该命令会显示当前登录系统的用户的用户名。 | 
| 查看用户信息 - 显示系统中所有用户 | who | 此命令会显示当前登录到系统的所有用户的相关信息,包括用户名、登录终端、登录时间等。 | 
| 查看用户信息 - 显示当前登录系统的用户列表 | users | 该命令会以简洁的方式列出当前登录到系统的所有用户的用户名。 | 
对ueradd的参数详细讲解:
1. -c:加上备注文字
sudo useradd -c "This is a test user" testuser
 
解释:此命令创建了一个名为 testuser 的新用户,并且添加了备注信息 “This is a test user”。你可以通过查看 /etc/passwd 文件中该用户的记录,在对应字段看到添加的备注内容。
2. -d:指定新账户的主目录
sudo useradd -d /home/newtestuser testuser2
 
解释:该命令创建了用户 testuser2,并将其主目录指定为 /home/newtestuser。默认情况下,useradd 会为用户在 /home 目录下创建以用户名命名的主目录,但使用 -d 选项可以自定义主目录位置。
3. -g:指定新账户主组的名称或 ID
# 通过组名指定
sudo useradd -g staff testuser3
# 通过组 ID 指定
sudo useradd -g 1001 testuser4
 
解释:
第一条命令创建用户 testuser3,并将其主组设置为 staff 组。
第二条命令创建用户 testuser4,将其主组设置为 ID 为 1001 的组。可以通过 /etc/group 文件查看组名和对应的组 ID。
4. -G:设置新账户的附加组列表
sudo useradd -G staff,developers testuser5
 
解释:此命令创建了用户 testuser5,并将其添加到 staff 和 developers 这两个附加组中。除了主组外,用户可以属于多个附加组,从而拥有这些组的相关权限。
5. -p:设置加密后的新账户密码
# 假设加密后的密码是通过 openssl passwd -1 生成的
encrypted_password=$(openssl passwd -1 "password123")
sudo useradd -p "$encrypted_password" testuser6
 
解释:首先使用 openssl passwd -1 命令生成了密码 “password123” 的加密形式,然后将其作为参数传递给 -p 选项,为新创建的用户 testuser6 设置了加密后的密码。
6. -M:不创建用户的主目录
sudo useradd -M testuser7
 
解释:该命令创建了用户 testuser7,但不会为其创建默认的主目录。在某些场景下,如用户不需要在系统上有个人存储目录时可以使用此选项。
1.4群组管理操作(掌握)
经典四大件:增删改查
要求熟练掌握:增删改查操作
| 操作类型 | 命令及示例 | 详细解释 | 
|---|---|---|
| 添加组 | sudo groupadd groupname示例: sudo groupadd developers | groupadd 是用于在 Linux 系统中创建新用户组的命令。使用 sudo 以超级用户权限执行此命令,确保有足够的权限进行操作。groupname 是要创建的组的名称,如示例中的 developers 组。执行该命令后,系统会在 /etc/group 文件中添加一条新的记录,记录该组的相关信息。 | 
| 删除组 | sudo groupdel groupname示例: sudo groupdel developers | groupdel 用于删除指定的用户组。同样需要 sudo 权限。groupname 是要删除的组的名称,如示例中的 developers 组。执行该命令时,系统会检查该组是否有用户属于它,如果有用户属于该组,通常不能直接删除,需要先将用户从该组移除或转移到其他组。删除成功后, /etc/group 文件中对应的组记录会被移除。 | 
| 将用户添加到组 | sudo usermod -aG groupname username示例: sudo usermod -aG developers john | usermod 用于修改用户的属性。-aG 选项表示将用户添加到一个附加的组,而不是主要组。-G 用于指定要将用户添加到的组,-a 表示追加,即把用户添加到指定组作为附加组,而不是替换其主要组,-g 则是添加到主组。groupname 是目标组的名称,username 是要添加到组的用户的名称,如示例中将用户 john 添加到 developers 组作为附加组。执行该命令后,用户会获得该组的相关权限。 | 
| 从组中移除用户 | sudo gpasswd -d username groupname示例: sudo gpasswd -d john developers | gpasswd 用于管理用户组的密码和成员。-d 选项表示从指定组中删除用户。username 是要从组中移除的用户的名称,groupname 是目标组的名称,如示例中将用户 john 从 developers 组中移除。执行该命令后,用户将不再拥有该组的相关权限。 | 
| 查看组成员 | groups username示例: groups john | groups 命令用于显示指定用户所属的所有组。username 是要查看其所属组的用户的名称,如示例中查看用户 john 所属的所有组。执行该命令后,系统会列出该用户所属的所有组的名称。 | 
为群组某一成员(如YXS)设置root权限(修改/etc/sudoers)
[root@@localhost ~]#visudo
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
YXS ALL=(ALL) ALL 
root ALL=(ALL) ALL:这是一个sudo规则。第一个root表示用户名,即此规则针对root用户;ALL表示该用户可以从任何主机登录;(ALL)表示该用户可以以任何用户身份执行命令;最后的ALL表示该用户可以执行任何命令。这条规则意味着root用户可以不受限制地执行任何sudo命令。YXS ALL=(ALL) ALL:这也是一个sudo规则。YXS是用户名,此规则表示用户 YXS 可以从任何主机登录,并且可以以任何用户身份执行任何命令。即用户YXS拥有和root一样的sudo权限,在执行需要sudo授权的命令时,等同于root权限(前提是输入正确密码等满足验证条件 )。 这样设置后,用户YXS就可以在系统中执行一些原本只有root权限才能进行的操作,如安装软件、修改系统配置文件等 。不过这种赋予全部权限的设置需要谨慎,因为如果用户YXS 账户被恶意利用,可能会对系统安全造成严重威胁 。
如何限制群组成员的权限 (修改/etc/sudoers)
例子:
对于Z用户和L用户进行限制,允许Z用户可以执行/usr/bin、/bin下面的所有命令,限制Z用户不可以修改其他用户的密码和kill其他用户的进程,L用户可以使用/bin目录下面所有命令,但是不能修改其他用户的密码以及kill其他用户的进程和使用nmcli命令
1. 为 Zhang 用户设置权限
使用 visudo 命令在 /etc/sudoers.d 目录下创建与用户同名的策略文件并进行配置:
sudo visudo -f /etc/sudoers.d/Z
 
在打开的文件中添加如下内容:
Z ALL=(ALL) /usr/bin/*, /bin/*, !/usr/bin/passwd, !/bin/kill
 
解释:
-  
Z:用户名,表明该规则针对用户 Z。 -  
ALL=(ALL):表示 Z可以从任何主机登录,并且可以以任何用户身份执行命令。 -  
/usr/bin/*, /bin/*:允许 Z 执行/usr/bin和/bin目录下的所有命令 。 -  
!/usr/bin/passwd, !/bin/kill:!符号表示禁止,即不允许 Z 执行/usr/bin/passwd(修改其他用户密码 )和/bin/kill(终止其他用户进程 )命令。 
2. 为 L 用户设置权限
同样使用 visudo 命令创建策略文件:
sudo visudo -f /etc/sudoers.d/L
 
在打开的文件中添加以下内容:
L ALL=(ALL) /bin/*, !/usr/bin/passwd, !/bin/kill, !/usr/bin/nmcli
 
解释:
-  
L:用户名,此规则针对用户 L。 -  
ALL=(ALL):意味着 L 可以从任何主机登录,且能以任何用户身份执行命令。 -  
/bin/*:允许 Li 执行/bin目录下的所有命令。 -  
!/usr/bin/passwd, !/bin/kill, !/usr/bin/nmcli:禁止 Li 执行/usr/bin/passwd(修改其他用户密码 ) 、/bin/kill(终止其他用户进程 )以及/usr/bin/nmcli命令。 
1.5 几个特殊的命令 setuid(SUID)、setgid(SGID)和Sticky Bit(SBID)
1.5.1 setuid(SUID)
作用:
- 当用户执行设置了SUID的二进制文件时,进程将以文件所有者的身份运行,而非执行者的身份。
 - 仅对可执行文件有效,脚本通常不继承SUID(出于安全考虑)。
 
典型场景:
 例如/usr/bin/passwd命令,普通用户执行时,临时获得root权限以修改受保护的/etc/shadow文件。

设置方法:
符号模式:chmod u+s <file>
数字模式:在权限前加4,如chmod 4755 <file>(权限为-rwsr-xr-x)。

查看权限:
 ls -l中所有者的执行位显示为s(若同时有执行权限)或S(无执行权限)。
说明:
- 只有命令才能被设定setuid权限,其他文件和Shell脚本不能;
 - 只有具有可执行权限的命令,才能设置setuid ;
 - setuid权限,能够使命令的执行者在执行该命令时,自动获取该命令所有者身份,且只在命令执行过程中有效;
 
1.5.2 setgid(SGID)(共享文件)
作用:
对文件:执行时进程的有效组变为文件的所属组。
对目录:在该目录下新建的文件或子目录,继承目录的所属组(而非用户的主组)。
典型场景:
 共享目录(如/data/team)设置SGID后,所有新建文件自动归属团队组,便于协作。
 
设置方法:

符号模式:chmod g+s <目录或文件>
数字模式:在权限前加2,如chmod 2775 <dir>(权限为drwxr-sr-x)。
查看权限:
 ls -l中组的执行位显示为s或S。
说明:
- 设置setgid的目录时,前提用户对该目录具有r和x;
 - 用户进入此目录有,被赋予该目录的用户组身份;
 - 若用户在此目录下具有w,则创建的文件和目录,将属于此目录的用户组。
 
1.5.3 Sticky Bit(SBID)


2.文件/目录操作 (10%-20%左右)
2.1文件基础知识汇总
| 类别 | 内容 | 说明 | 重点 | 
|---|---|---|---|
| 文件类型 | 普通文件 (-) | 文本、二进制、图像等常规文件。 | ✔️ 最常见类型 | 
目录 (d) | 存储文件和其他目录的容器。 | ✔️ 使用 mkdir 创建 | |
符号链接 (l) | 指向其他文件/目录的快捷方式。 | ✔️ 使用 ln -s 创建 | |
字符设备文件 (c) | 按字符流处理的设备(如终端 /dev/tty)。 | ||
块设备文件 (b) | 按块处理的设备(如硬盘 /dev/sda)。 | ||
套接字 (s) | 进程间通信文件。 | ||
管道 (p) | 进程间单向通信。 | ||
| 权限与所有权 | 用户权限 (rwx) | 所有者权限:读(r)、写(w)、执行(x)。 | ✔️ 权限管理核心 | 
组权限 (rwx) | 所属用户组的权限。 | ||
其他用户权限 (rwx) | 其他用户的权限。 | ✔️ 安全关键点 | |
| 权限数字表示法 | r=4, w=2, x=1(如 755 表示 rwxr-xr-x)。 | ✔️ 常用 chmod 755(目录) | |
| 所有者与所属组 | 通过 chown 和 chgrp 修改文件所有者和组。 | ||
| 目录结构 | /(根目录) | 所有目录和文件的起点。 | ✔️ 绝对路径起点 | 
/bin 和 /usr/bin | 基础命令和用户命令的二进制文件。 | ✔️ 常用命令存放位置 | |
/etc | 系统配置文件(如网络配置、用户信息)。 | ✔️ 关键配置文件位置 | |
/home | 普通用户的家目录。 | ✔️ 用户文件默认位置 | |
/root | 超级用户的家目录。 | ||
/var | 可变数据(如日志、数据库)。 | ✔️ 日志文件存放位置 | |
| 路径类型 | 绝对路径 | 从根目录开始的完整路径(如 /home/user/file.txt)。 | ✔️ 精确指向文件 | 
| 相对路径 | 相对于当前目录的路径(如 ./file.txt 或 ../folder)。 | ✔️ 灵活但需注意当前目录 | |
| 链接类型 | 硬链接 | 直接指向文件数据的多个入口,共享inode,不能跨文件系统。 | ✔️ 修改同步,删除不影响原文件 | 
| 符号链接(软链接) | 存储目标路径的快捷方式,可跨文件系统,原文件删除后失效。 | ✔️ 常用,类似Windows快捷方式 | |
| 常用命令 | ls -l | 查看文件详细信息(类型、权限、所有者等)。 | ✔️ 基础命令 | 
chmod | 修改 文件权限(如 chmod 755 file)。 | ✔️ 权限管理核心命令 | |
chown | 修改文件所有者(如 chown user:group file)。 | ||
mkdir/rmdir | 创建/删除目录。 | ||
touch | 创建空文件或更新文件时间戳。 | ||
cp/mv/rm | 复制/移动/删除文件。 | ✔️ 高频操作命令 | |
ln | 创建链接(ln file hardlink 或 ln -s file softlink)。 | ✔️ 区分硬链接和软链接 | 
2.2基础命令汇总(重点掌握红色标记的)
| 类别 | 命令 | 语法/示例 | 说明 | 重点 | 
|---|---|---|---|---|
| 文件操作 | ls | ls -l(详细信息)ls -a(包含隐藏文件) | 列出目录内容。-l显示权限、所有者、大小等。 | ✔️ 最基础命令,-l必学 | 
cd | cd /path(切换目录)cd ..(返回上级目录) | 切换工作目录。 | ✔️ 路径操作核心 | |
cp | cp file1 file2cp -r dir1 dir2(复制目录) | 复制文件或目录。 | ✔️ -r用于目录复制 | |
mv | mv old.txt new.txtmv file /target(移动文件) | 移动或重命名文件。 | ✔️ 高频操作 | |
rm | rm filerm -r dir(删除目录)rm -f(强制删除) | 删除文件或目录。慎用! | ✔️ -r和-f需谨慎 | |
mkdir | mkdir dirnamemkdir -p dir1/dir2(递归创建) | 创建目录。 | ||
touch | touch file.txt | 创建空文件或更新文件时间戳。 | ||
cat | cat file.txtcat file1 > file2(合并内容) | 查看或拼接文件内容。 | ✔️ 快速查看文件 | |
more/less | more file.txtless file.txt(支持上下滚动) | 分页查看长文件内容。 | ✔️ less功能更强大 | |
find | find /path -name "*.txt"find . -type f(搜索文件) | 根据名称、类型等查找文件。 | ✔️ 高级搜索必备 | |
| 权限管理 | chmod | chmod 755 filechmod u+x file(添加执行权限) | 修改文件权限(用户/组/其他)。 | ✔️ 权限控制核心命令 | 
chown | chown user:group file | 修改文件所有者和所属组。 | ✔️ 权限分配关键 | |
chgrp | chgrp group file | 修改文件所属组。 | ||
| 系统监控 | top | top | 实时监控系统进程和资源占用(CPU、内存等)。 | ✔️ 性能分析工具 | 
ps | ps aux(查看所有进程)ps -ef | grep "nginx" | 显示当前进程状态。 | ✔️ 进程管理常用 | |
df | df -h(以易读格式显示) | 查看磁盘空间使用情况。 | ✔️ 磁盘管理必备 | |
free | free -h | 查看内存使用情况。 | ||
uname | uname -a(显示全部系统信息) | 查看系统内核信息。 | ||
| 网络操作 | ping | ping example.com | 测试网络连通性。 | ✔️ 网络故障排查 | 
curl/wget | curl -O http://example.com/filewget http://example.com/file | 从网络下载文件。 | ✔️ 常用下载工具 | |
ssh | ssh user@host | 远程登录服务器。 | ✔️ 远程管理核心 | |
scp | scp file user@host:/path(上传)scp user@host:/path/file .(下载) | 安全复制文件(基于SSH)。 | ✔️ 跨服务器传输文件 | |
netstat | netstat -tuln(查看端口监听状态) | 显示网络连接、路由表等信息。 | ||
| 软件管理 | yum/dnf(RHEL) | yum install packagednf remove package | RHEL/CentOS/Fedora包管理工具。 | ✔️ RHEL系必学 | 
| 进程管理 | kill | kill -9 PID(强制终止进程) | 终止指定进程(kill 只是发送信号)。 | ✔️ 强制终止进程 | 
killall | killall process_name | 终止所有同名进程。 | ||
bg/fg | bg(后台运行)fg %1(前台恢复任务1) | 控制后台/前台任务。 | ||
|   压缩与解压 (了解)  | tar | tar -cvf archive.tar dir(打包)tar -xvf archive.tar(解包) | 归档和解压文件。 | ✔️ 常用参数-c/x/v/z | 
gzip/gunzip | gzip file(压缩)gunzip file.gz(解压) | 压缩/解压.gz文件。 | ||
zip/unzip | zip archive.zip fileunzip archive.zip | 压缩/解压.zip文件。 | ||
| 搜索与过滤 | grep | grep "text" filegrep -r "text" /dir(递归搜索) | 在文件中搜索文本模式。 | ✔️ 文本处理核心工具 | 
find | find / -name "*.log" -mtime +7(查找7天前的日志文件) | 根据条件(名称、时间等)查找文件。 | ✔️ 高级文件搜索 | |
locate | locate file.txt | 快速查找文件(依赖数据库更新)。 | ||
| 用户管理 | useradd | useradd usernameuseradd -m username(创建家目录) | 添加新用户。 | ✔️ 系统管理员常用 | 
passwd | passwd username | 修改用户密码。 | ||
su/sudo | su - username(切换用户)sudo command(以root权限执行) | 切换用户或提权操作。 | ✔️ 权限提升核心 | |
| 其他实用命令 | echo | echo "Hello"echo $PATH(输出环境变量) | 输出文本或变量内容。 | |
man | man ls | 查看命令手册。 | ✔️ 学习命令的权威文档 | |
history | history!100(执行历史记录第100条命令) | 查看或重用命令历史。 | ||
alias | alias ll='ls -l' | 创建命令别名。 | ✔️ 提升效率的小技巧 | 
2.3文件/目录管理(掌握)
2.3.1 ls 命令
要求:明确ls 命令的用法,并且能看懂ls 的结果(蓝色标记重点)
ls命令用于列出指定目录的目录内容;如果未指定目录,则列出当前目录的内容。
| 参数 | 说明 | 示例 | 输出解析 | 重点 | 
|---|---|---|---|---|
| 无参数 | 列出当前目录的非隐藏文件(短格式)。 | ls | 显示文件名列表,按字母顺序排列。 | 基础查看 | 
-a | 显示所有文件(含隐藏文件,以 . 开头的文件)。 | ls -a输出: . .. file.txt .hidden | . 表示当前目录,.. 表示上级目录,.hidden 是隐藏文件。 | ✔️ 查看隐藏文件 | 
-l | 以长格式显示详细信息。 | ls -l输出: -rwxr--r-- 1 user group 1.2K Sep 1 10:00 file.txt | 各列含义: 1. 权限(如 -rwxr--r--)2. 硬链接数 3. 所有者 4. 所属组 5. 文件大小(默认字节) 6. 最后修改时间 7. 文件名  | ✔️ 核心参数,必学 | 
-R | 递归列出子目录内容(常用于遍历多层目录结构)。 | ls -R dir输出: dir/file1 dir/subdir:subdir/file2 | 按层级显示目录及其子目录内容。 | ✔️ 目录结构分析 | 
-h | 与 -l 结合使用,以易读格式显示文件大小(如 KB、MB)。 | ls -lh输出: -rw-r--r-- 1 user group 1.2K Sep 1 10:00 file.txt | 将字节转换为 K、M、G,便于阅读。 | ✔️ 文件大小直观化 | 
-t | 按修改时间排序(最新文件在前)。 | ls -lt | 常用于快速查找最新修改的文件。 | 时间排序 | 
-S | 按文件大小排序(从大到小)。 | ls -lS | 结合 -l 查看大文件。 | 空间管理 | 
-d | 仅显示目录本身(而非其内容),常用于查看目录属性。 | ls -ld dir输出: drwxr-xr-x 2 user group 4.0K Sep 1 10:00 dir | 避免递归显示子目录内容。 | 目录属性查看 | 
-i | 显示文件的 inode 编号(唯一标识文件系统对象)。 | ls -i输出: 123456 file.txt | 
示例:
# 执行ls -l命令
ls -l
 
 
total 16
drwxr-xr-x 2 user group 4096 May  6 10:00 dir1
-rw-r--r-- 1 user group 1024 May  6 10:00 file1.txt
-rw-r--r-- 1 user group 2048 May  6 10:00 file2.txt
 
解析:
total 16:表示当前目录下所有文件和子目录占用的磁盘块总数。- 第一列(如
drwxr-xr-x):表示文件的权限和类型。d表示目录,-表示普通文件;后面的 9 个字符分为三组,分别表示所有者、所属组和其他用户的读(r)、写(w)、执行(x)权限。 - 第二列(如
2):表示文件的硬链接数。 - 第三列(如
user):表示文件的所有者。 - 第四列(如
group):表示文件所属的组。 - 第五列(如
4096):表示文件的大小(以字节为单位)。 - 第六列(如
May 6 10:00):表示文件的最后修改时间。 - 最后一列(如
dir1):表示文件或目录的名称。 
2.3.2 pwd命令
(1)每个shell和系统进程都有一个当前的工作目录。
(2)CWD当前工作目录:current work directory。
(3)pwd命令可以显示当前shell CWD的绝对路径。
2.3.3 cd命令
| 语法格式 | 说明 | 权限要求 | 示例 | 
|---|---|---|---|
1. cd pathname | 切换到指定路径(支持绝对路径或相对路径)。 | 需有目录的 x 执行权限 | cd /var/logcd ../downloads | 
2. cd 或 cd ~ | 切换到当前用户的家目录(等价于 cd $HOME)。 | 无需额外权限 | cd → 进入 /home/user | 
3. cd ~USERNAME | 切换到指定用户的家目录(如 ~root 为 /root,~nginx 为 /var/www 等)。 | 需管理员权限(sudo) | sudo cd ~root → 进入 /root(普通用户无权直接访问) | 
4. cd - | 切换到前一个工作目录(类似“返回”功能)。 | 需前目录有权限 | cd /opt → cd /var → cd - → 返回 /opt | 
5. cd -P DIR | 切换到物理路径(忽略符号链接,直接进入实际路径)。 | 需目录的 x 权限 | 若 link_dir 是符号链接:cd -P link_dir → 进入目标真实目录而非链接路径 | 
2.3.4 mkdir命令
mkdir 命令基础
-  
全称:Make Directory(创建目录)
 -  
作用:在指定路径创建新目录,支持单层或多级目录结构。
 -  
默认行为:若父目录不存在,直接报错;目录权限由
umask决定。 
| 参数 | 说明 | 示例 | 
|---|---|---|
| 无参数 | 创建单层目录,若父目录不存在则报错。 | mkdir dir1 → 创建 dir1 | 
-p | 自动创建所需父目录(递归创建),目录已存在时不报错。 | mkdir -p a/b/c → 创建 a、a/b、a/b/c(即使 a 或 b 不存在) | 
-v | 显示详细操作信息(Verbose),报告每个创建的目录。 | mkdir -v dir2 → 输出:mkdir: created directory 'dir2' | 
-m MODE | 直接指定目录权限(无需依赖 umask),使用数字模式(如 755)。 | mkdir -m 700 private → 创建权限为 rwx------ 的目录 private | 
例子:
场景 1:递归创建多级目录(-p 参数)
$ mkdir -p project/{src,doc,test} 
-  
解析:
创建目录结构如下:project/
├── src/
├── doc/
└── test/ -  
注意:
若project已存在,直接创建子目录;若不存在,先创建project再创建子目录。 
场景 2:显示详细信息(-v 参数)
$ mkdir -pv logs/{2023,2024}/quarter{1..2}
mkdir: created directory 'logs'
mkdir: created directory 'logs/2023'
mkdir: created directory 'logs/2023/quarter1'
mkdir: created directory 'logs/2023/quarter2'
mkdir: created directory 'logs/2024'
mkdir: created directory 'logs/2024/quarter1'
mkdir: created directory 'logs/2024/quarter2' 
-  
作用:明确显示每个被创建的目录,便于调试或确认操作结果。
 
场景 3:指定目录权限(-m 参数)
$ mkdir -m 750 shared_dir
$ ls -ld shared_dir
drwxr-x--- 2 user group 4096 Sep  5 15:30 shared_dir 
-  
解析:
-  
750权限表示:-  
所有者:
rwx(7) -  
所属组:
r-x(5) -  
其他用户:无权限(0)
 
 -  
 -  
常用于创建需严格控制的目录(如团队共享目录)。
 
 -  
 
组合使用参数
$ mkdir -pm 755 /opt/app/{config,data,logs} 
-  
效果:
-  
递归创建
/opt/app及其子目录config、data、logs。 -  
所有新目录权限设为
755(rwxr-xr-x)。 
 -  
 
权限对照表
|   数字模式  |   符号权限  |   说明  | 
|---|---|---|
|   
  |   
  |   仅所有者可读写执行。  | 
|   
  |   
  |   所有者全权,其他用户只读。  | 
|   
  |   
  |   所有用户全权(慎用!)。  | 
2.3.5 touch命令
touch 命令基础
-  
作用:
-  
创建空文件(若文件不存在)。
 -  
更新文件时间戳(访问时间
atime、修改时间mtime、元数据变更时间ctime)。 
 -  
 -  
默认行为:
-  
若文件存在,更新
atime和mtime为当前时间。 -  
若文件不存在,创建空文件并设置时间戳为当前时间。
 
 -  
 
命令语法与参数解析
|   参数  |   说明  |   示例  | 
|---|---|---|
|   无参数  |   创建空文件(若不存在)或更新现有文件的   |   
  | 
|   
  |   仅更新   |   
  | 
|   
  |   仅更新   |   
  | 
|   
  |   不创建新文件(仅更新时间戳)。  |   
  | 
|   
  |   指定自定义时间戳(支持多种时间格式)。  |   
  | 
|   
  |   同步其他文件的时间戳(复制参考文件的时间)。  |   
  | 
时间戳类型说明
|   时间戳  |   全称  |   触发条件  |   查看方式  | 
|---|---|---|---|
|   atime  |   Access Time  |   文件被读取(如   |   
  | 
|   mtime  |   Modification Time  |   文件内容被修改(如写入数据)。  |   
  | 
|   ctime  |   Change Time  |   文件元数据变更(如权限、所有者、链接数等)。  |   
  | 
示例与场景分析
场景 1:创建空文件
$ touch file1.txt file2.txt  # 创建两个空文件
$ ls -l
-rw-r--r-- 1 user group 0 Sep  6 10:00 file1.txt
-rw-r--r-- 1 user group 0 Sep  6 10:00 file2.txt 
场景 2:更新时间戳
# 仅更新访问时间 (atime)
$ touch -a file.txt
$ stat file.txt
Access: 2023-09-06 10:05:00.000000000 +0800# 仅更新修改时间 (mtime)
$ touch -m file.txt
$ stat file.txt
Modify: 2023-09-06 10:05:00.000000000 +0800 
场景 3:自定义时间戳
# 设置文件时间为 2023 年 1 月 1 日
$ touch -m --date="2023-01-01" tsttime
$ stat tsttime
Modify: 2023-01-01 00:00:00.000000000 +0800# 使用复杂时间格式
$ touch --date="2023-12-31 23:59:59" deadline.txt
$ stat deadline.txt
Modify: 2023-12-31 23:59:59.000000000 +0800# 使用相对时间
$ touch --date="2 days ago" oldfile.txt
$ stat oldfile.txt
Modify: 2023-09-04 10:00:00.000000000 +0800 
场景 4:同步其他文件时间戳
$ touch -r source.txt target.txt  # 使 target.txt 时间与 source.txt 一致
$ stat source.txt target.txt
Modify: 2023-09-05 08:00:00.000000000 +0800 (source.txt)
Modify: 2023-09-05 08:00:00.000000000 +0800 (target.txt) 
时间格式支持
--date 参数支持多种时间字符串格式:
-  
绝对时间:
"2023-01-01"、"2023/01/01 12:00:00" -  
相对时间:
"yesterday"、"2 hours ago"、"next Monday" -  
时间戳:
"@1622505600"(Unix 时间戳,秒数)。 
注意事项
更新时间戳需对文件有写权限。
创建文件需对目录有写权限。
常用组合命令
|   用途  |   命令示例  | 
|---|---|
|   批量创建文件  |   
  | 
|   快速更新所有文件时间戳  |   
  | 
|   修复文件时间  |   
  | 
2.3.6 cp 命令
功能:复制文件或目录。
核心选项:
-  
-R/-r:递归复制目录(包括子目录和文件)。 -  
-f:强制覆盖已存在的目标文件(不提示用户)。 -  
-i:覆盖前询问用户(与-f冲突,默认行为可能因系统配置不同)。 -  
示例:
# 复制文件 file1 到 file2 cp file1.txt file2.txt# 复制目录 dir1 到 dir2(递归复制) cp -r dir1 dir2# 强制复制文件,覆盖已存在的目标 cp -f source.txt destination.txt# 复制多个文件到目录(目标目录必须存在) cp file1.txt file2.txt /target_dir/ 
2.3.7 mv 命令
mv(移动/重命名文件或目录)
-  
功能:移动文件/目录,或重命名。
 -  
特点:
-  
默认直接覆盖目标文件(无确认提示)。
 -  
若目标为目录且存在,则将源移动到该目录;若不存在,则重命名。
 
 -  
 -  
示例:
# 重命名文件 mv old_name.txt new_name.txt# 移动文件到目录(目标目录必须存在) mv file.txt /target_dir/# 移动并重名文件到目录 mv file.txt /target_dir/new_file.txt# 移动多个文件到目录 mv file1.txt file2.txt /target_dir/# 移动目录 dir1 到 dir2(若 dir2 存在,dir1 成为其子目录) mv dir1 dir2 
2.3.8 rm 命令
rm(删除文件/目录)
-  
功能:删除文件或目录。
 -  
核心选项:
-  
-r/-R:递归删除目录(包括子目录和文件)。 -  
-f:强制删除(忽略不存在的文件,无确认提示)。 -  
-i:删除前确认(与-f冲突)。 
 -  
 -  
示例:
# 删除文件 rm file.txt# 删除目录(必须用 -r) rm -r dir1# 强制删除目录(无提示) rm -rf dir1# 删除当前目录下所有内容(危险!) rm -rf * 
2.4 文件/目录的查找与筛选(掌握)
2.4.1. 核心命令
| 命令 | 核心功能 | 适用场景 | 关键特性 | 
|---|---|---|---|
grep | 在文本内容中搜索匹配模式 | 日志分析、代码搜索、文本过滤 | 支持正则表达式、递归搜索 | 
find | 根据属性查找文件或目录 | 清理旧文件、批量操作、应急排查 | 多条件组合、支持复杂逻辑 | 
cat | 查看文件内容或合并文件 | 快速预览、数据拼接、内容重定向 | 简单高效、支持管道操作 | 
2.4.2. 常用选项与示例
| 命令 | 核心选项 | 示例 | 功能解析 | 
|---|---|---|---|
| grep | -i(忽略大小写) | grep -i "error" log.txt | 在 log.txt 中查找所有包含 "error"(不区分大小写)的行 | 
-r(递归搜索) | grep -r "TODO" ~/projects | 递归搜索 ~/projects 目录下所有文件中包含 "TODO" 的内容 | |
-n(显示行号) | grep -n "#include" main.c | 在 main.c 中查找 #include 并显示匹配行号   | |
-v(反向匹配) | grep -v "^#" config.conf | 过滤掉 config.conf 中所有以 # 开头的注释行 | |
| find | -name(按名称匹配) | find /var/log -name "*.log" | 查找 /var/log 目录下所有 .log 文件   | 
-mtime(按时间过滤) | find /backup -mtime +30 -delete | 删除 /backup 下 30 天前修改的文件   | |
-exec(执行操作) | find . -type f -name "*.tmp" -exec rm {} \; | 删除当前目录下所有 .tmp 文件   | |
-size(按大小过滤) | find /data -size +100M -size -1G | 查找 /data 下大小在 100MB 到 1GB 之间的文件   | |
| cat | 查看文件内容 | cat config.ini | 直接显示 config.ini 的内容 | 
| 合并文件 | cat file1.txt file2.txt > combined.txt | 将 file1.txt 和 file2.txt 合并为 combined.txt | |
| 创建文件 | cat > newfile.txt(输入内容后按 Ctrl+D 保存) | 创建 newfile.txt 并写入用户输入的内容 | |
| 显示行号 | cat -n script.sh | 查看 script.sh 并显示行号 | 
2.4.3. 典型场景示例分析
场景 1:日志分析(grep 与 cat 结合)
 
cat access.log | grep "404" | grep -v "robots.txt" 
- 功能:从 
access.log中筛选所有404错误,并排除与robots.txt相关的请求。 - 解析: 
cat输出日志内容;- 第一个 
grep匹配404状态码; - 第二个 
grep -v反向过滤掉无关条目 
 
场景 2:清理旧文件(find 高级用法)
 
find /var/log -name "*.log" -mtime +7 -exec gzip {} \; 
- 功能:查找 
/var/log下 7 天前的日志文件并压缩。 - 解析: 
-name和-mtime组合过滤目标文件;-exec gzip对匹配文件执行压缩操作
 
场景 3:快速创建配置文件(cat 重定向)
 
cat > settings.conf << EOF
[Database]
host=localhost
user=admin
password=secret
EOF 
- 功能:通过重定向直接生成 
settings.conf文件。 - 解析: 
<< EOF指定输入结束符;- 输入内容自动保存到文件
 
 
2.4.4. 核心要点总结
| 命令 | 核心优势 | 适用操作 | 注意事项 | 
|---|---|---|---|
grep | 正则表达式支持、多文件递归搜索 | 文本过滤、模式匹配 | 复杂正则需用 -E 或 -P 选项 | 
find | 多条件组合、支持批量操作 | 文件查找、清理、权限管理 | 慎用 -delete 避免误删 | 
cat | 快速预览、简单合并 | 内容查看、数据拼接 | 大文件建议用 less 分页查看 | 
2.4.5. 工具联动示例(了解)
find /var/www -type f -name "*.php" -exec grep -Hn "mysql_connect" {} \; 
- 功能:递归查找所有 
.php文件,并搜索包含mysql_connect的行。 - 解析: 
find定位文件;grep -Hn显示文件名、行号和匹配内容
 
2.4.6 高级文件/目录筛选--正则表达式(掌握)
grep 命令核心功能
grep(Global Regular Expression Print)是 Linux/Unix 系统中用于文本模式匹配的工具,支持基本正则表达式(BRE)和扩展正则表达式(ERE),能快速搜索文件或输入流中符合特定模式的行
基本语法:
grep [选项] "正则表达式" 文件 
正则表达式核心语法
正则表达式是描述文本模式的字符串,通过元字符和语法规则实现灵活匹配。以下是关键语法规则:
1. 基础元字符
-  
^:匹配行首(如^abc匹配以 "abc" 开头的行) -  
$:匹配行尾(如xyz$匹配以 "xyz" 结尾的行) -  
.:匹配任意单个字符(如a.c匹配 "abc"、"a1c" 等) -  
*:匹配前一个字符 0 次或多次(如go*gle匹配 "ggle"、"gogle" 等) -  
+(需-E):匹配前一个字符 1 次或多次(如go+gle匹配 "gogle" 但排除 "ggle") -  
?(需-E):匹配前一个字符 0 次或 1 次(如colou?r匹配 "color" 和 "colour") 
2. 字符类与范围
-  
[abc]:匹配括号内任意一个字符(如[aeiou]匹配元音字母) -  
[^abc]:匹配不在括号内的字符(如[^0-9]排除数字) -  
[[:digit:]]:预定义字符类(匹配数字,等效[0-9]) 
3. 分组与引用
-  
():分组表达式(如(ab)+匹配 "ab"、"abab" 等) -  
\1:引用第一个分组的匹配结果(如(a)\1匹配 "aa") 
4. 量词扩展
-  
{n}:精确匹配 n 次(如o{2}匹配 "oo") -  
{n,m}:匹配 n 到 m 次(如a{2,4}匹配 "aa"、"aaa"、"aaaa") 
grep 常用选项
-  
-i:忽略大小写(如grep -i "error" log.txt) -  
-v:反向匹配(显示不包含模式的行) -  
-r:递归搜索目录(如grep -r "TODO" /project) -  
-n:显示匹配行的行号 -  
-E:启用扩展正则表达式(等效egrep) -  
-o:仅输出匹配的内容(如提取 IP 地址) -  
-A/-B/-C:显示匹配行的上下若干行(如-C2显示前后 2 行) 
典型应用场景
1. 基础搜索
-  
查找包含特定字符串的行:
grep "error" log.txt -  
忽略大小写匹配:
grep -i "warning" system.log 
2. 复杂模式匹配
-  
匹配 IP 地址(使用扩展正则):
grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" access.log -  
提取邮箱地址:
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" emails.txt 
3. 过滤与统计
-  
排除注释行:
grep -v "^#" config.conf -  
统计匹配行数:
grep -c "success" report.csv 
4. 文件与目录操作
-  
递归搜索目录:
grep -r "function_name" src/ -  
多文件批量处理:
grep "pattern" *.log # 搜索所有 .log 文件 
高级技巧
联合其他命令
-  
结合
find定位文件后搜索:find /var/log -name "*.log" -exec grep "error" {} \; -  
管道处理输出:
cat data.txt | grep "keyword" | sort | uniq 
正则表达式优化
-  
精确匹配单词:
grep -w "word" file.txt # 匹配 "word" 而非 "wordpress" -  
使用预定义字符类:
grep "[[:space:]]" file.txt # 匹配包含空白字符的行 
调试与可视化
-  
高亮显示匹配内容:
grep --color=auto "pattern" file.txt -  
显示文件名与行号:
grep -Hn "pattern" *.log 
2.4.7 管道符 | (掌握)
核心作用
管道符 | 是 Linux/Unix 系统中用于实现 命令间数据传递 的核心工具,其核心作用包括:
-  
串联命令:将一个命令的标准输出(
stdout)作为另一个命令的标准输入(stdin),形成数据处理链 -  
高效过滤与组合:通过多命令协作,实现复杂的数据处理逻辑(如过滤、排序、统计等)
 -  
进程间通信:基于匿名管道(Anonymous Pipe)实现进程间单向数据传输
 
基本语法与示例
1. 基础语法
command1 | command2 | command3 ... 
-  
规则:
-  
仅传递
command1的标准输出(stdout),不传递错误输出(stderr) -  
数据流单向流动,读取后从管道中清除,不可逆
 
 -  
 
2. 典型用法示例
|   场景  |   示例命令  |   功能解析  | 
|---|---|---|
|   过滤内容  |   
  |   列出当前目录文件,筛选文件名含   | 
|   统计数量  |   
  |   统计   | 
|   多级处理  |   
  |   提取系统日志中的错误信息,同时输出到屏幕和文件   | 
|   排序与去重  |   
  |   对文件内容排序并去重  | 
2.5 文件/目录权限管理(掌握)

图片源自网络
| 内容分类 | 具体内容 | 
|---|---|
| 符号含义 | u: 所有者 g: 所有组 o: 其他人 a: 所有人 (u、g、o 的总和)  | 
| 方法 1 语法 | chmod [{ugo a}{+- =}{rwx}] 文件或目录 | 
| 方法 1 - 增加权限示例 | u+x, u+r, u+w, g+w, g+r, o+r, a+r 等 | 
| 方法 1 - 取消权限示例 | u-x, u-r, u-w, g-w, g-r, o-r, a-r 等 | 
| 方法 1 - “=” 的含义 | 赋予给定权限,并取消其他所有权限(如原来 u 是 rwx,设置 u=r,u 就剩 r) | 
| 方法 2 语法 | chmod [mode=421][文件或目录] | 
| 方法 2 - 权限数值对应 | r=4 w=2 x=1 rwx=4+2+1=7  | 
| 方法 2 - 无权限表示 | 数字 0 表示 | 
| 方法 2 - 全开权限表示 | 数字 7 表示,即 7=4+2+1 | 
2.6 向文件写入内容
2.6.1. 使用 echo 命令追加或覆盖内容(掌握)
 
-  
覆盖写入:借助
>重定向符号,可将echo命令的输出覆盖写入到指定文件中。若文件不存在,会自动创建;若文件已存在,原内容会被新内容替代。 
echo "这是新内容" > test.txt
 
在上述命令中,echo 输出的 “这是新内容” 会被覆盖写入到 test.txt 文件中。
-  
追加写入:使用
>>重定向符号,能把echo命令的输出追加到指定文件的末尾。若文件不存在,同样会自动创建。 
echo "追加的新内容" >> test.txt
 
此命令会将 “追加的新内容” 添加到 test.txt 文件的末尾。
2.6.2. 使用 cat 命令写入多行内容
 
-  
覆盖写入:利用
cat结合>重定向符号,可实现多行内容的覆盖写入。输入完内容后,按Ctrl + D结束输入。 
cat > test.txt << EOF
第一行内容
第二行内容
EOF
 
这里,EOF 是自定义的结束符,你也可以使用其他字符串。输入完内容后,按 Ctrl + D ,这些内容就会被覆盖写入到 test.txt 文件中。
-  
追加写入:使用
cat结合>>重定向符号,可将多行内容追加到文件末尾。 
cat >> test.txt << EOF
追加的第一行内容
追加的第二行内容
EOF
 
输入完内容并按 Ctrl + D 后,这些内容会被追加到 test.txt 文件的末尾。
2.6.3. 使用文本编辑器写入内容
-  
使用
vim编辑器:vim是一款功能强大的文本编辑器,常用于编辑和写入文件内容。 
vim test.txt
 
执行上述命令后,会进入 vim 编辑器。按下 i 键进入插入模式,此时就可以输入内容了。输入完成后,按下 Esc 键退出插入模式,然后输入 :wq 并回车,即可保存并退出编辑器。
3.进程管理(5%-10%)
3.1 核心命令汇总(重点蓝色)
| 命令 | 用途 | 基本语法/常用选项 | 重点说明 | 示例分析 | 
|---|---|---|---|---|
ps | 查看当前进程快照 | ps [选项] | 常用组合 ps aux:显示所有用户的所有进程(含资源占用)。-e:显示全部进程。 | ps aux | grep nginx:查找所有与 nginx 相关的进程(如查看服务是否运行)。 | 
top | 实时监控进程及系统资源 | top | 交互式命令:k:终止进程;M:按内存排序;P:按CPU排序。 | 运行 top 后按 P 查看CPU占用最高的进程,按 k 输入PID终止异常进程。 | 
htop | 增强版 top(需安装) | htop | 可视化更强,支持鼠标操作和颜色标记。 | htop 中直接选中进程按 F9 发送信号终止。 | 
kill | 终止进程 | kill [信号] PID | 常用信号:SIGTERM(15):默认,优雅终止;SIGKILL(9):强制终止(慎用)。 | kill -9 1234:强制终止PID为1234的进程(用于进程无响应时)。 | 
pkill | 按进程名终止进程 | pkill [选项] 进程名 | 模糊匹配进程名,支持正则表达式。 | pkill -f "python script.py":终止所有包含 python script.py 的进程。 | 
killall | 按进程名终止所有同名进程 | killall [信号] 进程名 | 精确匹配进程名(与 pkill 区别)。 | killall nginx:终止所有名为 nginx 的进程。 | 
nice | 启动进程时指定优先级(-20~19,值越大越“谦让”) | nice -n <优先级> 命令 | 优先级调整:数值越低,CPU优先级越高(默认0)。 | nice -n 10 tar -zcf backup.tar.gz /data:以低优先级压缩文件,减少对系统影响。 | 
renice | 修改运行中进程的优先级 | renice -n <优先级> -p PID | 需root权限调整其他用户的进程优先级。 | renice -n 5 -p 5678:将PID 5678的进程优先级调整为5。 | 
pgrep | 按名称查找进程PID | pgrep [选项] 进程名 | 常用于脚本中获取PID。 | pgrep -u root sshd:查找root用户运行的 sshd 进程PID。 | 
pstree | 以树形结构显示进程关系 | pstree [选项] | 直观展示父子进程关系,适合分析进程依赖。 | pstree -p:显示带PID的进程树,查看某个进程的子进程。 | 
jobs | 查看当前Shell的后台任务 | jobs | 结合 &、bg、fg 使用,管理后台任务。 | 运行 sleep 100 & 后,jobs 显示后台任务列表;fg 1 将任务1切换到前台。 | 
nohup | 运行不受退出终端影响的进程 | nohup 命令 & | 脱离终端运行,输出默认保存到 nohup.out。 | nohup python server.py &:启动一个持久运行的Python服务,即使关闭终端仍继续运行。 | 
systemctl | 管理系统服务(systemd系统) | systemctl [动作] 服务名 | 核心操作:start/stop/restart/status/enable/disable。 | systemctl status nginx:查看Nginx服务状态;systemctl restart sshd:重启SSH服务。 | 
crontab | 管理定时任务 | crontab -e(编辑任务) | 格式:分钟 小时 日 月 周 命令。 | crontab -e 添加 0 3 * * * /backup.sh:每天凌晨3点执行备份脚本。 | 
lsof | 列出被进程打开的文件 | lsof [选项] | 常用选项:-i:查看网络连接;-p PID:按进程ID过滤。 | lsof -i :80:查看占用80端口的进程;lsof -p 1234:查看PID 1234打开的文件。 | 
3.2监控与调试(掌握)
要求:知道命令的用法,并且可以看懂命令的结果
Linux 进程状态表格
| 状态符号 | 状态名称 | 描述 | 常见场景 | 
|---|---|---|---|
R | 运行/可运行 (Running) | 进程正在执行或等待CPU调度(就绪状态)。 | 执行计算密集型任务(如编译程序)或等待CPU时间片的进程。 | 
S | 可中断睡眠 (Sleeping) | 进程等待事件完成(如用户输入、网络响应),可被信号唤醒。 | 等待用户输入的命令(如read)、等待网络请求的Web服务器进程。 | 
D | 不可中断睡眠 (Uninterruptible Sleep) | 进程等待硬件操作完成(如磁盘I/O),无法被信号或kill终止,需等待操作完成。 | 执行磁盘写入操作(如sync命令)、内核级别的硬件交互。 | 
T | 停止 (Stopped) | 进程被信号暂停(如SIGSTOP、SIGTSTP),可通过信号恢复(如SIGCONT)。 | 用户按下Ctrl+Z暂停前台进程,调试器暂停进程进行断点分析。 | 
Z | 僵尸 (Zombie) | 进程已终止,但父进程未回收其资源(如PID、退出状态),占用极少量系统资源。 | 父进程未正确处理子进程终止(编程缺陷),需由父进程调用wait()回收或终止父进程解决。 | 
X | 死亡 (Dead) | 进程完全终止,仅在内核中短暂存在,通常不可见。 | 进程结束后的最终状态,用户空间不可见。 | 
t | 跟踪停止 (Tracing Stop) | 进程被调试器跟踪时暂停(如gdb断点)。 | 
top/htop:实时查看CPU、内存占用,快速定位资源瓶颈。
ps aux \| grep 进程名:确认进程是否存在及运行状态。
 3.2.1  ps 命令:进程快照
 
作用:显示当前系统中的进程状态(静态快照)。
 常用语法:
ps aux    # 显示所有用户的进程详细信息
ps -ef    # 显示完整进程列表(含父进程PPID) 
示例 1:ps aux 输出解析
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 169316 13056 ?        Ss   Aug01   0:12 /sbin/init
nginx     1234  0.5  2.0 300000 20000 ?        S    Aug02   1:23 nginx: worker process
user      5678  2.0  0.5 250000 5000  pts/0    R+   12:30   0:10 python script.py 
字段说明:
-  
USER:进程所有者。
 -  
PID:进程ID。
 -  
%CPU:CPU占用百分比。
 -  
%MEM:内存占用百分比。
 -  
VSZ:虚拟内存大小(KB)。
 -  
RSS:实际物理内存占用(KB)。
 -  
TTY:终端关联(
?表示无终端,如守护进程)。 -  
STAT:进程状态(如
S=睡眠,R=运行,+=前台进程)。 -  
START:进程启动时间。
 -  
TIME:累计CPU占用时间。
 -  
COMMAND:进程名称或命令行。
 
示例分析:
-  
Nginx 进程(PID=1234):
-  
CPU占用0.5%,内存2%,作为工作进程(
nginx: worker process)运行。 -  
状态
S表示可中断睡眠(可能在等待网络请求)。 
 -  
 -  
Python 脚本(PID=5678):
-  
高CPU占用(2.0%),状态
R+表示正在运行且是前台进程。 -  
终端
pts/0表示由用户通过SSH或终端直接启动。 
 -  
 
示例 2:ps -ef 输出解析
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Aug01 ?        00:00:12 /sbin/init
root       567     1  0 Aug01 ?        00:00:05 /usr/lib/systemd/systemd-journald
nginx     1234  1233  0 Aug02 ?        00:01:23 nginx: worker process 
字段说明:
-  
PPID:父进程ID(如PID=1233是Nginx主进程)。
 -  
C:CPU利用率(粗略值)。
 -  
CMD:完整命令行(可能包含参数)。
 
实际应用:
-  
查找父进程关系:
ps -ef | grep nginx可查看Nginx主进程(PPID=1)及其子进程。 
3.2.2. top 命令:实时进程监控
 
作用:动态显示系统资源使用情况和进程状态(实时刷新)。
 基本操作:
top          # 启动实时监控
按 `P`       # 按CPU使用率排序
按 `M`       # 按内存使用率排序
按 `k`       # 终止指定PID的进程
按 `q`       # 退出 
top 输出解析
 
第一部分:系统资源概览(了解)
top - 14:20:30 up 10 days,  2:15,  2 users,  load average: 0.50, 0.30, 0.20
Tasks: 120 total,   1 running, 119 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.6 us,  2.3 sy,  0.0 ni, 91.8 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7986.2 total,   1024.5 free,   4096.0 used,   2865.7 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   3560.2 avail Mem 
关键字段:
-  
load average:系统1/5/15分钟的平均负载(数值≈CPU核心数为理想状态)。
 -  
Tasks:进程总数及状态分布(运行、睡眠、停止、僵尸)。
 -  
%Cpu(s):
-  
us:用户空间CPU占用(如应用程序)。 -  
sy:内核空间CPU占用(如系统调用)。 -  
wa:I/O等待时间(高表示磁盘瓶颈)。 -  
id:空闲CPU百分比。 
 -  
 -  
内存:总内存、空闲、已用、缓存使用情况。
 -  
Swap:交换空间使用量(高使用率可能表示物理内存不足)。
 
第二部分:进程列表
PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
5678 user      20   0  250000   5000   3000 R  20.0   0.1   0:10.05 python script.py
1234 nginx     20   0  300000  20000  10000 S   0.5   0.2   1:23.00 nginx: worker process1 root      20   0  169316  13056   8000 S   0.0   0.1   0:12.00 /sbin/init 
关键字段:
-  
PR:进程优先级(值越小优先级越高)。
 -  
NI:进程的“谦让度”(Nice值,范围-20~19,影响优先级越小表示优先级越高)。
 -  
VIRT:虚拟内存总量(KB)。
 -  
RES:实际物理内存占用(KB)。
 -  
SHR:共享内存大小(KB)。
 -  
S:进程状态(同
ps的STAT)。 -  
%CPU/%MEM:CPU/内存占用百分比。
 -  
TIME+:累计CPU时间(精确到百分之一秒)。
 
总结:ps vs top
 
| 场景 | ps | top | 
|---|---|---|
| 用途 | 静态查看某一时刻的进程快照 | 实时监控进程及系统资源动态变化 | 
| 输出更新 | 一次性输出,不刷新 | 默认每3秒刷新一次 | 
| 交互性 | 无 | 支持按键排序、终止进程等操作 | 
| 适用场景 | 快速查找进程信息(如PID、启动命令) | 实时诊断资源瓶颈(如CPU、内存占用高) | 
3.3终止进程(掌握)
kill -9 PID:强制终止无响应进程(可能导致数据丢失,慎用)。
pkill -f "pattern":批量终止匹配特定模式的进程。
kill 命令基础
-  
作用:向进程发送信号(默认发送
SIGTERM,请求进程终止)。 -  
语法:
kill [选项] <PID> # 终止指定PID的进程 kill -<信号名或编号> <PID> # 发送特定信号 
1.常用信号及作用(表格总结)
| 信号编号 | 信号名 | 默认行为 | 典型用途 | 示例场景 | 
|---|---|---|---|---|
1 | SIGHUP | 挂起 | 重新加载配置(守护进程常监听此信号以重载配置)。 | kill -1 1234:通知Nginx重载配置文件(等效于 nginx -s reload)。 | 
2 | SIGINT | 中断 | 键盘中断(等同于按 Ctrl+C),请求进程终止。 | 前台进程按 Ctrl+C 终止时触发此信号。 | 
9 | SIGKILL | 强制终止进程 | 立即杀死进程,无法被捕获或忽略(慎用,可能导致数据丢失)。 | kill -9 5678:强制终止无响应的进程(如卡死的Python脚本)。 | 
15 | SIGTERM | 默认终止信号 | 请求进程正常退出,允许进程清理资源(优雅终止)。 | kill 1234 或 kill -15 1234:正常终止进程(推荐首选)。 | 
18 | SIGCONT | 恢复进程执行 | 恢复被暂停的进程(与 SIGSTOP 配合使用)。 | kill -18 1234:恢复PID 1234的进程(如被 Ctrl+Z 暂停的进程)。 | 
19 | SIGSTOP | 暂停进程 | 立即暂停进程,不可被捕获或忽略(进程进入 T 状态)。 | kill -19 1234:暂停进程(常用于调试或资源控制)。 | 
3 | SIGQUIT | 终止并生成核心转储 | 类似 SIGINT,但会触发核心转储(调试用途)。 | kill -3 1234:调试时获取进程崩溃的堆栈信息。 | 
20 | SIGTSTP | 暂停进程(可捕获) | 终端暂停信号(等同于按 Ctrl+Z),进程可自定义处理。 | 按 Ctrl+Z 暂停前台进程,进程可执行清理操作后暂停。 | 
示例场景分析
1. 优雅终止进程(SIGTERM)
kill 1234 # 发送SIGTERM(15)请求进程正常退出
-  
适用场景:终止Web服务器(如Nginx)、数据库(如MySQL)等需要保存数据的进程。
 -  
优势:进程可执行清理操作(如关闭文件、释放连接)。
 
2. 强制终止无响应进程(SIGKILL)
kill -9 5678 # 强制终止PID 5678的进程
-  
适用场景:进程卡死或拒绝响应
SIGTERM。 -  
风险:可能导致数据丢失或资源泄漏(如未保存的文件、未释放的锁)。
 
3. 重新加载服务配置(SIGHUP)
kill -1 1234 # 通知进程重载配置(如Nginx、Apache)
-  
原理:守护进程(如Nginx)会监听
SIGHUP信号并重新读取配置文件。 
4. 暂停与恢复进程(SIGSTOP/SIGCONT)
kill -19 1234 # 暂停进程(进入停止状态) kill -18 1234 # 恢复进程运行
-  
场景:临时释放CPU资源或调试进程状态。
 
3.4 服务管理/守护进程(掌握)
systemctl:管理系统服务(如Web服务器、数据库)。
journalctl -u 服务名:查看服务日志(配合systemctl使用)。
3.4.1  systemctl 核心功能
 
用于管理系统服务(启动、停止、重启)、查看状态、设置开机自启等,是 systemd 服务管理工具的核心命令。
3.4.2 常用命令及示例
1. 服务状态管理
| 命令 | 作用 | 示例分析 | 
|---|---|---|
systemctl start <服务名> | 启动服务 | systemctl start nginx:启动 Nginx Web 服务器。 | 
systemctl stop <服务名> | 停止服务 | systemctl stop mysql:停止 MySQL 数据库服务。 | 
systemctl restart <服务名> | 重启服务 | systemctl restart sshd:重启 SSH 服务(应用新配置)。 | 
systemctl reload <服务名> | 重新加载配置 | systemctl reload nginx:重新加载 Nginx 配置(不中断服务)。 | 
systemctl status <服务名> | 查看服务状态 | systemctl status docker:查看 Docker 服务是否运行及详细日志。 | 
systemctl enable <服务名> | 设置开机自启 | systemctl enable httpd:设置 Apache 服务开机自动启动。 | 
systemctl disable <服务名> | 禁用开机自启 | systemctl disable postfix:禁止邮件服务开机启动。 | 
systemctl is-enabled <服务名> | 检查服务是否开机自启 | systemctl is-enabled cron:查看定时任务服务是否启用开机启动。 | 
systemctl mask <服务名> | 禁止服务被启动 | systemctl mask telnet.socket:彻底禁用 Telnet 服务(即使手动也无法启动)。 | 
systemctl unmask <服务名> | 解除服务的禁止启动状态 | systemctl unmask telnet.socket:恢复 Telnet 服务的启动权限。 | 
2. 系统与服务监控
| 命令 | 作用 | 示例分析 | 
|---|---|---|
systemctl list-units | 列出所有已加载的服务 | systemctl list-units | grep running:筛选出当前正在运行的服务。 | 
systemctl list-unit-files | 列出所有已安装的服务文件 | systemctl list-unit-files --type=service:仅显示服务类型的单元文件。 | 
systemctl --failed | 查看启动失败的服务 | 用于诊断系统启动失败的服务(如依赖缺失或配置错误)。 | 
systemctl daemon-reload | 重载 systemd 配置 | 修改服务文件(如 .service)后必须执行此命令,使配置生效。 | 
3.服务日志查看
| 命令 | 作用 | 示例分析 | 
|---|---|---|
journalctl -u <服务名> | 查看指定服务的日志 | journalctl -u nginx:查看 Nginx 服务的所有日志。 | 
journalctl -u <服务名> -f | 实时跟踪服务日志 | journalctl -u mysql -f:实时监控 MySQL 日志输出(类似 tail -f)。 | 
journalctl --since "时间" | 按时间过滤日志 | journalctl -u sshd --since "2023-08-01":查看 SSH 服务 8 月 1 日后的日志。 | 
3.4.3 实际场景示例分析
场景 1:部署 Nginx 服务
# 1. 安装 Nginx
sudo apt install nginx# 2. 启动服务并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx# 3. 检查状态(确保显示 "active (running)")
sudo systemctl status nginx# 4. 修改配置后重新加载(不中断服务)
sudo systemctl reload nginx 
场景 2:诊断服务启动失败
# 1. 查看所有失败的服务
systemctl --failed# 输出示例:
# UNIT          LOAD   ACTIVE SUB    DESCRIPTION
# mysql.service loaded failed failed MySQL Community Server# 2. 查看详细日志
journalctl -u mysql# 3. 根据日志修复问题(如配置错误、端口冲突)
# 4. 重启服务
sudo systemctl restart mysql 
3.4.4 服务状态解释
通过 systemctl status <服务名> 可查看服务的详细状态,常见状态包括:
-  
active (running):服务正在运行。 -  
active (exited):服务已成功完成单次任务(如定时任务)。 -  
inactive (dead):服务未运行。 -  
failed:服务启动失败(需检查日志)。 
4.网络基础配置(5%-10%)
要求:
- 会查看当前网络设备的信息
 - 会配置网络的基本参数如ip地址、子网掩码,网络地址,虚拟地址等
 - 指定一个虚拟的MAC地址,怎么指定
 - 知道如何去创建一个网络连接
 
4.1 网络配置文件(了解)
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=ens33
UUID=16862343-b55e-4248-b05d-a3ea662a84a4
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.80.10
PREFIX=24
GATEWAY=192.168.80.2
DNS1=192.168.80.2
DNS2=114.114.114.114
 
解释
- 网络类型 
TYPE=Ethernet:指定网络连接类型为以太网,表明这是用于配置以太网网卡的文件 。
 - 代理及浏览器相关 
PROXY_METHOD=none:表示不使用代理方法。BROWSER_ONLY=no:意味着不是仅用于浏览器相关的网络配置 。
 - IP 地址获取方式 
BOOTPROTO=none:说明网卡采用静态 IP 地址配置,不通过 DHCP 自动获取 IP ,等同于ipv4.method manual。
 - 路由及 IPv4 相关 
DEFROUTE=yes:表示该连接设置的路由为默认路由,即通过此连接发送没有特定路由的流量 。IPV4_FAILURE_FATAL=no:IPv4 配置失败时,不会导致网络接口配置整体失效 。
 - IPv6 相关 
IPV6INIT=no:表示不启用 IPv6 功能 。
 - 连接标识相关 
NAME=ens33:连接的名称为ens33,用于标识该网络连接 。UUID=16862343-b55e-4248-b05d-a3ea662a84a4:通用唯一识别码,用于唯一标识该网络连接配置 。DEVICE=ens33:指定网络设备名称为ens33,即配置针对的是名为ens33的网卡 。
 - 启动及 IP 配置相关 
ONBOOT=yes:表示开机时自动启动该网络连接 。IPADDR=192.168.80.10:设置网卡的 IPv4 地址为192.168.80.10。PREFIX=24:子网掩码的前缀长度为 24,等同于255.255.255.0。GATEWAY=192.168.80.2:设置网关地址为192.168.80.2。DNS1=192.168.80.2:首选 DNS 服务器地址为192.168.80.2。DNS2=114.114.114.114:备用 DNS 服务器地址为114.114.114.114。
 
其他补充参数解释
NETMASK:子网掩码,用于划分 IP 地址的网络部分和主机部分,和PREFIX作用相关,只是表示形式不同 。BROADCAST:广播地址,在局域网中用于向所有主机发送消息的特殊地址 。HWADDR/MACADDR:MAC 地址,网卡的硬件地址,全球唯一,用于在链路层标识设备 。PEERDNS:决定是否根据 DHCP 设置修改/etc/resolv.conf中的 DNS 配置 。NM_CONTROLLED:控制 Network Manager 是否管理该网络接口 。USERCTL:用于控制非 root 用户是否有权限管理该网络接口 。IPV6ADDR:用于设置 IPv6 地址及前缀长度 。
4.2 四个命令 ifconfig(被替代) nmcli netstat ip
| 命令 | 用途 | 基本语法/示例 | 说明 | 状态 | 
|---|---|---|---|---|
ifconfig | 配置和查看网络接口(传统工具) | ifconfig eth0 upifconfig eth0 192.168.1.10 netmask 255.255.255.0 | 显示/设置IP地址、子网掩码、启用/禁用接口。 | 已过时,推荐使用 ip 命令。 | 
nmcli | 管理网络连接(NetworkManager工具) | nmcli dev statusnmcli con up "WiFi-Profile" | 动态管理WiFi、以太网连接,支持VPN、DNS等高级配置。 | 现代工具,适合桌面/服务器动态网络。 | 
netstat | 显示网络连接、路由表、端口监听状态 | netstat -tulnpnetstat -r | 查看TCP/UDP端口监听、路由表、连接统计。 | 部分过时,路由功能用 ip route,连接统计用 ss。 | 
ip | 多功能网络配置工具(iproute2套件) | ip addr showip route add default via 192.168.1.1ip link set eth0 up | 管理接口、IP地址、路由、ARP表等,替代 ifconfig、route、arp 等命令。 | 现代标准工具,功能全面。 | 
4.2.1 nmcli
ifconfig是临时的,nmcli会写到配置文件当中,变成一个永久有效的基本信息。
| 功能分类 | 命令/操作 | 示例 | 说明 | 
|---|---|---|---|
| 查看设备状态 | nmcli dev status | nmcli dev status | 列出所有网络设备(如 WiFi、以太网)及其连接状态。 | 
| 查看连接配置 | nmcli con show | nmcli con show | 显示所有已保存的网络连接配置(名称、UUID、类型等)。 | 
| 启动/停止连接 | nmcli con up <连接名>nmcli con down <连接名> | nmcli con up "有线连接 1"nmcli con down eth0 | 激活或停用指定连接(按名称或 UUID)。 | 
| 配置静态 IP | nmcli con mod <连接名> ipv4.addresses <IP/掩码>+ ipv4.gateway <网关> | nmcli con mod eth0 ipv4.addresses 192.168.1.10/24ipv4.gateway 192.168.1.1 | 为连接设置静态 IP 地址和网关(需重启连接生效)。 | 
| 配置 DNS | nmcli con mod <连接名> ipv4.dns "<DNS1 DNS2>" | nmcli con mod eth0 ipv4.dns "8.8.8.8 8.8.4.4" | 设置 DNS 服务器(多个 DNS 用空格分隔)。 | 
| 启用 DHCP | nmcli con mod <连接名> ipv4.method auto | nmcli con mod eth0 ipv4.method auto | 将连接配置为自动获取 IP(DHCP)。 | 
| 管理 WiFi | nmcli dev wifi listnmcli dev wifi connect <SSID> password <密码> | nmcli dev wifi connect MyWiFi password mypass123 | 扫描可用 WiFi 并连接到指定网络。 | 
| 创建新连接 | nmcli con add type <类型> ifname <接口> ... | nmcli con add type ethernet ifname eth0 con-name "Static-LAN" | 创建新连接(如以太网),后续需配置 IP/DNS。 | 
| 删除连接 | nmcli con del <连接名> | nmcli con del "旧连接" | 删除已保存的连接配置。 | 
详细场景示例分析
场景 1:配置静态 IP 和 DNS
# 1. 查看当前以太网连接名(假设为 "eth0")
nmcli con show# 2. 设置静态 IP、网关和 DNS
nmcli con mod eth0 ipv4.addresses 192.168.1.100/24
nmcli con mod eth0 ipv4.gateway 192.168.1.1
nmcli con mod eth0 ipv4.dns "8.8.8.8 8.8.4.4"
nmcli con mod eth0 ipv4.method manual  # 指定手动配置# 3. 重启连接使配置生效
nmcli con down eth0 && nmcli con up eth0# 4. 验证
ip addr show eth0
ping google.com 
场景 2:创建并配置新以太网连接
# 1. 创建名为 "Office-LAN" 的连接
nmcli con add type ethernet ifname eth0 con-name "Office-LAN"# 2. 配置静态 IP 和 DNS
nmcli con mod "Office-LAN" ipv4.addresses 10.0.0.5/24
nmcli con mod "Office-LAN" ipv4.gateway 10.0.0.1
nmcli con mod "Office-LAN" ipv4.dns "10.0.0.2"# 3. 启用连接
nmcli con up "Office-LAN" 
常用选项说明
| 选项 | 作用 | 
|---|---|
con | 管理连接配置(如 con show、con up)。 | 
dev | 操作物理设备(如 dev status、dev disconnect)。 | 
-a 或 --active | 仅显示活动连接(如 nmcli con show --active)。 | 
-p | 以友好格式输出(更易读,适合脚本调试)。 | 
+ 修改多值参数 | 使用 +ipv4.dns 添加 DNS(保留原有值),直接赋值会覆盖。 | 
4.2.2 ip
| 子命令 | 用途 | 常用选项/参数 | 示例 | 说明 | 
|---|---|---|---|---|
ip addr | 管理 IP 地址 | add, del, show, flush | ip addr show eth0ip addr add 192.168.1.10/24 dev eth0 | 查看/添加/删除接口的 IP 地址。 | 
ip link | 管理网络接口 | set, show, up, down | ip link set eth0 upip link show | 启用/禁用接口、设置 MTU、查看接口状态。 | 
ip route | 管理路由表 | add, del, show, flush | ip route showip route add default via 192.168.1.1 | 添加/删除路由、设置默认网关、查看路由规则。 | 
ip neigh | 管理 ARP 表(邻居) | show, add, del, flush | ip neigh showip neigh add 192.168.1.1 lladdr 00:11:22:33:44:55 dev eth0 | 查看/管理 ARP 缓存条目(IP 与 MAC 地址映射)。 | 
ip rule | 管理策略路由规则 | add, del, show | ip rule showip rule add from 10.0.0.0/24 lookup 100 | 定义基于源 IP、标记等的路由策略(高级路由场景)。 | 
ip tunnel | 管理隧道接口 | add, del, show | ip tunnel add mytun mode gre remote 203.0.113.1 local 198.51.100.1 | 创建 GRE、IPIP 等隧道接口。 | 
ip maddr | 管理多播地址 | add, del, show | ip maddr show dev eth0 | 查看/配置接口的多播地址。 | 
ip monitor | 实时监控网络事件 | address, route, link | ip monitor addressip monitor route | 实时跟踪 IP 地址、路由或链路状态变化。 | 
常用操作示例详解
1. 查看网络接口信息
ip addr show      # 显示所有接口的 IP 地址
ip link show eth0 # 查看 eth0 接口的 MAC 地址和状态 
2. 配置静态 IP 地址
ip addr add 192.168.1.10/24 dev eth0  # 为 eth0 添加 IPv4 地址
ip link set eth0 up                   # 启用接口 
3. 设置默认网关
ip route add default via 192.168.1.1  # 设置默认网关
ip route show                         # 验证路由表 
关键选项说明
| 选项 | 适用子命令 | 作用 | 
|---|---|---|
add | addr, route | 添加 IP 地址、路由规则等。 | 
del | addr, route | 删除指定配置。 | 
show | 所有子命令 | 显示当前配置信息(如 ip addr show)。 | 
flush | addr, route | 清空所有配置(如 ip addr flush eth0 清空 eth0 的所有 IP)。 | 
dev <接口> | 所有子命令 | 指定操作的网络接口(如 dev eth0)。 | 
via <网关> | ip route | 指定网关地址(如 via 192.168.1.1)。 | 
5.杂项
如何定义符号链接
假设在 Linux 系统中有以下文件和目录结构:
/home └── user├── documents│ └── file.txt└── links定义符号链接
使用
ln -s命令来创建符号链接,语法为ln -s [目标文件或目录] [符号链接名称]。例如,要创建一个指向/home/user/documents/file.txt的符号链接link.txt,可以在终端中输入ln -s /home/user/documents/file.txt /home/user/links/link.txt。使用符号链接
通过符号链接
link.txt来访问文件,例如使用cat /home/user/links/link.txt,系统会先读取link.txt中的目标路径/home/user/documents/file.txt,然后再去访问该路径下的file.txt文件并显示其内容。如果删除符号链接link.txt,使用rm /home/user/links/link.txt命令,这并不会影响到实际的file.txt文件及其内容。但如果删除了file.txt文件,再访问link.txt时,就会出现错误提示,因为它所指向的目标文件已不存在。如何创建命令的别名?