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

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

作者: Caucher | 来源:发表于2022-07-25 02:04 被阅读0次

    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找出来。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/dnibirtx.html