linux文件系统

Posted bitwoods

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux文件系统相关的知识,希望对你有一定的参考价值。

# linux文件系统

linux由虚拟文件系统VFS提供同一套API操作不同的文件类型。

  • 普通文件:存储设备上的文件,如C文件、目录、可执行文件等
  • 字符设备文件:可以像文件一样访问的设备,如串口、控制台
  • 块设备文件:需通过内存缓冲区且一次读写访问固定大小数据的设备,不直接对设备进行数据读写。如磁盘、软盘、光驱等
  • socket文件:通过文件描述符抽象实现对网络的访问

    创建文件系统

    查看分区情况

    fdisk -l

    建立分区(假设目标磁盘为dev/sdb)

    fdisk /dev/sdb

之后根据提示输入对应命令字操作

  • a 设置为启动分区
  • b 编辑bsd磁盘
  • c 设置兼容dos标志
  • d 删除一个分区
  • l 列出当前系统支持的分区方式
  • m 打印命令/help
  • n 增加一个分区
  • o 建立新的dos分区表
  • p 打印分区情况
  • q 不保存退出
  • s 建立一个新的Sun空磁盘
  • t 改变分区ID
  • u 改变显示单元
  • v 修正分区表
  • w 保存并退出
  • x 专家模式

    格式化分区

    mkfs.ext3 /dev/sdb1 //将dev/sdb1格式化为ext3类型文件系统

    挂载分区

    mount /dev/sdb1 /test //将/dev/sdb1 挂载到/test

mount命令用于挂载文件,其使用格式如下:

mount -t type mountpoint device -o options

上面的命令表示将文件类型为type的设备device按照options设置挂载到mountpoint上

查看分区挂载情况

df

文件操作

### 文件描述符(file descriptor)

linux通过一个整型数字文件描述符来表示文件,是一个与系统设置有关的有限资源,使用完毕后必修及时释放,其值仅在同一进程有效;
系统已分配3个文件描述符

  • 0->标准输入(stdin)
  • 1->标准输出(stdout)
  • 2->标准错误(stderr)

    打开/创建文件

//open()函数
int open(const char *pathname,int flags);
int open(const char *pathname,int flags,mode_t mode);
  • 使用时需包含头文件sys/types.h、sys/stat.h、fcntl.h
  • 成功返回文件描述符,失败返回-1
  • pathname最大长度通常为1024,不同系统有差别,超长自动截断
  • flags
    • O_RDONLY 0 只读
    • O_WRONLY 1 只写
    • O_RDWR 2 可读可写
    • O_APPEND 写操作时追加
    • O_CREAT 不存在则创建,此时需设置mode参数以确定新文件权限
    • O_TRUNC 将文件长度截断为0,若文件存在并成功打开,则文件长度截断为0
    • O_NONBLOCK 以非阻塞方式打开文件,不指定是默认阻塞方式打开
  • mode参数值与含义
选项 含义
S_IRWXU 00700 用户(文件所有者)有读写和执行权限
S_IRUSR 00400 用户有读权限
S_IWUSR 00200 用户有写权限
S_IXUSR 00100 用户有执行权限
S_IRWXG 00070 组用户(文件所有者)有读写和执行权限
S_IRGRP 00040 组用户有读权限
S_IWGRP 00020 组用户有写权限
S_IXGRP 00010 组用户有执行权限
S_IRWXO 00007 其他用户(文件所有者)有读写和执行权限
S_IROTH 00004 其他用户有读权限
S_IWOTH 00002 其他用户有写权限
S_IXOTH 00001 其他用户有执行权限

以上是关于linux文件系统的主要内容,如果未能解决你的问题,请参考以下文章

LINUX PID 1和SYSTEMD PID 0 是内核的一部分,主要用于内进换页,内核初始化的最后一步就是启动 init 进程。这个进程是系统的第一个进程,PID 为 1,又叫超级进程(代码片段

Linux文件系统4--打开文件

linux下如何查看文件夹大小?硬盘使用情况?内存使用情况?

Java itext为pdf 文件添加水印核心功能代码片段

[linux][c/c++]代码片段01

[linux][c/c++]代码片段02