linux之文件操作
文章平均质量分 52
带鱼兄
爱在新空气,快乐每一天
展开
-
linux使用Inotify监控目录或者文件状态变更
基本概念:Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。需求:1.有一个文件采集进程,需要对日志文件进行采集,日志文件可能会被删除,可能会被移动。2.我们都知道文件一旦被删除或者移动,那么进程使用原有的文件fd就无法继续读取文件数据。3.那么就需原创 2016-06-17 00:12:37 · 13401 阅读 · 5 评论 -
linux下创建临时文件
前述:linux下删除一个文件需要满足两个条件:1.文件的链接计数为02.没有进程打开该文件我们即使使用rm命令删除了文件,实际上如果有进程打开了该文件,该文件的内容实际上没有被删除,进程仍然可通过fd操控这个文件。删除一个文件时,内核首先检查打开该文件的进程个数;如果这个技术达到0,内核再去检查其链接计数;如果计数也是0.那么就删除该文件的内容。系原创 2016-08-02 15:58:58 · 5167 阅读 · 1 评论 -
linux下软连接与硬链接的本质区别
软连接跟硬链接最大的区别在于:1.文件A和文件B的inode号码一样,对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)。2.文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,原创 2016-08-02 18:18:20 · 6469 阅读 · 0 评论 -
理解inode
作者: 阮一峰日期: 2011年12月 4日inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础。我觉得,理解inode,不仅有助于提高系统操作水平,还有助于体会Unix设计哲学,即如何把底层的复杂性抽象成一个简单概念,从而大大简化用户接口。下面就是我的inode学习笔记,尽量保持简单。====================转载 2016-08-02 18:36:20 · 913 阅读 · 0 评论 -
linux下文件操作需要关注的函数
前述:本文并不是为了详细讲解每个函数的细节,细节可参考man手册或者《unix环境高级编程》一、打开或者创建文件#include #include #include int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode原创 2016-08-02 11:55:17 · 775 阅读 · 0 评论 -
linux下文件访问时间、修改时间、更改时间
基本概念:linux对每个文件维护3个时间段(访问时间、修改时间、更改时间),它们的意义于图4-19中。在linux下没有创建时间的概念,也就是不能知道文件的建立时间,但如果文件建立后就没有修改过,修改时间=建立时间,但是不能依赖文件内容来判断文件是否被修改,举个例子,用vim打开文件,不做任何修改操作,执行保存退出,修改时间也会被改变成当前时间,而实际上文件内容并没有被改变。原创 2016-08-29 23:24:26 · 9422 阅读 · 0 评论 -
使用dd命令测试磁盘读写性能
测试环境:逻辑CPU:12内存:16GB磁盘:7200转文件系统:ext4测试写入速度:dd if=/dev/zero of=/fdfs1/daiyu/test1.dbf bs=8k count=400000 (默认"写缓存"启作用)dd if=/dev/zero of=/fdfs1/daiyu/test2.dbf bs=8k count=400000 co原创 2016-11-14 11:49:05 · 14949 阅读 · 2 评论 -
linux查看文件系统块大小与内存页大小
一:查看文件系统块大小sudo /sbin/tune2fs -l /dev/sda1|grep "Block size"需要注意到系统可能有多个盘多个文件系统,可通过df命令查看数值单位是字节,如图示:二:查看内存页大小getconf PAGESIZE数值单位是字节,如图示:原创 2016-02-01 10:32:11 · 13522 阅读 · 0 评论 -
关于linux文件Blocks和Block size的一些解析
File system block sizesOn the other hand, every file system needs to split up a partition into blocks to store files and file parts. This is why there is a different block size for a file syst原创 2016-12-27 18:11:10 · 9963 阅读 · 0 评论 -
linux查看文件在磁盘中是否连续的block
命令:debugfs -R "stat " $disk例子:假设磁盘中有一个72MB的文件"999"1)先查看文件的Inode$stat 9992)查看文件所在的盘符$df -h3)查看是否连续块$ debugfs -R "stat " /dev/sda1可以看到共有18431个连续block,每个原创 2017-09-18 20:12:16 · 2661 阅读 · 0 评论 -
linux下多进程/多线程文件操作详解
一、基本概念内核使用三种数据结构表示打开的文件,它们之间的关系决定了在文件共享方面一个进程对另一个进程可能产生的影响1.每个进程在进程表都有一个记录项,记录项中包含有一张打开文件描述符表,与文件描述符相关联的是:a)文件描述符标志b)指向一个文件表项的指针,父子进程共享一个文件表项2.内核为所有打开文件维持一张文件表,每个文件表项包括a)文件状态标志(读、写、同步、非阻原创 2016-07-24 20:18:37 · 17896 阅读 · 7 评论 -
linux文件I/O
一.shell的惯例,与内核无关描述符0作为进程标准输入描述符1作为进程标准输出描述符2作为进程标准错误二.大多数文件I/O只需要用到五个函数1.open函数open函数返回的文件描述符一定是最小的未用描述符数值。2.read函数(在内核执行,不带缓冲区的I/O函数)有多种情况可以使读到的字节数少于要求读的字节数3.write函数(在内核执行,不带缓冲区原创 2016-02-03 01:19:59 · 1236 阅读 · 0 评论 -
lsof查看文件描述符的offset
1.基本概念lsof -s :显示进程打开的文件的当前大小lsof -o :显示进程打开的文件的offset注意:The -o and -s options are mutually exclusive; they can't both be specified,也就是 -s、-o不能同时使用2.查看进程打开的文件大小lsof -p $pid -s | grep原创 2016-04-20 11:07:35 · 3708 阅读 · 1 评论 -
linux磁盘列阵和文件系统
1.基本概念磁盘列阵:独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),简称磁盘阵列文件系统:计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的原创 2016-04-20 11:53:03 · 929 阅读 · 0 评论 -
linux下使用tree命令显示目录的树结构
ubuntu下的安装命令:apt-get install tree帮助命令:tree --help只显示目录:tree -dEndl;原创 2016-03-16 09:46:32 · 6711 阅读 · 0 评论 -
文本文件和二进制文件的区别
1.计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。2.二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放,也就是说存放的是数据的原形式。文本文件是把数据的终端形式的二进制数据输出到磁盘上存放,也就是说存原创 2016-02-04 16:46:10 · 1023 阅读 · 0 评论 -
linux不带缓存的I/O和带缓存的I/O
概念:不带缓存的I/O:UNIX的文件I/O read、write是不带缓存的,不带缓存是指每个read、write都调用内核的一个系统调用,它们是POSIX.1的组成部分。带缓存的I/O:带缓存的I/O是指标准I/O库,它由ANSI C标准说明,标准I/O库代替用户处理很多细节,比如缓存分配、以优化长度执行I/O等,提供缓存的目的就是减少调用read和write的次数原创 2016-02-03 11:42:27 · 1379 阅读 · 0 评论 -
linux文件一致性校验
方案一 md5校验:#!/bin/bashfilename="1.jpg"md5sum $filename结果:b019e55fe5c630e3c74aec19c9858d21 1.jpg方案二 sha1校验:#!/bin/bashfilename="1.jpg"sha1sum $filename结果:b98bf72c5b原创 2016-01-20 00:24:07 · 2874 阅读 · 0 评论 -
linux查看磁盘和目录空间
1.查看磁盘使用率df -h2.查看单个目录的挂载情况(目录属于哪个分区)df -h /home3.查看目录下的文件夹和文件大小du -sh *原创 2016-01-20 21:22:00 · 3183 阅读 · 0 评论 -
linux查找指定大小的文件
关键点:使用find命令#找出当前目录[3KB,10KB]大小的文件find ./ -size +3k -a -size -10k#找出当前目录大于1个字节的文件find ./ -size +1c#找出当前目录0字节的文件find ./ -size 0c #删除当前目录0字节的文件rm -rf `find ./ -size 0c`原创 2016-01-20 21:52:35 · 8677 阅读 · 0 评论 -
linux查找被删除但是未释放空间的文件
清理磁盘空间时,rm掉文件后,发现磁盘空间并没有释放,根本是原因是文件被进程打开中,文件描述符未被释放关键点:利用lsof命令查看lsof | grep deleted原创 2016-01-20 22:21:56 · 7503 阅读 · 0 评论 -
linux创建空洞文件
文件偏移量可以大于文件的当前长度,会在文件中构成空洞,文件中的空洞并不要求在磁盘上占用存储区源码:#include #include #include #include #include int main(){ char *pathname = "./test.data"; long long length = 1024 * 1024 * 1024;原创 2017-09-18 22:39:35 · 2316 阅读 · 0 评论