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

一、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/bash
root
:用户名,是用户登录系统时使用的名称 。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/nologin
bin
:用户名,系统用户,主要用于运行一些系统相关的二进制文件程序 。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 username sudo 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的参数详细讲解:
-
-c
:加上备注文字sudo useradd -c "This is a test user" testuser
解释 :此命令创建了一个名为 testuser
的新用户,并且添加了备注信息 "This is a test user"。你可以通过查看 /etc/passwd
文件中该用户的记录,在对应字段看到添加的备注内容。
-
-d
:指定新账户的主目录sudo useradd -d /home/newtestuser testuser2
解释 :该命令创建了用户 testuser2
,并将其主目录指定为 /home/newtestuser
。默认情况下,useradd
会为用户在 /home
目录下创建以用户名命名的主目录,但使用 -d
选项可以自定义主目录位置。
-
-g
:指定新账户主组的名称或 ID通过组名指定
sudo useradd -g staff testuser3
通过组 ID 指定
sudo useradd -g 1001 testuser4
解释:
第一条命令创建用户 testuser3
,并将其主组设置为 staff
组。
第二条命令创建用户 testuser4
,将其主组设置为 ID 为 1001
的组。可以通过 /etc/group
文件查看组名和对应的组 ID。
-
-G
:设置新账户的附加组列表sudo useradd -G staff,developers testuser5
解释 :此命令创建了用户 testuser5
,并将其添加到 staff
和 developers
这两个附加组中。除了主组外,用户可以属于多个附加组,从而拥有这些组的相关权限。
-
-p
:设置加密后的新账户密码假设加密后的密码是通过 openssl passwd -1 生成的
encrypted_password=(openssl passwd -1 "password123") sudo useradd -p "encrypted_password" testuser6
解释 :首先使用 openssl passwd -1
命令生成了密码 "password123" 的加密形式,然后将其作为参数传递给 -p
选项,为新创建的用户 testuser6
设置了加密后的密码。
-
-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 file2 cp -r dir1 dir2 (复制目录) |
复制文件或目录。 | ✔️ -r 用于目录复制 |
|
mv |
mv old.txt new.txt mv file /target (移动文件) |
移动或重命名文件。 | ✔️ 高频操作 | |
rm |
rm file rm -r dir (删除目录) rm -f (强制删除) |
删除文件或目录。慎用! | ✔️ -r 和-f 需谨慎 |
|
mkdir |
mkdir dirname mkdir -p dir1/dir2 (递归创建) |
创建目录。 | ||
touch |
touch file.txt |
创建空文件或更新文件时间戳。 | ||
cat |
cat file.txt cat file1 > file2 (合并内容) |
查看或拼接文件内容。 | ✔️ 快速查看文件 | |
more /less |
more file.txt less file.txt (支持上下滚动) |
分页查看长文件内容。 | ✔️ less 功能更强大 |
|
find |
find /path -name "*.txt" find . -type f (搜索文件) |
根据名称、类型等查找文件。 | ✔️ 高级搜索必备 | |
权限管理 | chmod |
chmod 755 file chmod 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/file wget 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 package dnf 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 file unzip archive.zip |
压缩/解压.zip 文件。 |
||
搜索与过滤 | grep |
grep "text" file grep -r "text" /dir (递归搜索) |
在文件中搜索文本模式。 | ✔️ 文本处理核心工具 |
find |
find / -name "*.log" -mtime +7 (查找7天前的日志文件) |
根据条件(名称、时间等)查找文件。 | ✔️ 高级文件搜索 | |
locate |
locate file.txt |
快速查找文件(依赖数据库更新)。 | ||
用户管理 | useradd |
useradd username useradd -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/log cd ../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
)。
-
权限对照表
数字模式 | 符号权限 | 说明 |
---|---|---|
700 |
rwx------ |
仅所有者可读写执行。 |
755 |
rwxr-xr-x |
所有者全权,其他用户只读。 |
777 |
rwxrwxrwx |
所有用户全权(慎用!)。 |
2.3.5 touch命令
touch
命令基础
-
作用:
-
创建空文件(若文件不存在)。
-
更新文件时间戳 (访问时间
atime
、修改时间mtime
、元数据变更时间ctime
)。
-
-
默认行为:
-
若文件存在,更新
atime
和mtime
为当前时间。 -
若文件不存在,创建空文件并设置时间戳为当前时间。
-
命令语法与参数解析
参数 | 说明 | 示例 |
---|---|---|
无参数 | 创建空文件(若不存在)或更新现有文件的 atime 和 mtime 。 |
touch file.txt → 创建或更新时间戳 |
-a |
仅更新 atime (访问时间)。 |
touch -a file.txt → 更新访问时间 |
-m |
仅更新 mtime (修改时间)。 |
touch -m file.txt → 更新修改时间 |
-c |
不创建新文件(仅更新时间戳)。 | touch -c non_exist.txt → 若文件不存在,不创建 |
--date |
指定自定义时间戳(支持多种时间格式)。 | touch --date="2023-01-01" file.txt → 设置时间为 2023 年 1 月 1 日 |
-r |
同步其他文件的时间戳(复制参考文件的时间)。 | touch -r source.txt target.txt → 使 target.txt 时间与 source.txt 相同 |
时间戳类型说明
时间戳 | 全称 | 触发条件 | 查看方式 |
---|---|---|---|
atime | Access Time | 文件被读取(如 cat 、less )。 |
stat file.txt → Access |
mtime | Modification Time | 文件内容被修改(如写入数据)。 | stat file.txt → Modify |
ctime | Change Time | 文件元数据变更(如权限、所有者、链接数等)。 | stat file.txt → Change |
示例与场景分析
场景 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 时间戳,秒数)。
注意事项
更新时间戳需对文件有写权限。
创建文件需对目录有写权限。
常用组合命令
用途 | 命令示例 |
---|---|
批量创建文件 | touch file{1..10}.txt |
快速更新所有文件时间戳 | touch * 或 touch ./ (更新当前目录下所有文件) |
修复文件时间 | touch -m --date="YYYY-MM-DD" filename |
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)实现进程间单向数据传输
基本语法与示例
-
基础语法
command1 | command2 | command3 ...
-
规则:
-
仅传递
command1
的标准输出(stdout
),不传递错误输出(stderr
) -
数据流单向流动,读取后从管道中清除,不可逆
-
- 典型用法示例
场景 | 示例命令 | 功能解析 |
---|---|---|
过滤内容 | `ls -l | grep ".txt"` |
统计数量 | `ps aux | grep "nginx" |
多级处理 | `dmesg | grep "error" |
排序与去重 | **`cat data.txt | sort |
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 |
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 process
1 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 |
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 up ifconfig eth0 192.168.1.10 netmask 255.255.255.0 |
显示/设置IP地址、子网掩码、启用/禁用接口。 | 已过时 ,推荐使用 ip 命令。 |
nmcli |
管理网络连接(NetworkManager工具) | nmcli dev status nmcli con up "WiFi-Profile" |
动态管理WiFi、以太网连接,支持VPN、DNS等高级配置。 | 现代工具,适合桌面/服务器动态网络。 |
netstat |
显示网络连接、路由表、端口监听状态 | netstat -tulnp netstat -r |
查看TCP/UDP端口监听、路由表、连接统计。 | 部分过时 ,路由功能用 ip route ,连接统计用 ss 。 |
ip |
多功能网络配置工具 (iproute2 套件) |
ip addr show ip route add default via 192.168.1.1 ip 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/24 ipv4.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 list nmcli 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 eth0 ip addr add 192.168.1.10/24 dev eth0 |
查看/添加/删除接口的 IP 地址。 |
ip link |
管理网络接口 | set , show , up , down |
ip link set eth0 up ip link show |
启用/禁用接口、设置 MTU、查看接口状态。 |
ip route |
管理路由表 | add , del , show , flush |
ip route show ip route add default via 192.168.1.1 |
添加/删除路由、设置默认网关、查看路由规则。 |
ip neigh |
管理 ARP 表(邻居) | show , add , del , flush |
ip neigh show ip 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 show ip 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 address ip 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
时,就会出现错误提示,因为它所指向的目标文件已不存在。如何创建命令的别名?