1.Linux是什么?
Linux是一种自由和开放源码的类UNIX操作系统。严格来说是单指操作系统的内核,因操作系统中包含了许多用户图形接口和其他实用工具。一个Linux发行版包括Linux内核,以及将整个软件安装到电脑上的一套安装工具,还有各种GNU软件,和其他的一些自由软件,在一些Linux发行版中可能会包含一些专有软件。发行版为许多不同的目的而制作,包括对不同电脑硬件结构的支持,对普通用户或开发者使用方式的调整,针对实时应用或嵌入式系统的开发等等。当前,超过三百个发行版被积极的开发,最普遍被使用的发行版有大约十二个。较为知名的有Debian、Ubuntu、Fedora和openSUSE等。
2.Linux内核
Linux内核由林纳斯·托瓦兹使用c语言编写完成。内核其实也就是一组程序,它的功能包括
a) 系统调用接口
系统调用接口,向用户空间提供访问文件系统和硬件设备的统一的接口,open、read、write等系统调用。
b) 进程管理
创建进程、删除进程、调度进程等,也称作进程管理、进程调度。负责管理CPU资源,以便让各个进程可以以尽量公平的方式访问CPU。
c) 内存管理
内存分配、管理等,负责管理Memory(内存)资源,以便让各个进程可以安全地共享机器的内存资源。另外,内存管理会提供虚拟内存的机制,该机制可以让进程使用多于系统可用Memory的内存,不用的内存会通过文件系统保存在外部非易失存储器中,需要使用的时候,再取回到内存中。
d) 虚拟文件系统
为多种文件系统提供统一的操作接口。Linux内核将不同功能的外部设备,例如Disk设备(硬盘、磁盘、NAND Flash、Nor Flash等)、输入输出设备、显示设备等等,抽象为可以通过统一的文件操作接口(open、close、read、write等)来访问。这就是Linux系统“一切皆是文件”的体现。
e) 网络子系统
提供各种网络协议,负责管理系统的网络设备,并实现多种多样的网络标准。
f) 设备驱动程序
各种设备驱动,占到内核的70%左右代码。
3.Linux文件系统
Linux正统文件系统为ext2
ext2文件系统在整体的规划中,文件系统最前面有一个启动扇区,其他的空间区分为多个区块群组。而每个区块群组又分为六个主要部分。
a) 数据区块
数据区块就是储存文件实际数据的地方,在ext2文件系统中所支持的区块大小为1k,2k和4k三种,区块大小是在格式化时就确定了的,且每个区块都有编号,以便inode记录。如果一个文件大于一个区块的大小,那么就会占用多个区块。
b) inode表
inode的大小一般是128b且一个文件只对应一个inode。inode要记录的数据包括文件的权限与属性以及文件实际数据所在的区块编号。inode记录一个区块号码所需空间为4b,系统将inode记录区块号码的区域定义为12个直接、1个间接、1个双间接以及1个三间接记录区。所谓间接记录就是inode记录下一个未使用的数据区块,然后使用这个数据区块去记录其他的数据区块编号。若一个数据区块大小为1k,那么可记录256个数据区块的编号。双间接与三间接以此类推。使用这样的方式inode就能够记录更大的文件。
c) 超级区块
超级区块是记录整个文件系统相关信息的地方,大小为1024B。记录inode和数据区块的数量,未使用和已使用的inode和数据区块数量,记录inode和数据区块的大小,例如inode是128b,而block是1k或者2k或者4k,记录文件系统的挂载时间,最近一次写入数据的时间,最近一次检验磁盘的时间等文件系统相关信息。最后还要记录一个有效位数值,文件系统已被挂载为0,反之为1。
d) 文件系统描述说明
这个区块可以描述每个区块群组的开始与结束的区块号码,以及说明每个区段分别介于哪一个区块号码中,这部分也能够用dumpe2fs来观察。
e) 区块对应表
区块对应表记录哪些区块是空的,以便新建文档可以快速调出空的区块进行储存,同时当删除文档时,区块对应表也会将对应释放的区块号码改为未使用。
f) Inode对应表
这个功能和区块对应表类似,只是区块对应表记录的是使用与未使用的区块号码,而inode对应表记录的是使用与未使用的inode号码。
ext2和目录树
每个文件(不管是一般文件还是目录文件)都会占用一个 inode , 且可依据文件内容的大小来分配多个 block 给该文件使用。当我们在 Linux 下的 ext2 文件系统创建一个目录时, ext2 会分配一个 inode 与至少一块 block 给该目录。其中,inode 记录该目录的相关权限与属性,并可记录分配到的那块 block 号码; 而 block 则是记录在这个目录下的文件名与该文件名占用的 inode 号码数据。
日志式文件系统(ext3、ext4)
为了避免你的文件在写入文件系统时,因为不知名原因导致系统中断的情况发生,设计者在文件系统当中规划出了一个区块,该区块专门在记录写入或修订文件时的步骤:
预备:当系统要写入一个文件时,会先在日志记录区块中纪录某个文件准备要写入的信息;
实际写入:开始写入文件的权限与数据;开始升级 metadata (中介数据)的数据;
结束:完成数据与 metadata 的升级后,在日志记录区块当中完成该文件的纪录。
在这样的程序当中,如果数据的纪录过程当中发生了问题,那么我们的系统只要去检查日志记录区块, 就可以知道哪个文件发生了问题,针对该问题来做一致性的检查即可,而不必针对整块 文件系统去检查, 这样就可以达到快速修复文件系统的功能了。
4.文件权限与命令的关系
Linux中文件基本权限有三种r、w、x。r是读权限,w是写权限,x为运行权限。如果你想要在一个目录中新增一个文件,那么首先需要目录的x权限来打开目录,然后需要有目录的w权限向目录中写入一个文件。
5.常用的Linux命令
- pwd
打印当前工作目录名 - ls
列出目录内容
常用选项:
-l :详细信息显示
-a:显示所有文件,包括隐藏文件
-h:将文件容量以较易读的方式(GB,kB等)列出来
另外,这些参数可以组合使用,例如ls -la,显示当前目录所有文件的详细信息 - cd
切换目录
cd … 回到上级目录
cd ./shi 切换到当前目录下的shi目录中,“.”表示当前目录
cd - 返回进入此目录之前的目录 - touch
这个 touch 命令通常被用来设置或更新文件的访问时间。
然而,如果一个文件名参数是一个不存在的文件,则会创建一个空文件。
touch test.txt 如果文件不存在,就创建test.txt文 - rm
删除文件或目录
常用选项:
-f :就是force的意思,忽略不存在的文件,不会出现警告消息
-i :互动模式,在删除前会询问用户是否操作
-r :(recursive) 指示rm将参数中列出的全部目录和子目录均递归地删除。
rm test.txt 删除文件test.txt
不带任何参数时,rm 可以删除文件,但不能删除文件夹 - mv
移动和重命名文件
常用选项:
-f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件已经存在,就会询问是否覆盖
-u :若目标文件已经存在,且比目标文件新,才会更新
mv file1 file2 file3 dir 把文件file1、file2、file3移动到目录dir中
mv file1 file2 把文件file1重命名为file2 - mkdir
创建目录
mkdir tmp 当前目录创建文件夹tmp