05 Linux根文件系统

1、file 命令及其用法


man file


file /root 

  /root: directory


file /bin/ls

  /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped


Windows 

  PE: 可移植的可执行文件

Linux

  ELF: 

   一种可执行文件的存储格式 

   可执行的可链接的文件类型

   Linux上常见的可执行二进制文件格式




文件系统是内核的核心功能之一,目的是实现本机上某一个分区上的文件管理


文件系统:

rootfs: 根文件系统

  对 Linux 而言,每一个文件都必须是根文件系统下的某一个路径

  必须要通过根文件系统才能访问


根, root ,用 / 表示 


文件系统分为目录和文件,除了目录的都是文件

所有的文件都存放在目录当中,都能够通过目录查找的到


FHS: Filesystem Hierarchy Standard(文件系统层次化标准) 


ls / :


2、关键路径说明


/boot: 系统启动相关的文件,如内核、initrd,以及 grub (bootloader 引导加载器)

  如果 /boot 目录不存在,或对应的几个文件不存在,系统根本无法启动。


  操作系统启动时所要用到的内核 vmlinuz ,以及暂时性的小 linux 系统

  vmlinuz :

  initrd (initramfs) : 磁盘映像文件,类似虚拟机,假的赢怕,能创建分区


/dev: 设备文件 

  设备文件:

    块设备: 随机访问,数据块, 磁盘,硬盘

    字符设备: 线性访问,键盘,输入 abc 显示 abc ,鼠标,显示器

         整个屏幕上显示的内容都是在显存中按位存储的

    设备号: 主设备号(major) 和次设备号(minor)

        一个设备只有有设备文件,才能被 linux 所访问


    在主机上要接入一个新设备,例如插入U盘,要想访问U盘,首先在 dev 目录下创建一个设备文件, 由系统自动完成。


  Linux 哲学思想,一切皆文件。因此,所有的硬件设备,也被识别为各个文件

  device 设备


  ls -l /dev 

    

    lrwxrwxrwx. 1 root root           3 Jan 15 05:08 cdrom -> sr0

    lrwxrwxrwx. 1 root root           3 Jan 15 05:08 dvd -> sr0

    链接 (Windows 快捷方式) 

   

    brw-rw----. 1 root cdrom    11,   0 Jan 15 05:08 sr0

    设备文件没有大小,直接存储元数据,而且是作为设备的访问入口存在的


/etc : 配置文件

   Linux 哲学思想,将程序的配置文件保存为纯文本格式


/home: 用户的家目录,每一个用户的家目录通常默认为 /home/USERNAME

/root: root 用户的家目录不再 /home 下,并且他的名称就叫 /root

   在传统的 Unix 系统上,root 用户是没有家目录的,因为 root 用户从来都不需要登录操作系统


   Windows 下不允许格式化 C 盘,Linux 不阻止你自杀

   生产环境使用普通用户登录,不要用 root 用户登录,只有要用到管理功能的时候,才切换到 root 用户。


/lib: 库文件

  静态库: .a

  动态库: .dll , .so (shared object)


  任何程序和数据都必须要载入内存之后才能被程序所使用,

  对于共享库,任何程序要使用共享库,把共享库载入内存就可以使用,如果第二个程序也用到这个共享库,它就不用再载入了,因为内存中已经有了,拿来就用。共享库在内存中只存在一份即可。

  对于静态库,直接链接到程序的地址空间中去,作为程序的一部分运行的。


  静态方式便于程序单个文件管理,例如把一个程序从一个 linux 主机移动到另一个 linux 主机,只需要把文件从 a 主机复制到 b 主机就能直接运行

  但是,如果要使用动态链接库的方式的话,那就意味着它自己的运行还要依赖于库。所以将程序从 a 主机挪到 b 主机还不够,还必须保证 b 主机有程序运行时所依赖的共享对象才行。


  /lib/modules: 内核模块文件


/lost+found:

  任何一个新建的分区上都会有的目录,通常跟文件系统相关,是用于存储那些文件系统在机器突然间断电的时候,文件没有输入属组,并且尚未来得及保存的文件,是为了实现丢失并找回的目的的。


/media: 挂载点目录,挂载移动设备,U盘,光盘

/mnt: 额外的临时文件系统,比如第二块硬盘,只要跟当前文件系统没有关系,都需要挂载


挂载点:

  在 Windows 上要想访问光盘中的内容,光盘放进光驱,双击

  在 Linux 中,光盘放入光驱以后,必须要将这个设备关联到当前整个文件系统树上的某一个节点上,才能进行访问。这个过程,把某个设备,跟当前文件系统上的某一个目录建立关联关系的过程,称为挂载。

  /dev/cdrom 是设备文件,只是设备上数据的访问入口

  光盘放入光驱后,将 /dev/cdrom 关联到 /media 目录下,通过 /media 目录就可以访问


/misc

  杂项


/opt:

  可选目录

 早期通常用于安装第三方程序,现在放在 /usr/local


/proc

  伪文件系统

  内核映射文件,大多数文件都是内核中的可调参数,或内核工作的统计数据。

  例如网卡,只有内核能访问,要想看看网卡接收了多少个数据包,发送了多少个数据包,这些统计数据都在这里面。

  所以要想改变操作系统的根本工作属性,通常都是通过改变这个目录下的某个文件来完成的。事实上改的不是文件,而是内核属性,只不过被映射成了文件。都是假文件,事实上不是文件。只不过表现成了文件的样子而已。


  这个目录是空的,但系统启动以后文件就不空了。


  系统调优,绝大多数都跟这个目录相关。

  整个系统的性能数据的监控,也跟这个目录相关。

  

/sys:

  伪文件系统

  跟硬件设备相关的属性映射文件,跟内核也相关,只不过把它独立出来了。

  通常用于实现硬件设备管理,尤其是像硬盘这样的设备。

 

  关机后这个目录也是空的,只是映射出来的信息而已。


/tmp: /var/tmp

  临时文件系统 

  存放可以被其他用户访问到的文件

  如果一个月这个目录没有被访问,这个目录会被系统脚本自动清除。

  每一个人都可以在里面创建文件,但是只能在里面删除自己的文件,却不能删除别人创建的文件


/var:

  可变化的文件


/bin:

  二进制

  可执行文件

  用户命令


/sbin: super

  管理命令


/usr: universal shared readonly

  全局的共享的只读文件

  /usr/bin

  /usr/sbin

  /usr/lib


  /bin 和 /sbin 下放的是跟系统自身启动相关的命令

  /usr/bin 、/usr/sbin 是系统启动后,为了提供一些基本功能所具备的命令或可执行程序


/usr/local:

  /usr/local/bin

  /usr/local/sbin

  /usr/local/lib

  第三方软件的安装路径


3、命名规则


Linux 是严格区分文件名称大小写的


  1. 长度不能超过 255 个字符

  2. 不能使用 / 当文件名

  3. 严格区分大小写


除此之外其他任何字符都合法,包括 * 和空格等特殊字符


4、目录管理


ls

cd

pwd


mkdir: 创建空目录

  -p:

  -v: verbose 详细信息


  mkdir x

  mkdir x/y    当前目录

  mkdir ./x/y  作为参数 ./ 可以省略,当前目录


  mkdir -pv m/n/q


linux 哲学思想,没有信息就是最好的信息,执行完命令没有信息,说明成功了。


命令行展开

  mkdir -pv /mnt/test/x/m /mnt /mnt/test/y


tree:

   查看目录树

  tree x


删除目录


rmdir: 删除空目录 (remove directory)


文件的创建和删除


touch 修改文件时间戳

  touch a

  file a


stat 查看文件状态


创建文件,可以使用文本编辑器


ASCII: 

  128 个不同的字符

  2^7 = 0, 127


  计算机存储数据的最小单位是字节,一个字节是8位 。

  虽然只有7位,但存储的时候也要用 一个字节 8位来存储。


ASCII 码表,是一个标准,约定大家用同一个二进制表示的字符相同。


汉字:

  常用汉字几千个

  所有汉字大概十几万个


  2^16 = 65535  ,用两个自己存储汉字,可以存储六万多个汉字


标准 GB18030 、GB2312、GBK、Unicode

0000 1001 0000 1110 : 上、卫


notepad++ 文本编辑器 (纯文本)

word 字处理软件 (文本、样式)


notepad++ 编辑的文本,拿到 linux 里可以当配置文件用


nano:

  nano hello : 创建一个文本文件 hello 

  ^ : 脱字符 ctrl 

  ^O: 保存

  Linux 中的文本编辑器


  ls -lh hello

  file hello



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章