linux基础学习笔记一:磁盘与文件系统管理

2.1 类型与权限

  • ll命令:
    • 第一列的含义:
      • 第一个字符:文件类型。[d]目录,[-]文件,[l]链接文件,[s]socket网络连接文件,[p]管道文件,[b]存储设备,[c]串口设备(一次性读取设备,键鼠等)
      • 之后九个字符,三个一组,共三组。第一组是拥有者权限,第二组是所在用户组的权限,第三组是其他人权限。
    • 第二列是链接数;
    • 第三列是文件拥有者;
    • 第四列是文件所属用户组。
  • chgrp, chown, chmod:分别对应修改文件或目录的所属用户组,拥有者,和文件权限。chown caucher data.bin
    • -R参数可以递归设置目录下所有文件;
    • chmod的第一个参数为数字格式,按照rwx的规则从0到7,比如chmod 777 data.bin
    • chown可以同时修改所属用户和用户组,利用:分开即可。
  • umask可以设置文件和目录的默认权限,-S文本显示。
  • 文件与目录的权限:
    • 文件:r表示可读,w表示可修改(不包括删除),x表示可执行。
    • 目录:r表示可查看其中文件,w表示可以【修改删除新建移动】目录中的文件,x表示可以进入该目录。

2.2 FHS标准

2.2.1 /根目录

该目录主要跟启动系统有关。这个目录所在的分区要越小越好,以保证尽可能低的出错概率。

  • bin: 常用bash命令程序:cat, chmod等;
  • boot:linux内核文件vmlinuz和其它系统启动配置程序;
  • dev:设备文件;
    • dev/shm:虚拟内存映射
  • etc:几乎所有配置文件,包括密码文件,服务启动文件等。
    • 一般来说所有用户可读,但只有root可修改;
    • 不要放置可执行文件在这里面。
    • 必须有一个etc/opt存放第三方软件的配置。
  • home: 各个用户的家目录。
  • lib:启动时需要的系统函数库;
  • lost+found:ext系列文件格式的一个错误模块。
  • media:可删除的挂载设备;
  • mnt:暂时挂载设备;
  • opt: 第三方软件的目录,主要指不在软件源中提供的软件; usr/local是过去的该类软件的存放地。
  • proc:实际上是一个虚拟文件系统,不占磁盘空间,内容都在内存里面。包括系统内核,进程信息,外接设备,网络状态等。
  • root:root用户的家目录。
  • run: 系统启动后各项信息,过去存于var/run中。
  • sbin: 用来设置系统环境的程序。
  • srv: 网络服务的数据目录。
  • sys:和proc性质一样,但存放的是内核信息。
  • tmp:临时文件目录。

2.2.2 /usr软件目录 (UNIX Software Resource)

  • /usr/bin:用户命令程序;
  • /usr/include:C/C++头文件目录;
  • /usr/lib:系统函数库;
  • /usr/libexec:一些不常用的脚本。
  • /usr/local:非软件源提供的软件;
  • /usr/sbin:非必须系统命令程序;
  • /usr/share:共享只读文档文件。
  • /usr/src: 内核源码。

2.2.3 /var运行目录

包括缓存文件,日志文件,运行时产生的文件(lock file, run file等),数据库文件等。

  • /var/cache:程序的缓存文件;
  • /var/lib:程序执行过程中需要的数据文件,比如数据库的数据文件。
  • /var/lock:实际已经迁移到/run/lock中,表示的是对设备上锁(某些设备某一时刻只能由一个进程占用)。
  • /var/log:重要的日志文件。
  • /var/run:实际已经迁移到/run中,进程或服务启动后,pid就会放在这个目录下。
  • /var/spool:等待进程使用的队列数据。

2.3 路径操作

基本命令:

  • pwd:显示当前路径。参数-P显示真实路径(非链接路径)。
  • mkdir:创建目录。参数-p可以递归创建一系列目录。
  • touch:创建一个新文件,(以及修改文件属性,下面将)。
  • file:查看文件属性
  • ls:列出目录上的文件。
    • 参数-R会将子目录中内容全部输出;
    • 参数-S将以文件大小排序,-t以时间排序,-r将结果反向排序。
    • 参数-s将输出文件和目录的实际占用大小。
    • 参数--full-time输出完整时间格式。
  • cp:复制文件或目录
    • 参数-i询问是否覆盖;
    • 参数-p连同属性一起拷贝;
    • 参数-d,在复制链接文件时,只复制链接,否则会复制源文件。
  • mv:移动文件或目录,默认会覆盖。
    • 参数-i询问是否覆盖;
    • 可以放置多个参数,只有最后一个参数是目的地
  • $PATH:可执行文件的路径变量(环境变量)。每个用户的变量值还各有不同,一般会包含自己用户家目录中的bin

2.4 查看文件内容

  • less:只读版的vim
  • head: 看文件的头几行,参数-n决定看几行
  • tail:看文件的尾几行,用法和head一样。额外一个可选参数-f可以持续显示文件中append进来的数据。
  • od:查看二进制文件:
    • od -t f4 data.bin:输出浮点数(float)文件;
    • od -t d4 data.bin:输出整数(int)文件,还可以用ox来进行8进制和16进制输出。

2.5 文件的时间属性

  • 修改时间(mtime):修改文件内容的时间(ls默认显示);
  • 状态时间(ctime):修改文件属性的时间;
  • 读取时间(atime):读取文件的时间。
  • touch命令可修改文件的时间属性。

2.6 文件查找

  • which:查找$PATH内的脚本。
  • whereis:搜索范围比which略大, -l参数列出搜索目录。
  • locate:搜索范围更大;不需要输入完整名字;需使用updatedb更新数据库。
    • 参数-i忽略大小写;
    • 参数-r可输入正则表达式。
  • find:可以按照文件时间,拥有者,文件名,文件权限,文件类型查找,
    • -size +50k:查找>50KB的文件;
    • find命令后面还可以对找到的文件进行额外的Action,例如find . -size +1M -exec file {}\;,其中{}代表找到的文件。

2.7 文件系统

2.7.1 ext2文件系统

每个文件有一个inode(存文件属性)和若干data block(存具体数据)构成。

  • 整个文件系统会将磁盘划分成若干block group,每个group中有一个super block,存放该group中关于inode和data block的统计信息,可以由命令dumpe2fs /dev/sda查看;
    • 还有block bitmap和inode bitmap用来映射对照block和inode的使用情况,以便分配。

2.7.2 xfs文件系统

由于ex[n]系列预先初始化好各个部分,使用时直接取用,因此格式化速度极慢。因此在大磁盘容量时,xfs文件系统是首选。

  • 日志式文件系统:对磁盘做的修改首先写入log section以备恢复。
  • 动态空间配置:不初始化具体的inode, data blocks等,即用即配,但仍然规划为若干blocks。
  • realtime section:写文件时首先在这个位置写,然后再转入data section。
  • xfs_info:查看文件系统的具体配置。

每个文件系统可以挂载在目录树的某个入口点上,每个分区一般只有一个文件系统。总的来说,一台机器可能有多个分区,不同的文件系统,其访问方式,统一交给linux内核的VFS模块来协调管理。

2.7.3 文件系统管理

  • df -hT:显示各个文件系统状态,-T显示文件系统类型, -i显示inode使用数量。
  • du -h:递归显示每个目录的大小,-a可以显示所有文件大小,-s显示汇总大小。
  • lsblk:显示所有磁盘和分区性质,参数-f显示uuid;
  • parted /dev/sda print显示分区类型。
  • /etc/fstab记录了文件系统的开机自动挂载情况。

2.7.4 硬链接与软链接

  • 硬链接:ln src dest dest和src共享一个inode,所多出来的就是dest的目录中加了一个条目【dest => src的inode】而已。新文件也是个普通文件,但是链接数会+1.
    • 硬链接不支持跨文件系统,不支持链接目录。
  • 软链接:ln -s src dest 实际上就是快捷方式,生成一个新文件,类型为l,其中的内容就是src的名字
    • 建立链接请使用绝对路径!不要使用相对路径,否则会在使用时报错“Too many levels of symbolic links”。
    • 文件、目录均可使用该指令,一视同仁。
  • 新建一个目录时,由于...的原因,新目录链接数为2,新目录的上级目录链接数+1。

2.8 磁盘管理

简略说,需要分区,格式化(创建文件系统),校验,挂载四步。
注意的点是:

  • 格式化时,xfs文件系统的-agcount参数,即几个存储组,可以设置为逻辑线程个数以增强读写效率。
  • swap交换空间也是类似的,只不顾格式化命令不同,也无需校验挂载。
  • 镜像文件.iso可以直接挂载在某个目录上。
  • dd命令功能很强大,不仅可以用于文件和目录的备份,还可以将整个设备备份成一个文件(比如镜像文件.iso),甚至可以将镜像文件刻录到设备上。
  • cpio命令则是一个更灵活的备份工具,可以自选文件目录进行备份,不过需要配合find命令和管道一起使用。

附录(冷知识)

  • ;可以在多个命令之间,表示多条命令依次执行
  • last:查看用户最近登录信息
  • /etc/passwd: 所有用户信息
  • /etc/shadow: 所有用户密码信息(加密过)
  • /etc/group: 所有用户组信息
  • 文件名开头为.的代表为隐藏文件,可以被ls -a找出来。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容