linux学习记录

此片博客作为我学习linux的学习笔记

linux该如何学?

(1)尽量使用命令行
(2)学习linux相关的知识:计算机网络,计算机体系结构,操作系统等等(推荐网络资料:电脑基础 网络基础
(3)养成学习笔记的习惯,同时多动手实践
(4)选择好的参考书籍
(5)学会解决问题:先自主动手实验解决(根据出错信息),借助FAQ和google,最后实在解决不了要有效提问(提问的智慧
(6)养成记录错误及解决方案的习惯,网络上看到好文章要学会copy并归类保存

主机规划和磁盘分割

linux中一切设备皆文件

inode

文件的权限

安全模型: 最初的安全模型为DAC(Discretionary Access Control),后面新增了MAC(Mandatory Access Control),MAC是在DAC的基础上建立的,是DAC的加强。系统会先做DAC安全检查,如果通过检查并且系统上有MAC,则再执行MAC检查。

DAC安全模型:该模型的核心为进程的权限等于使用该进程用户的权限
用户,组,口令

用户和组分别使用UID和GID来标识,一个用户可以属于一个或多个组,默认用户属于与GID等于该用户UID的一个组。用户信息保存有/etc/passwd中,组信息保存在/etc/group中。口令保存于/etc/shadow(口令是什么还不清楚)

文件的权限控制信息
文件的类型:

普通文件:可分为文本文件和二进制文件,通过touch创建
目录文件:顾名思义,就是类似目录作用的文件,其中记录着指向该目录下文件的指针
设备文件:设备文件又可分为字符设备文件(键盘) 和 块设备文件(磁盘)
套接字文件:与网络通行相关,一般在应用程序执行过程中创建
符号链接文件:其为软链接文件而非硬链接文件,通过ln创建
管道文件:顾名思义,该文件就好像一个管道,用来连接不同的进程,该文件可以被多个进程公共使用。通过mkfifo创建
访问权限控制组:分为三组user, group, others

可设定的权限:

r:表示具有读权限
w:表示具有写权限
x:一般针对普通文件或者目录文件,表示具有执行/搜索的权限
s:
t:
我们可以通过ls -l 文件 来查看文件的权限控制信息

软链接 硬链接

硬盘

硬盘类型的划分:

(1)按内部结构划分可分为机械硬盘HHD(Hard Disk Drive)和固态硬盘SSD(Solid State Drive)

HHD:内部有具体的机械结构,有磁头等物理部件

SSD:这没有具体的机械结构,一般由主控、缓存、闪存组成,由于没有机械结构,读入写出不需要寻道,所以安静并且效率高,缺点是寿命不如HDD,成本较高

(2)按传输接口划分

IDE: 一种并行接口,由于传输稳定性差的原因已经被淘汰
SATA:一种串行接口,随着技术的升级,传输速率超过了IDE接口
NVME:上面的SATA接口类型一开始是为了机械硬盘设计的,所以在固态硬盘上速度达到瓶颈,于是出现了NVME。该接口是逻辑接口(不是很懂),只能用于固态硬盘上

查看计算机的磁盘设备文件

磁盘不同,磁盘设备文件的命名也会不同,下面以我的计算机来举例,我的计算机使用的是Nvme接口的固态硬盘,所以硬盘设备文件名为/dev/nvmexxx

我们可以通过df(disk free)命令查看硬盘设备文件

磁盘的分割方式——MBR和GPT

MBR(Master Boot Record 主要开机记录区)

该分割方式以一个柱面为基本单元;

第一扇区(512bytes)的前446bytes为主要开机记录区,后64个字节存储了分割表;

分割表最多有4个分割槽(分割信息),分割项可分为主要分割槽和延伸分割槽,主要分割曹中记录了分割区域开始和结束的磁柱编码,延伸分割槽不仅记录了分割区的开始和结束位置,还记录了对应的衍生分割表的位置。

但是MBR有一些缺点

(1)分割表太小,导致柱号编号有上限,使得不适合更大空间的磁盘

(2)分割表记录有一个位置,如果损害那么整个计算机就无法运行

为了改进以上缺点,提出了新的分割方法GPT

GPT

通常一个扇区的大小为512bytes,但是现在也出现了4K大小的扇区,为了统一表示,提出了LBA(Login Block Address 逻辑区域地址)在对扇区进行编号;

LBA0记录了MBR + GPT标识
LBA1记录了分区表的位置和大小、备份位置信息(备份LBA1-33、校验码(如果校验码有问题,就选用备份分区表)
LBA2-33是实际记录分割区域的地方,每个LBA可记录4个分区(每个分区的开始和结束的LBA),所以一共可以有4×32个分区;如果扇区大小为512bytes,则一个分区槽有128bytes,所以就有64bytes来记录LBA地址,那么可覆盖的磁盘空间就非常大了。

开机检测程序

问题:操作系统的作用是用户硬件和软件的桥梁,用户可以通过操作系统读取硬盘上的程序到内存中运行,但是目前出现了一个问题,操作系统程序也是存取在硬盘上的,在开机启动时要如何启动操作系统程序呢,这就需要嵌入硬体的开机检测程序

BIOS

BIOS为一个韧体(即嵌入ROM的程序)

使用BIOS的开机流程为:

(1) 开机启动BIOS韧体,该程序会去加载CMOS,其中记录了用户自定义的硬件参数,根据这些参数寻找含有MBR(主要开机记录)的磁盘

(2) 读取该磁盘的一个扇区中的MBR程序,启动了开机管理程序

(3) 开机管理程序会提供一个选单,让用户选择不同的操作系统,如果选的是第一项,就直接载入对应操作系统的核心程序,如果选择的是第K项,则在寻找第K个分区中的PBR中记录的开机启动程序,并把开机管理功能交给该程序负责...

UEFI(Unified Extensible Fireware Interface)统一可扩展的韧体界面

为了更好适应GPT分割程序和安全性和可扩展性和兼容性,就有了UEFI开机检测程序

下面是BIOS与UEFI的对比:

Linux安装模式下,磁盘分割的选择

目录数和挂载

Linux的文件是通过目录树的逻辑方式呈现的,如下图所示:

而实际上文件存储与线性的磁盘中(存在分区),那么磁盘的线性结构和目录树的树结构是如何联系在一起的呢,答案是通过挂载

挂载就是以某个目录作为进入点,把磁盘某分区的内容放置与该目录下的行为,简单的说就是如何如果一个目录挂在到某个分区下,我们可以通过该目录去访问该分区

注意:根目录一定要挂载到某一个分区下,而其他子目录有用户自行决定。

下面举一个挂载的例子:


我们可以看到/目录挂载到partion 1分区下,而/home目录挂载到partion 2分区下,对于/home目录下的文件,会存储在partion 2分区中,而其他/目录下的文件,则会存储子partion 1分区中

命令

命令的基本格式为```command [-option] parameter,...
command:指令,如cd
[-option]:可选项,用来选择命令的模式;当为缩写时用-xx,当为全程时用--xxx
parameter,...:指令参数
举个例子,如

ls -al ~

其作用是显示家目录下的所有文件

入门指令

date:date用来显示时间
date显示当前时间
date +%Y/%m/%d-%H:%M还是设置具体的显示格式

cal:cal的全称为calendar
cal显示当前月份日历
cal [month] [year]显示[某年][某月]的日历

bc:bc的全称为basic calculator
输入bc可以拥有运算功能——输入表达式输出结果,输入quit退出

重要热键

Ctrl+c:可以中断程序运行
Ctrl+d:退出文字界面
[Shift+]PgUp/PgDo:翻看之前输入过的命令
Tab :命令补全

帮助

指令非常多,全部记住是不可能的,所以我们应该记牢一些重要常见的指令,剩下的查询就行了。如何查询指令信息呢?
help:command --help 可以输出comand的帮助文档
man: man全称为manual(使用说明),通过man command可以获得更详细的说明
info: 通过info command也可以获得详细的说明
/usr/share/doc: /usr/share/doc中的文件也有非常多的帮助信息
学了帮助指令后,后面的指令就不需要具体的语法格式了,只给出常用的例子

关机和重新启动

(1)shutdown
常用命令:shutdown -h now现在关机
shutdown -r now现在重启
shutdown -k now假装关机
shutdown -c取消关机
(2)reboot
reboot重启
(3)halt 和 poweroff
halt poweroff关机
虽然关机程序会在执行之前自动将缓冲区中的数据写入磁盘,但是为了保险起见,可以先执行同步缓存(Synchronize cache)指令sync来确保缓冲区的信息写入对应磁盘,防止关机后丢失。
上面的指令,实际上都是通过systemctl <command>来执行的。

权限

owner(拥有者)、group(群组)、others(其他人)、root(系统管理员)

首先要强调,owner、group、others是一个相对的概念,不同的文件有不同owner、group、others。
(1)owner:一个文件可以定义拥有者,比如对于用户Mark的个人资料文件的拥有者为Mark
(2)group:一个或多个用户可以形成一个组,比如Mark用户和Mike用户可以形成M组。一个用户可以属于一个或多个组,就像现实中的人可以属于多个群体。一个文件会指定某个群组中的用户拥有某些权限
(3)others:如果一个文件定义了owner和group,那么剩下的用户则视为others
(4)root:系统管理员拥有最高权限,不受约束,可以对任何文件进行任何操作


为什么文件要定义拥有者、群组、其他人的概念呢?原因是文件需要对不同的用户进行不同的权限管理。打个比方,如果高一5班有一个篮球,是班上的小明带的,并无偿给班上的人使用,那么,对于这个篮球来说,小明为拥有者,高一5班的所有同学为群组,剩下的其他同学为其他人。篮球对不同的用户有不同的权限,对于小明来说,他可以看、使用、拿走这个篮球,对于高一5班的同学来说,他们可以看、使用这个篮球,对于剩下的其他同学来说,他们只可以看这个篮球,当然对于上帝(root)来说,他想对这个篮球做什么都可以,比如让它突然消失。

文件的权限

通过ls -al命令,我们可以查看当前目录下的文件权限信息,例如

我们选择其中一条文件信息来解释:

文件信息: -rw-r--r--     1 shuojia shuojia  147443 12月 15 21:02 code.ipynb
栏数:             一    二      三       四      五            六         七
意义:   文件类型及权限 连接数   使用者     群组 文件大小    最后修改时间      文件名

文件类型及权限

可以看到文件类型及权限一共有10位,为了方便描述,我们为其加上1~10编号。
1:代表文件类型。-代表一般的文件 d代表目录 l代表链接文件 b代表可随机存储装置 c代表一次性读取装置
2~4、5~7、8~10:分别代表拥有者、群组、其他人的权限。r为可读 w为可写 x为可执行

连接数

文件是以目录树的形式呈现的,但是实际上是通过i-node来标识一个文件。多个不同路径的文件可以有同一个i-node,说明它们其实是同一个文件。打个比分,我们每个人都可以通过地理位置被描述(中国广东省广州市希望小学张三),但是我们每个人实际上通过身份证号来标识,如果你今天在广州,明天在深圳,虽然地理位置变化了,但是依然视为同一个人,因为i-node一致。所以连接数就是至有多少文件共用一个i-node

posted @ 2020-11-24 19:11  爱弹琴的小黑  阅读(113)  评论(0编辑  收藏  举报