linux学习笔记[华电](7)——文件操作

    科技2022-07-15  130

    文件操作

    在linux上,文件的作用远远大于在windows上的文件。 在windows上,如果要使用一个新的硬盘,需要先找到物理分区,再建立新的逻辑分区,再选择某个文件系统。 那么,在linux上又是如何操作的呢?


    linux上的MBR方案:

    物理分区

    格式:

    /dev/sda:第一块物理硬盘,不代表任何分区。/dev/sdb/dev/sdc…

    逻辑分区

    格式:

    /dev/sda1:第一个分区(一般是主分区)。/dev/sda2/dev/sda3…

    主分区:sda1~sda3 扩展分区:sda4 逻辑分区:sda5、sda6、sda7…(只能在扩展分区上创建)任何一个逻辑分区的最小编号都是5。

    文件系统

    linux支持的文件系统:ext2,ext3,ext4,ZFS…

    挂载点

    挂载到相应目录上。


    在linux使用一块新硬盘的步骤(重要)

    1、插上硬盘后,使用fdisk查看和调整磁盘分区

    sudo fdisk /dev/sda

    2、使用mkfs进行分区的格式化、创建文件系统

    sudo mkfs -t ext3 /dev/sda5 #使用-t选项指明文件系统类型

    3、使用mount挂载到某个目录上,使用umount解除挂载。

    sudo mount /dev/sda5 myproject #挂载sda到myproject目录上

    分区和目录的顺序不能颠倒,先写分区,再写目录。 系统启动时自动挂载——修改/etc/fstab文件。


    linux文件系统结构

    FHS标准,所有linux发行版都遵循的标准。


    虚拟文件系统

    虚拟文件系统VFS可以让不同的文件系统,对用户进程来说都有统一的API。


    ext2文件系统

    每个文件只有一个索引节点,每个索引节点都有唯一的标识符。

    引导块超级块inode块目录块数据块

    文件类型

    文件类型代表字符普通文件-目录文件d(directory)设备文件(字符设备)c(character)设备文件(块设备)b(block)链接文件l(link)管道文件p(pipe)

    链接文件类似于windows下的快捷方式。


    文件权限管理

    UGO方式——简单

    3类:

    Uesr,文件拥有者Group,用户组Other,其他用户

    3种权限:

    普通文件的权限: r:读文件w:写文件x:在shell下执行文件 目录文件的权限: r:可以ls到目录中去w:可以在目录中创建和删除文件x:cd到目录中去,一般是和其他两个配合使用,组合设置上 ls -l #可以查看目录底下文件的详细信息 ls -ld testp/ #查看目录本身的信息

    其中一条记录的前10个字符为: -(普通文件) r w -(文件拥有者权限) r - -(用户组权限) r - -(其他用户权限)

    chmod u-x testp/ #剥夺了可执行权限 cd testp #无法cd,显示权限不够 ls -ld testp/ #但是可以查看目录信息

    chmod u-r testp/ #剥夺了r权限 ls testp #无法ls touch a #但是可以创建文件

    chmod u-w testp/ #剥夺w权限 touch b #无法创建文件

    使用chmod修改文件权限。

    chmod u=rwx,g=rx,o=rx testp/ chmod 755 testp/ chmod u+x,g+r,o+r testp/ chmod u-x,g-r,o-r testp/ chmod a=rwx testp/ chmod a-w testp/

    文件默认权限(怎么来的,请参考《关于文件权限的八进制表示》)

    目录文件:777 &(~umask)普通文件:666 &(~umask)

    umask的默认值0022。

    ACL方式——复杂全面

    getfacl:获取控制列表setfacl:设置控制列表chacl:修改控制列表

    不详细展开。


    文件基本操作

    文件描述符

    OPENMAX:同时打开的文件数上限。

    ulimit -a #查看所有限制 ulimit -n #查看同时打开的文件数

    普通用户可以使用ulimit把数量下调,只有root用户才能往上调。

    标准输入输出

    宏定义:

    STDIN_FILENO:0STDOUT_FILENO:1STDERR_FILENO:2

    用户进程的ID

    用户启动的进程是否能打开文件,取决于进程的有效用户决定。 通常情况下,用户的有效ID——实际用户ID。 如果文件执行权限设置为s的话,有效ID——文件所有者的用户ID。

    s位分为suid和sgid等。

    chmod u+s 1.txt chmod u-s 1.txt

    文件有关的系统调用函数(不是bash命令)

    1、文件的创建与打开:creat,open,mkdir,mknod 2、文件读写:read,write 3、关闭和删除文件:close,unlink(文件引用计数变为0)

    软链接 ln -s sum0.c ll #软链接 ln -s 文件/目录 ll

    硬链接 ln sum0.c dd #硬链接 # 为了避免ls -R出现死循环,不允许创建目录的硬链接

    指向同一个i结点,可以发现文件计数器+1。

    4、移动文件读写指针:lseek 5、改变文件属性:chown,fchown,lchown 6、设置文件权限:chmod,fchmod,umask,access 7、获取文件状态:stat,fstat,lstat

    把stat结构体中的成员变量st_mode作为参数传入宏定义中,进行测试,返回非0值,执行成功。S_ISREG(m)S_ISDIR(m)…

    8、修改文件时间:utime 9、目录操作:mkdir,rmdir,chdir,fchdir,getcwd 10、读取目录:opendir,readdir,rewinfdir,closedir


    总结

    这一期就到这了。内容还是很多的。

    Processed: 0.010, SQL: 8