• linux进阶-文件目录


    目录

    linux基础知识 

    常见符号 

    终端显示格式 

    简述linux的启动流程

    根目录下文件

    伪文件系统 

    procfs文件系统

    sysfs文件系统

    devfs文件系统

    linux文件属性

    文件类型

    文件权限

    文件大小

    系统路径

    默认挂载 

    硬链接和软链接

    软链接(符号链接)

    硬链接

    文件系统

    建立文件系统

    挂载文件系统

    卸载文件系统


    linux基础知识 

    常见符号 

     /根目录

    ~家目录

    -上次目录

    .当前目录

    ..当前上一层目录

    ../..当前上上一层目录

    查看根目录:ls -l或tree(若tree查询不到,则sudo apt-get install tree)。

    终端显示格式 

    简述linux的启动流程

    根目录下文件

    根目录下文件名描述
    bin(binary,二进制)存放着最基础的二进制可执行文件,如cd、ls、pwd等
    boot(bootloader,启动)存放着跟启动相关文件。vmlinuz-4.18.0-15-generic存放着系统内核。grub2文件夹存放着启动程序,相当于uboot
    cdrom以前经常用来挂载CD镜像,现在慢慢淘汰了
    dev(device,设备)存放着设备驱动程序来访问外部设备。如/dev/mouse来访问鼠标的输入
    etc存放着系统配置文件以及应用程序的配置文件。如用户信息文件/etc/passwd、系统初始化文件/etc/rc、apt、dhcp等等。在给系统安装某些软件或服务后,常常需要修改/etc目录下的文件进行配置
    home存放着普通用户的主目录
    lib

    存放着lib库(bin目录下应用程序的库文件),针对32位系统。

    根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件。

    如C语言标准库,包含了可被许多程序共享的代码,以避免每个程序都包含相同的子程序的副本,使得可执行文件更小。

    lib64存放着lib库(bin目录下应用程序的库文件),针对64位系统
    media通常是一些自动挂载的设备目录。如读卡器、光盘、软盘和DVD等
    mnt(mount,挂载)系统管理员临时挂载文件系统的安装点。如/mnt/dosa可能是使用msdos文件系统的软驱,而/mnt/exta可能是使用ext2文件系统的软驱,/mnt/cdrom可能是使用光驱等
    opt(option,可选)经常用来做软件测试和第三方软件安装存放目录
    proc(procedure,程序)

    存放着进程,目录下文件名为进程ID。

    也存放着内核导出到用户空间的内核信息,如系统内存。

    不占用硬盘空间。

    root存放着系统管理员用户的主目录
    run临时文件系统,存放系统运行以来的一些信息。当系统重启时,这个目录下的文件应该被删掉或清除。
    sbin存放着root权限的二进制可执行文件,只有root用户才能执行,如lsmod、mkfs等
    snap新型管理工具(以前常用apt工具)
    srv存放着网络服务的信息
    sys把内核的设备驱动导出到用户空间,可访问目录下的文件来查看和控制内核的一些驱动设备
    tmp存放程序在运行时产生的信息和数据。但在引导启动后,运行的程序最好使用/var/tmp代替/tmp,因为/var/tmp可能拥有更大的磁盘空间
    usr存放着系统大部分的应用程序(整个文件系统占内存最大)
    var(variable,易变的)存放着易变的文件,比如目录下存放着软件运行错误信息、系统日志信息、电子邮件信息

    伪文件系统 

    比如:procfs、sysfs、devfs等,存在于内存中,通常不占用硬盘空间,向用户提供了访问系统内核数据的接口。用户和应用程序可以通过访问这些数据接口,得到系统的信息,而且内核允许用户修改内核的某些参数。

    procfs文件系统

    进程文件系统,通常自动挂载在/proc文件夹。procfs为用户提供内核状态和进程信息的接口,相当于Windows的任务管理器。

    比如

    查看CPU信息:cat /proc/cpuinfo

    查看proc目录:ls /proc

    文件名作用
    pid*

    *表示的是进程的ID号,系统中当前运行的每一个进程都有对应的一个目录,用于记录进程所有相关信息。

    对于操作系统来说,一个应用程序就是一个进程

    self为软链接,指向了当前进程的目录,通过访问/proc/self/目录来获取当前进程的信息,就不用每次都获取PID
    thread-self

    为软链接,指向了当前线程。访问该文件等同于访问“当前进程pid/task/当前线程tid”的内容。

    一个进程,可以包含多个线程,但至少需要一个进程,这些线程共同支撑进程的运行

    version记录了当前运行的内核版本,通常使用命令“uname -r”
    cpuinfo记录系统中CPU的提供商和相关配置信息
    modules记录了目前系统加载的模块信息
    meminfo记录系统中内存的使用情况,free命令会访问该文件来获取系统内存的空闲和已使用的数量
    filesystems记录内核支持的文件系统类型,通常mount一个设备时,如果没有指定文件系统并且它无法确定文件系统类型时,mount会尝试包含在该文件中的文件系统,除了那些标有“nodev”的文件系统

    再比如

    查看当前bash进程的PID号:ps

    文件名文件内容
    cmdline只读文件,记录了该进程的命令行信息,如命令和命令参数
    comm记录了进程的名字
    environ进程使用的环境变量
    exe软链接文件,记录命令存放的绝对路径
    fd记录进程打开文件的情况,以文件描述符作为目录名
    fdinfo记录进程打开文件的相关信息,包含访问权限和挂载点,由其文件描述符命名
    io记录进程读取和写入情况
    map_files记录了内存中文件的映射情况(以对应内存区域起始和结束命名)
    maps记录当前映射的内存区域,其访问权限和文件路径
    stack记录当前进程的内核调用栈信息
    status记录进程的状态信息
    syscall显示当前进程正在执行的系统调用。第一列记录了系统调用号
    task记录了该进程的线程信息
    wchan记录当前进程处于睡眠状态,内核调用了相关函数

    sysfs文件系统

    Linux内核在2.6版本引入了sysfs文件系统,sysfs通常会自动挂载在/sys文件夹。

    /sys目录下的文件/文件夹向用户提供了一些关于设备、内核模块、文件系统以及其他内核组件的信息,比如子目录block中存放了系统中所有的块设备,而子目录bus中存放了系统中所有的总线类型(i2c、usb、sdio、pci等)。

    文件名作用
    block

    记录所有在系统中注册的块设备,这些文件都是符号链接,都指向了/sys/devices目录

    bus该目录包含了系统中所有的总线类型,每个文件夹都是以每个总线的类型进行命名
    class

    包含了所有在系统中注册的设备类型,如块设备、声卡、网卡等。

    文件夹下的文件同样也是一些链接文件,指向了/sys/devices目录

    devices包含了系统中使用的设备,链接到设备有关的文件/文件夹最终都会指向该文件夹
    modules该目录记录了系统加载的使用内核模块(每个文件夹以模块命名)
    fs包含了所有在系统中注册的文件系统

    devfs文件系统

    Linux内核在2.6版本之前一直使用的是devfs文件系统管理设备,它通常挂载在/dev目录下。devfs中的每个文件都对应一个设备,用户也可以通过/dev目录下的文件访问硬件。

    linux文件属性

    ls -al命令显示了当前目录下的所有文件和文件夹(包括隐藏)的详细信息。

    文件类型
    文件类型字符描述
    普通文件-
    目录文件(directory)d

    链接文件(link)

    l
    块输入/输出设备文件(磁盘驱动器)(block)b
    字符输入输出设备(声卡、调制解调器)(character)c
    管道文件(pipe)p

    文件权限

    9个字符,rwx-表示读、写、执行和没有权限。

    高3个:文件所有者的权限

    中3个:用户组的权限

    低3个:其他非本用户组的权限

    关于执行权限,是指可以加载到内存中,并由操作系统加载程序执行的文件。 

    文件大小

    默认单位为字节。

    如果文件名之前多了一个“.”,则说明这个文件为“隐藏文件”。

    系统路径

    假设当前目录在A,目标访问为c1.c。

    全文件名:\A\C\c1.c
    相对路径:C\
    绝对路径:\A\C\

    默认挂载 

    插入U盘或光盘,并不会像Windows有独立的盘符可以访问,而是默认挂载在/media或/mnt目录下。例如给电脑插入U盘,系统会自动把U盘挂载在/media/用户名/目录下。

    硬链接和软链接

    软链接:

    软链接是一个指向文件路径的指针,类似于Windows中的快捷方式,但在文件系统的层次上更为底层。

    如果原始文件被删除,软链接将变为悬空指针,指向一个不存在的文件。

    软链接可以跨越文件系统,即可以链接到不同文件系统中的文件。

    使用ls -l查看文件的类型为l,并显示链接的目标文件路径。

    软链接命令参数:ln -s 原始文件 软链接文件

    硬链接:

    硬链接是指多个文件指向同一个索引节点,这意味着它们实际上是同一个文件,只是在文件系统中有多个文件名指向它。

    如果原始文件被删除,并不会影响其它硬链接的文件,因为它们指向的是相同的数据块。

    硬链接不可以跨越文件系统,即硬链接只能在同一个文件系统内创建。

    使用ls -l查看文件的类型为-。

    硬链接命令参数:ln 原始文件 硬链接文件

    区别:

    硬链接指向的是文件的内容数据块,而软链接指向的是文件的路径。

    硬链接不能跨文件系统,而软链接能跨文件系统.

    可以通过ls -l命令区分硬链接和软链接。

    当删除原始文件时,硬链接仍然可以访问文件内容,而软链接会变为无效链接。

    文件系统

    一个磁盘设备可包含一个或多个文件系统,但每个文件系统必须占据硬盘中单独的一个分区。Linux文件系统可以根据需要随时装载和移除,这种方法保证了文件存储空间的动态扩展和系统安全。当常用的Linux桌面版系统启动时,包含根目录的文件系统首先被装载,该文件系统上存放着保护系统正常运行的系统文件,其他文件系统在桌面环境启动时作为子系统会自动安装到主系统中。

    建立文件系统

    当硬盘分区完成后,应该在该分区上建立文件系统,该操作又称为格式化。建立文件系统是通过mkfs工具来完成的。

    例如:在分区/dev/hdb1上建立ext4文件系统,-t表示指定要创建的文件系统类型。

    mkfs -t ext4 /dev/hdb1

    Linux系统对分区的明明规则:/xyz

    x:ATA接口的硬盘-hd;SCSI和SATA接口的硬盘-sd。

    y:硬盘的序号。如a为第一块硬盘,b为第二块硬盘,...。

    z:分区的序号。

    挂载文件系统

    创建文件系统后,需要将该文件系统安装到主文件系统中。

    su
    mkdir /mnt/dev
    chmod 777 /mnt/dev
    mount -t ext4 /dev/hdb1 /mnt/dev

    卸载文件系统

    对于一些可读写的移动设备,移除设备前需要卸载子文件系统。因为Linux系统使用了缓存机制,如果不卸载就移除设备可能会造成子文件系统数据丢失。

    对于正在进行读写操作的子文件系统不能使用umount命令卸载。卸载子文件系统前,应保证其中没有文件被打开。

    例如,某个已挂载的USB存储器挂载点为/mnt/usbdisk

    umount /mnt/usbdisk

  • 相关阅读:
    游戏开发32课 typescript super
    Redis集群什么情况下整个集群不可用了?
    硬件系统工程师宝典(45)-----电源、时钟电路布局小技巧
    Spring Security(五)密码加密与更新密码
    java通过路径返回流给前台
    【Java高级】一篇文章带你搞懂线程
    算法12.从暴力递归到动态规划5
    【Web】前端框架对微软老旧浏览器的支持
    基于ansible部署lamp架构(源码安装)
    SpringBoot 如何优雅的进行全局异常处理?
  • 原文地址:https://blog.csdn.net/weixin_47077788/article/details/127908119