一、常用操作以及概念
1 快捷键
Tab:命令和文件名补全;
Ctrl+C:中断正在运行的程序;
Ctrl+D:结束键盘输入(End Of File,EOF)
2 求助
1. --help
指令的基本用法与选项介绍。
比如查看 ls 命令的帮助信息:
ls --help
2. man
man 是 manual 的缩写,将指令的具体信息显示出来。
示例:查看 date 命令的手册页:
man date
当执行 man date 时,有 DATE(1) 出现,其中的数字代表指令的类型,常用的数字及其类型如下:
代号 | 类型 |
---|---|
1 | 用户在 shell 环境中可以操作的指令或者可执行文件 |
5 | 配置文件 |
8 | 系统管理员可以使用的管理指令 |
3. info
info 与 man 类似,但是 info 将文档分成一个个页面,每个页面可以跳转。
4. doc
/usr/share/doc 存放着软件的一整套说明文件。
3 关机
1. who
在关机前需要先使用 who 命令查看有没有其它用户在线。
2. sync
为了加快对磁盘文件的读写速度,位于内存中的文件数据不会立即同步到磁盘,因此关机之前需要先进行 sync 同步操作。
3. shutdown
## shutdown [-krhc] 时间 [信息]
-k : 不会关机,只是发送警告信息,通知所有在线的用户
-r : 将系统的服务停掉后就重新启动
-h : 将系统的服务停掉后就立即关机
-c : 取消已经在进行的 shutdown
4 PATH
可以在环境变量 PATH 中声明可执行文件的路径,路径之间用 : 分隔。
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin
5 sudo
sudo 允许一般用户使用 root 可执行的命令,不过只有在 /etc/sudoers 配置文件中添加的用户才能使用该指令。
6 包管理工具
RPM 和 DPKG 为最常见的两类软件包管理工具:
RPM 全称为 Redhat Package Manager,最早由 Red Hat 公司制定实施,随后被 GNU 开源操作系统接受并成为许多 Linux 系统的既定软件标准。YUM 基于 RPM,具有依赖管理和软件升级功能。
与 RPM 竞争的是基于 Debian 操作系统的 DEB 软件包管理工具 DPKG,全称为 Debian Package,功能方面与 RPM 相似。
7 Linux发行版
Linux 发行版是 Linux 内核及各种应用软件的集成版本。
基于的包管理工具 | 商业发行版 | 社区发行版 |
---|---|---|
RPM | Red Hat | Fedora / CentOS |
DPKG | Ubuntu | Debian |
8 VIM
Vim 是一个功能强大的文本编辑器,它具有三种主要模式,分别是 命令模式、插入模式 和 末行模式(指令列模式)。
1. 命令模式(Command Mode)
这是 Vim 的默认模式,用户进入命令模式后可以使用各种快捷键进行文本编辑、光标移动、文本删除、复制、粘贴等操作。
示例操作:
移动光标: h (左), j (下), k (上), l (右) 或者使用方向键。
删除文本: x (删除当前字符), dd (删除整行)。
复制文本: yy (复制整行), yw (复制到下一个单词)。
粘贴文本: p (在光标后粘贴), P (在光标前粘贴)。
保存并退出: 在命令模式下输入 :wq 或 ZZ 保存并退出。
2. 插入模式(Insert Mode)
在插入模式下,用户可以像使用普通文本编辑器一样输入文本。
进入方式:
在命令模式下按下 i (在光标前插入), a (在光标后插入), o (在当前行下方插入一行), O (在当前行上方插入一行)。
退出方式:按下 Esc 键返回命令模式。
3. 末行模式(Last Line Mode)
在末行模式下,用户可以在最底行输入各种命令,例如保存文件、退出编辑器、搜索文本、替换文本等。
进入方式:在命令模式下按下 :, /, 或 ?。
示例操作:
命令 | 作用 |
---|---|
:w | 写入磁盘 |
:w! | 当文件为只读时,强制写入磁盘。到底能不能写入,与用户对该文件的权限有关 |
:q | 离开 |
:q! | 强制离开不保存 |
:wq | 写入磁盘后离开 |
:wq! | 强制写入磁盘后离开 |
二、磁盘接口类型
Linux 系统中常见的磁盘接口主要包括以下几种:
2.1 SATA (Serial ATA)
-
定义: SATA 是一种串行接口,用于连接硬盘驱动器、光驱等存储设备。它是 ATA(Advanced Technology Attachment)的串行版本,具有更高的数据传输速率和更远的传输距离。
-
特点:
-
传输速率: SATA 接口的传输速率从 SATA 1.0 的 1.5 Gb/s 到 SATA 3.0 的 6 Gb/s。
-
热插拔: SATA 支持热插拔,可以在系统运行时插入或移除设备。
-
兼容性: SATA 接口通常与主板上的 SATA 控制器配合使用,支持多种存储设备。
-
-
应用场景: SATA 接口广泛应用于个人计算机、服务器和存储设备中,适合连接机械硬盘(HDD)和固态硬盘(SSD)。
2.2 SAS (Serial Attached SCSI)
-
定义: SAS 是一种串行接口,用于连接 SCSI(Small Computer System Interface)设备。它具有更高的性能和可靠性,支持多种存储设备。
-
特点:
-
传输速率: SAS 接口的传输速率从 SAS 1.0 的 3 Gb/s 到 SAS 4.0 的 24 Gb/s。
-
兼容性: SAS 接口兼容 SATA 设备,可以通过 SAS 控制器连接 SATA 硬盘。
-
多路径支持: SAS 支持多路径连接,可以提高数据传输的可靠性和性能。
-
-
应用场景: SAS 接口广泛应用于企业级存储系统和服务器中,适合需要高可靠性和高性能的存储环境。
2.3 PCIe NVMe (Non-Volatile Memory Express)
-
定义: NVMe 是一种基于 PCIe(Peripheral Component Interconnect Express)总线的存储接口,专为固态硬盘(SSD)设计。它具有极高的数据传输速率和低延迟。
-
特点:
-
传输速率: NVMe 接口的传输速率可以达到数 GB/s,远高于 SATA 和 SAS 接口。
-
低延迟: NVMe 接口的延迟极低,适合需要高性能的应用场景。
-
并行性: NVMe 支持多队列和多命令并行处理,可以显著提高 I/O 性能。
-
-
应用场景: NVMe 接口广泛应用于高性能计算、数据中心和企业级存储系统中,适合需要高 IOPS 和低延迟的存储环境。
三、Linux文件系统
1 ext文件系统
2 虚拟文件系统
3 文件系统相关命令
磁盘分区表主要有两种格式,一种是限制较多的 MBR 分区表,一种是较新且限制较少的 GPT 分区表。
1. MBR
MBR 中,第一个扇区最重要,里面有主要开机记录(Master boot record, MBR)及分区表(partition table),其中主要开机记录占 446 bytes,分区表占 64 bytes。
分区表只有 64 bytes,最多只能存储 4 个分区,这 4 个分区为主分区(Primary)和扩展分区(Extended)。其中扩展分区只有一个,它使用其它扇区来记录额外的分区表,因此通过扩展分区可以分出更多分区,这些分区称为逻辑分区。
Linux 也把分区当成文件,分区文件的命名方式为:磁盘文件名 + 编号,例如 /dev/sda1。注意,逻辑分区的编号从 5 开始。
2. GPT
扇区是磁盘的最小存储单位,旧磁盘的扇区大小通常为 512 bytes,而最新的磁盘支持 4 k。GPT 为了兼容所有磁盘,在定义扇区上使用逻辑区块地址(Logical Block Address, LBA),LBA 默认大小为 512 bytes。
GPT 第 1 个区块记录了主要开机记录(MBR),紧接着是 33 个区块记录分区信息,并把最后的 33 个区块用于对分区信息进行备份。这 33 个区块第一个为 GPT 表头纪录,这个部份纪录了分区表本身的位置与大小和备份分区的位置,同时放置了分区表的校验码 (CRC32),操作系统可以根据这个校验码来判断 GPT 是否正确。若有错误,可以使用备份分区进行恢复。
GPT 没有扩展分区概念,都是主分区,每个 LBA 可以分 4 个分区,因此总共可以分 4 * 32 = 128 个分区。
MBR 不支持 2.2 TB 以上的硬盘,GPT 则最多支持到 233 TB = 8 ZB。
LVM 是 Linux 系统中用于管理磁盘分区的一种技术,它将多个物理磁盘或分区组合成一个或多个卷组(Volume Group),在卷组之上可以创建逻辑卷(Logical Volume)。逻辑卷就像传统的分区一样,可以在上面创建文件系统并挂载使用。
创建逻辑卷步骤示例
①创建物理卷(Physical Volume):使用命令将物理磁盘或分区初始化为物理卷,例如
pvcreate /dev/sdb1
②创建卷组(Volume Group):使用vgcreate命令将一个或多个物理卷组合成卷组,例如
vgcreate myvg /dev/sdb1
③创建逻辑卷(Logical Volume):使用lvcreate命令在卷组上创建逻辑卷,例如
lvcreate -L 10G -n mylv myvg
表示在myvg卷组上创建一个大小为 10GB,名为mylv的逻辑卷。
(2)建立与挂载文件系统
mkfs -t ext3 /dev/sda3
(3)查找文件和命令
(4)文件排序与比较
示例
假设我们有一个名为 fruits.txt
的文件,内容如下:
banana
apple
cherry
date
使用 sort
命令对其进行排序:
sort fruits.txt
输出结果为:
apple
banana
cherry
date
可以看到,文件中的行按照字典序进行了排序。
(5)文件压缩与打包
压缩文件名
Linux 底下有很多压缩文件名,常见的如下:
扩展名 | 压缩程序 |
---|---|
*.Z | compress |
*.zip | zip |
*.gz | gzip |
*.bz2 | bzip2 |
*.xz | xz |
*.tar | tar 程序打包的数据,没有经过压缩 |
*.tar.gz | tar 程序打包的文件,经过 gzip 的压缩 |
*.tar.bz2 | tar 程序打包的文件,经过 bzip2 的压缩 |
*.tar.xz | tar 程序打包的文件,经过 xz 的压缩 |
压缩指令
1. gzip
gzip 是 Linux 使用最广的压缩指令,可以解开 compress、zip 与 gzip 所压缩的文件。
经过 gzip 压缩过,源文件就不存在了。
有 9 个不同的压缩等级可以使用。
可以使用 zcat、zmore、zless 来读取压缩文件的内容。
$ gzip [-cdtv#] filename
-c :将压缩的数据输出到屏幕上
-d :解压缩
-t :检验压缩文件是否出错
-v :显示压缩比等信息
-# : # 为数字的意思,代表压缩等级,数字越大压缩比越高,默认为 6
2. bzip2
提供比 gzip 更高的压缩比。
查看命令:bzcat、bzmore、bzless、bzgrep。
$ bzip2 [-cdkzv#] filename
-k :保留源文件
3. xz
提供比 bzip2 更佳的压缩比。
可以看到,gzip、bzip2、xz 的压缩比不断优化。不过要注意的是,压缩比越高,压缩的时间也越长。
查看命令:xzcat、xzmore、xzless、xzgrep。
$ xz [-dtlkc#] filename
打包
压缩指令只能对一个文件进行压缩,而打包能够将多个文件打包成一个大文件。tar 不仅可以用于打包,也可以使用 gzip、bzip2、xz 将打包文件进行压缩。
$ tar [-z|-j|-J] [cv] [-f 新建的 tar 文件] filename... ==打包压缩
$ tar [-z|-j|-J] [tv] [-f 已有的 tar 文件] ==查看
$ tar [-z|-j|-J] [xv] [-f 已有的 tar 文件] [-C 目录] ==解压缩
-z :使用 zip;
-j :使用 bzip2;
-J :使用 xz;
-c :新建打包文件;
-t :查看打包文件里面有哪些文件;
-x :解打包或解压缩的功能;
-v :在压缩/解压缩的过程中,显示正在处理的文件名;
-f : filename:要处理的文件;
-C 目录 : 在特定目录解压缩。
使用方式 | 命令 |
---|---|
打包压缩 | tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称 |
查 看 | tar -jtv -f filename.tar.bz2 |
解压缩 | tar -jxv -f filename.tar.bz2 -C 要解压缩的目录 |
四、进程管理
1 进程与相关命令
先来看看程序与进程的区别:

## ps -l
示例:查看自己的进程
## pstree -A
示例:查看系统所有进程(常用于全面查看系统中所有进程的详细信息,管理员可以通过该命令监控系统中各个进程的资源使用情况,排查资源占用过高的进程,或者查看特定用户启动的进程等。)
## ps aux
示例:查看所有进程树
## pstree -A
示例:四秒钟刷新一次
## top -d 4
2 进程的状态转换
状态 | 说明 |
---|---|
R | running or runnable (on run queue) 正在执行或者可执行,此时进程位于执行队列中。 |
D | uninterruptible sleep (usually I/O) 不可中断阻塞,通常为 IO 阻塞。 |
S | interruptible sleep (waiting for an event to complete) 可中断阻塞,此时进程正在等待某个事件完成。 |
Z | zombie (terminated but not reaped by its parent) 僵死,进程已经终止但是尚未被其父进程获取信息。 |
T | stopped (either by a job control signal or because it is being traced) 结束,进程既可以被作业控制信号结束,也可能是正在被追踪。 |

孤儿进程
一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。
孤儿进程将被 init 进程(进程号为 1)所收养,并由 init 进程对它们完成状态收集工作。
由于孤儿进程会被 init 进程收养,所以孤儿进程不会对系统造成危害。
僵尸进程
一个子进程的进程描述符在子进程退出时不会释放,只有当父进程通过 wait() 或 waitpid() 获取了子进程信息后才会释放。如果子进程退出,而父进程并没有调用 wait() 或 waitpid(),那么子进程的进程描述符仍然保存在系统中,这种进程称之为僵尸进程。
僵尸进程通过 ps 命令显示出来的状态为 Z(zombie)。
系统所能使用的进程号是有限的,如果产生大量僵尸进程,将因为没有可用的进程号而导致系统不能产生新的进程。
要消灭系统中大量的僵尸进程,只需要将其父进程杀死,此时僵尸进程就会变成孤儿进程,从而被 init 进程所收养,这样 init 进程就会释放所有的僵尸进程所占有的资源,从而结束僵尸进程。