技术面大牛养成之Linux

一、常用操作以及概念

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 内核及各种应用软件的集成版本。

基于的包管理工具商业发行版社区发行版
RPMRed HatFedora / CentOS
DPKGUbuntuDebian
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文件系统

Linux 支持多种文件系统
         磁盘文件系统: ext3 ext4……
         网络文件系统: nfs……
         基于 RAM 的文件系统: ramdisk tmpfs……
         ……
虚拟文件系统 VFS(Virtual File System) ,为各类文件系统提供一个统一的操作界面和
应用编程接口
 文件、设备统一管理,一切皆文件!
1 ext文件系统
ext extended )文件系统是专为 Linux 系统 设计的文件系统
ext3
         1999 年, ext2 升级为 ext3 ext3 是一个日志文件系统,健壮可靠
        32bit的块号, ext3 可支持 16TB 的文件系统和 2TB的文件
ext4
        2008年投入使用, 48bit 的块号,容量 1EB ,文件大小可达16TB ,目录容量无限大
2 虚拟文件系统
虚拟文件系统位于文件系统的最上层 ,存在于 内存中 ,在系统启动时建立,系统
关闭时消失,因此称为虚拟文件系统
VFS 不能直接操作磁盘上的文件,需要 与实际文件系统配合使用
引入 VFS 是为了屏蔽各种实际文件系统的差异,提供标准的文件操作函数,将标准文
件操作映射到实际文件系统的操作
VFS 的文件对象分为 file_operations inode 、 inode_operations
从用户角度来说,只需要操作 file_operations 例如open read write close
通过这样的结构,统一了各种文件系统, 由VFS 、驱动等来具体实现
3 文件系统相关命令
(1)磁盘分区

磁盘分区表主要有两种格式,一种是限制较多的 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(Logical Volume Manager)方式创建逻辑卷
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 :在块设备上 建立文件系统 ( 格式化 )
         【命令格式】 mkfs [ 选项 ] 设备
         -t fstype :指定文件系统类型为 fstype
        比如:将硬盘 /dev/sda 的第三个分区 /dev/sda3 格式化为 ext3 文件系统
 mkfs -t ext3 /dev/sda3
使用文件系统之前, 需要先挂载到某个目录,称为挂载点( mount point

mount 挂载文件系统
         mount [ 选项 ] [ 设备 ] [ 挂载点目录 ]
         -t :指定文件类型, -t auto 为自动检测类型
         -o :指定挂载方式,例如 loop
         mount -t iso9660 /dev/cdrom /mnt
         mount -t ext3 /dev/sda3 /mnt/ext3
umount :卸载文件系统
示例:
mount 命令查看挂载情况 ;df -hT查看挂载后占用空间情况


(3)查找文件和命令

 ① find :搜索文件
         【命令格式】 find [ 路径 ] [ 表达式 ]
         例如: find /tmp -name thread*
 ② locate :查找文件
         建立一个数据库,从该数据库中索引,速度快
         openEuler 下可通过 yum install mlocate 安装
         由于数据库定期更新,查找结果可能不准确,可通过updatedb 手动更新
locate 速度比 find 快得多,可先用 locate 查找,找不到再用find!
 ③ whereis :定位命令和 man page
         同样是根据系统建立的数据库定位命令
 ④ which :定位命令
         在环境变量范围内,查找可执行文件

(4)文件排序与比较

sort :对文件的行排序
         sort [ 选项 ] 文件名

示例

假设我们有一个名为 fruits.txt 的文件,内容如下:

banana
apple
cherry
date
 

使用 sort 命令对其进行排序:

sort fruits.txt
 

输出结果为:

apple
banana
cherry
date
 

可以看到,文件中的行按照字典序进行了排序。

diff :逐行比较文件
         diff [ 选项 ] 文件 1 文件 2
comm :逐行比较排序过的文件
         comm [ 选项 ] 文件 1 文件 2

(5)文件压缩与打包

压缩文件名

Linux 底下有很多压缩文件名,常见的如下:

扩展名压缩程序
*.Zcompress
*.zipzip
*.gzgzip
*.bz2bzip2
*.xzxz
*.tartar 程序打包的数据,没有经过压缩
*.tar.gztar 程序打包的文件,经过 gzip 的压缩
*.tar.bz2tar 程序打包的文件,经过 bzip2 的压缩
*.tar.xztar 程序打包的文件,经过 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

最后我们来简单介绍一下进程相关的命令:
ps process status 查看进程
         【命令格式】: ps [ 选项 ]
         -e 显示所有进程
         -f 全格式
         -a 显示终端上的所有进程
         -u 显示创建进程的用户

示例:查看自己的进程

## pstree -A

示例:查看系统所有进程(常用于全面查看系统中所有进程的详细信息,管理员可以通过该命令监控系统中各个进程的资源使用情况,排查资源占用过高的进程,或者查看特定用户启动的进程等。)

## ps aux

kill :结束进程
         【命令格式】: kill [- 信号 ] 进程号
         kill -9 pid 为强制结束进程
         也可使用 “killall 进程名 来结束所有同名进程
pstree :查看进程树

示例:查看所有进程树

## pstree -A

top实时显示进程活动
         【命令格式】 top [ 选项 ]
         d 间隔秒数:指定刷新间隔,默认为 10s
         n 执行次数:指定重复刷新的次数,默认一直刷新,直到按q 退出
         上下键可翻动、 q 键退出
         可在此用 L 查找某个关键词, 直接用 k 杀死进程 ,用 r 改变进程优先级

示例:四秒钟刷新一次

## top -d 4

2 进程的状态转换
状态说明
Rrunning or runnable (on run queue)
正在执行或者可执行,此时进程位于执行队列中。
Duninterruptible sleep (usually I/O)
不可中断阻塞,通常为 IO 阻塞。
Sinterruptible sleep (waiting for an event to complete)
可中断阻塞,此时进程正在等待某个事件完成。
Zzombie (terminated but not reaped by its parent)
僵死,进程已经终止但是尚未被其父进程获取信息。
Tstopped (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 进程就会释放所有的僵尸进程所占有的资源,从而结束僵尸进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小梁不秃捏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值