Linux复习笔记(一)基础命令和操作

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

一、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 存储经加密算法处理后的真实密码
互补关系体现 为系统提供用户基本属性框架,与密码信息分离,保障安全性 补充存储密码及相关属性,与基本信息配合完成用户身份验证

示例:

解释:

  1. 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,提供命令行操作环境 。
  2. 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(一般了解就行)

文件格式:

示例:

分析:

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

文件格式:

示例:

分析:

  1. root:x:0:
    • root :用户组名,此为系统中权限最高的用户组,通常超级用户 root 属于该组。
    • x:密码占位符,在早期系统中用于存放用户组密码,但现在很少使用,一般仅为占位。
    • 0 :组 ID(GID),0 这个 GID 具有特殊意义,与超级用户相关联。
    • 空字段 :该字段用于记录属于这个用户组的用户名列表,这里为空,不代表没有成员 ,像 root 用户默认属于 root 组,但不一定在此列出。
  2. 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的参数详细讲解:

  1. -c:加上备注文字

    sudo useradd -c "This is a test user" testuser

解释 :此命令创建了一个名为 testuser 的新用户,并且添加了备注信息 "This is a test user"。你可以通过查看 /etc/passwd 文件中该用户的记录,在对应字段看到添加的备注内容。

  1. -d:指定新账户的主目录

    sudo useradd -d /home/newtestuser testuser2

解释 :该命令创建了用户 testuser2,并将其主目录指定为 /home/newtestuser。默认情况下,useradd 会为用户在 /home 目录下创建以用户名命名的主目录,但使用 -d 选项可以自定义主目录位置。

  1. -g:指定新账户主组的名称或 ID

    通过组名指定

    sudo useradd -g staff testuser3

    通过组 ID 指定

    sudo useradd -g 1001 testuser4

解释

第一条命令创建用户 testuser3,并将其主组设置为 staff 组。

第二条命令创建用户 testuser4,将其主组设置为 ID 为 1001 的组。可以通过 /etc/group 文件查看组名和对应的组 ID。

  1. -G:设置新账户的附加组列表

    sudo useradd -G staff,developers testuser5

解释 :此命令创建了用户 testuser5,并将其添加到 staffdevelopers 这两个附加组中。除了主组外,用户可以属于多个附加组,从而拥有这些组的相关权限。

  1. -p:设置加密后的新账户密码

    假设加密后的密码是通过 openssl passwd -1 生成的

    encrypted_password=(openssl passwd -1 "password123") sudo useradd -p "encrypted_password" testuser6

解释 :首先使用 openssl passwd -1 命令生成了密码 "password123" 的加密形式,然后将其作为参数传递给 -p 选项,为新创建的用户 testuser6 设置了加密后的密码。

  1. -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 是目标组的名称,如示例中将用户 johndevelopers 组中移除。执行该命令后,用户将不再拥有该组的相关权限。
查看组成员 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中组的执行位显示为sS

说明:

  • 设置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(目录)
所有者与所属组 通过 chownchgrp 修改文件所有者和组。
目录结构 /(根目录) 所有目录和文件的起点。 ✔️ 绝对路径起点
/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 hardlinkln -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 将字节转换为 KMG,便于阅读。 ✔️ 文件大小直观化
-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. cdcd ~ 切换到当前用户的家目录(等价于 cd $HOME)。 无需额外权限 cd → 进入 /home/user
3. cd ~USERNAME 切换到指定用户的家目录(如 ~root/root~nginx/var/www 等)。 需管理员权限(sudo sudo cd ~root → 进入 /root(普通用户无权直接访问)
4. cd - 切换到前一个工作目录(类似"返回"功能)。 需前目录有权限 cd /optcd /varcd - → 返回 /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 → 创建 aa/ba/b/c(即使 ab 不存在)
-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 及其子目录 configdatalogs

    • 所有新目录权限设为 755rwxr-xr-x)。

权限对照表

数字模式 符号权限 说明
700 rwx------ 仅所有者可读写执行。
755 rwxr-xr-x 所有者全权,其他用户只读。
777 rwxrwxrwx 所有用户全权(慎用!)。
2.3.5 touch命令

touch 命令基础

  • 作用

    1. 创建空文件(若文件不存在)。

    2. 更新文件时间戳 (访问时间 atime、修改时间 mtime、元数据变更时间 ctime)。

  • 默认行为

    • 若文件存在,更新 atimemtime 为当前时间。

    • 若文件不存在,创建空文件并设置时间戳为当前时间。


命令语法与参数解析

参数 说明 示例
无参数 创建空文件(若不存在)或更新现有文件的 atimemtime 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 文件被读取(如 catless)。 stat file.txtAccess
mtime Modification Time 文件内容被修改(如写入数据)。 stat file.txtModify
ctime Change Time 文件元数据变更(如权限、所有者、链接数等)。 stat file.txtChange

示例与场景分析

场景 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.txtfile2.txt 合并为 combined.txt
创建文件 cat > newfile.txt(输入内容后按 Ctrl+D 保存) 创建 newfile.txt 并写入用户输入的内容
显示行号 cat -n script.sh 查看 script.sh 并显示行号

2.4.​​3. 典型场景示例分析​
​场景 1:日志分析(grepcat 结合)​
复制代码
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 系统中用于实现 ​​命令间数据传递​​ 的核心工具,其核心作用包括:

  1. ​串联命令​ ​:将一个命令的标准输出(stdout)作为另一个命令的标准输入(stdin),形成数据处理链

  2. ​高效过滤与组合​​:通过多命令协作,实现复杂的数据处理逻辑(如过滤、排序、统计等)

  3. ​进程间通信​​:基于匿名管道(Anonymous Pipe)实现进程间单向数据传输


基本语法与示例​

  1. ​基础语法​

    command1 | command2 | command3 ...

  • ​规则​​:

    • 仅传递 command1 的标准输出(stdout),不传递错误输出(stderr

    • 数据流单向流动,读取后从管道中清除,不可逆

  1. ​典型用法示例​
​场景​ ​示例命令​ ​功能解析​
​过滤内容​ `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 结合 &bgfg 使用,管理后台任务。 运行 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) 进程被信号暂停(如SIGSTOPSIGTSTP),可通过信号恢复(如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:进程名称或命令行。

示例分析
  1. Nginx 进程(PID=1234):

    • CPU占用0.5%,内存2%,作为工作进程(nginx: worker process)运行。

    • 状态S表示可中断睡眠(可能在等待网络请求)。

  2. 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 1234kill -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

解释

  1. 网络类型
    • TYPE=Ethernet:指定网络连接类型为以太网,表明这是用于配置以太网网卡的文件 。
  2. 代理及浏览器相关
    • PROXY_METHOD=none:表示不使用代理方法。
    • BROWSER_ONLY=no:意味着不是仅用于浏览器相关的网络配置 。
  3. IP 地址获取方式
    • BOOTPROTO=none:说明网卡采用静态 IP 地址配置,不通过 DHCP 自动获取 IP ,等同于 ipv4.method manual
  4. 路由及 IPv4 相关
    • DEFROUTE=yes:表示该连接设置的路由为默认路由,即通过此连接发送没有特定路由的流量 。
    • IPV4_FAILURE_FATAL=no:IPv4 配置失败时,不会导致网络接口配置整体失效 。
  5. IPv6 相关
    • IPV6INIT=no:表示不启用 IPv6 功能 。
  6. 连接标识相关
    • NAME=ens33:连接的名称为 ens33 ,用于标识该网络连接 。
    • UUID=16862343-b55e-4248-b05d-a3ea662a84a4:通用唯一识别码,用于唯一标识该网络连接配置 。
    • DEVICE=ens33:指定网络设备名称为 ens33 ,即配置针对的是名为 ens33 的网卡 。
  7. 启动及 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表等,替代 ifconfigroutearp 等命令。 现代标准工具,功能全面。
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 showcon up)。
dev 操作物理设备(如 dev statusdev 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 时,就会出现错误提示,因为它所指向的目标文件已不存在。

如何创建命令的别名?

相关推荐
帅得不敢出门36 分钟前
Ubuntu打开中文文本乱码
linux·运维·ubuntu·vim
夏季疯1 小时前
学习笔记:黑马程序员JavaWeb开发教程(2025.3.30)
java·笔记·学习
pp-周子晗(努力赶上课程进度版)1 小时前
【计算机网络-传输层】传输层协议-UDP
linux·计算机网络·udp
only火车头1 小时前
mdadm 报错: buffer overflow detected
linux·mdadm·blktest
Flaming_1231 小时前
将develop分支的修改同步到main分支
linux·git·merge
weixin_428498492 小时前
使用 pgrep 杀掉所有指定进程
linux
rayylee2 小时前
Ubuntu也开始锈化了?Ubuntu 计划在 25.10 版本开始引入 Rust Coreutils
linux·ubuntu·rust
gxh19922 小时前
springboot微服务连接nacos超时
linux·后端·微服务·nacos
@电子爱好者2 小时前
Vscode+git笔记
linux·职场和发展
unique_pursuit2 小时前
《Overlapping Experiment Infrastructure: More, Better, Faster》论文阅读笔记
论文阅读·笔记