文件数量过多的文件夹怎么查看其中文件

文件数量过多的文件夹怎么查看其中文件,第1张

问题补充:
要是等15T都存满了,几十万个文件能搜索出来吗?等搜到是不是会天亮了呢
问题解答:
服务器版的一般会打开文件索引,这样的话就会OK了,具体方法可以baidu。

Ubuntu 查看文件以及磁盘空间大小管理
(1)查看文件大小
查看当前文件夹下所有文件大小(包括子文件夹)
du -sh
# du -h
15M /package
16K /fontconfig
40K /cache
51M /rpmdb
20M
查看指定文件夹下所有文件大小(包括子文件夹)
# du -h ftp
38G ftp/sanya/doc
38G ftp/sanya
40K ftp/testftp/doc
14M ftp/testftp
875M ftp/platform/doc/002-录像
27M ftp/platform/doc/001-PDF
52M ftp/platform/doc/BBFlash
12G ftp/platform/doc/003-录音
21G ftp/platform/doc
21G ftp/platform
40K ftp/pmo/doc
20K ftp/pmo
36M ftp/uf/doc/innovate-201207
36M ftp/uf/doc
36M ftp/uf
446M ftp/code/doc
446M ftp/code
63G ftp
查看指定文件大小
# du -h /package/compat-libstdc++-33-323-69el6x86_64rpm
184K /package/compat-libstdc++-33-323-69el6x86_64rpm
查看指定文件夹大小
# du -hs ftp
63G ftp
用法:du [选项] [文件]
或:du [选项] --files0-from=F
计算每个文件的磁盘用量,目录则取总用量。
长选项必须使用的参数对于短选项时也是必需使用的。
-a, --all 输出所有文件的磁盘用量,不仅仅是目录
--apparent-size 显示表面用量,而并非是磁盘用量;虽然表面用量通常会
小一些,但有时它会因为稀疏文件间的"洞"、内部碎
片、非直接引用的块等原因而变大。
-B, --block-size=大小 使用指定字节数的块
-b, --bytes 等于--apparent-size --block-size=1
-c, --total 显示总计信息
-D, --dereference-args 解除命令行中列出的符号连接
--files0-from=F 计算文件F 中以NUL 结尾的文件名对应占用的磁盘空间
如果F 的值是"-",则从标准输入读入文件名
-H 等于--dereference-args (-D)
-h, --human-readable 以可读性较好的方式显示尺寸(例如:1K 234M 2G)
--si 类似-h,但在计算时使用1000 为基底而非1024
-k 等于--block-size=1K
-l, --count-links 如果是硬连接,就多次计算其尺寸
-m 等于--block-size=1M
-L, --dereference 找出任何符号链接指示的真正目的地
-P, --no-dereference 不跟随任何符号链接(默认)
-0, --null 将每个空行视作0 字节而非换行符
-S, --separate-dirs 不包括子目录的占用量
-s, --summarize 只分别计算命令列中每个参数所占的总用量
-x, --one-file-system 跳过处于不同文件系统之上的目录
-X, --exclude-from=文件 排除与指定文件中描述的模式相符的文件
--exclude=PATTERN 排除与PATTERN 中描述的模式相符的文件
--max-depth=N 显示目录总计(与--all 一起使用计算文件)
当N 为指定数值时计算深度为N;
--max-depth=0 等于--summarize
--time 显示目录或该目录子目录下所有文件的最后修改时间
--time=WORD 显示WORD 时间,而非修改时间:
atime,access,use,ctime 或status
--time-style=样式 按照指定样式显示时间(样式解释规则同"date"命令):
full-iso,long-iso,iso,+FORMAT
--help 显示此帮助信息并退出
--version 显示版本信息并退出
[大小]可以是以下的单位(单位前可加上整数):
kB 1000,K 1024,MB 1000000,M 1048576,还有 G、T、P、E、Z、Y。
请向报告du 的错误
GNU coreutils 项目主页:<>

有点不明白你这个文件是放在哪里?是本地、服务器、还是数据库?

1、如果是本地,可以通过获取文件的生成时间来得到一定时间内的文件数,代码如下:

      DirectoryInfo root = new DirectoryInfo(filepath); //filepath 需检索的文件夹路径
      DirectoryInfo[] dics = rootGetDirectories();
      FileInfo[] files = rootGetFiles();
      var count = 0;//符合条件的文件数
      for (int i = 0; i < filesLength; i++)
      {
        if (files[i]CreationTimeToString("yyyy-MM-dd") == DateTimeNowToString("yyyy-MM-dd"))//这里是判断文件生成日期等于当前日期的,你修改成一个小时内即可
        {
          count++;
        }
      }

2、如果文件是在服务器,那么在服务器上部署一个web程序,web程序的获取代码如上面一样,再通过访问web来得到结果;当然也可以通过ftp来获取ftp目录下的文件生成时间来判断;

3、如果是数据库,这种方式最简单了,直接通过sql语句获取即可

看看是不是你的虚拟内存设置的不合适,如果是请重新设置,在看看磁盘空间是不是太小了,如果是将磁盘空间扩大些,如果还是不行,查杀一下木马,修复一下系统。1)设置虚拟内存方法:右击我的电脑/属性/高级/性能中的设置/高级/虚拟内存中的更改/选自定义大小,在初始大小和最大值,同时设为你的物理内存的两倍。 如果你的内存是1G,就将初始大小和最大值同时设为设为2048MB。设置后需按“设置”按钮,然后再按确定和应用,重新启动电脑设置生效(设置虚拟内存大小没有一个固定的数,大小可以调节。比如:你的物理内存小,虚拟内存可以设的大些“三倍”,物理内存大2G,虚拟内存可以设小点“一倍”,或者还可以不设置虚全部

1lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more
在系统访问高峰时间以root用户执行上面的脚本,可能出现的结果如下:
1# lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more
2 131 24204
3 57 24244
4 57 24231
5 56 24264
其中第一行是打开的文件句柄数量,第二行是进程号。得到进程号后,我们可以通过ps命令得到进程的详细内容。
1ps -aef|grep 24204
2mysql 24204 24162 99 16:15 00:24:25 /usr/sbin/mysqld
哦,原来是mysql进程打开最多文件句柄数量。但是他目前只打开了131个文件句柄数量,远远底于系统默认值1024。
但是如果系统并发特别大,尤其是squid服务器,很有可能会超过1024。这时候就必须要调整系统参数,以适应应用变化。Linux有硬性限制和软性限制。可以通过ulimit来设定这两个参数。方法如下,以root用户运行以下命令:
1ulimit -HSn 4096

上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响
应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,,可以修改 /etc/profile
把上面命令加到最后。(findsun提出的办法比较合理)
/////////////////////////////////////////////////////////////////////////////
在 Linux下面部署应用的时候,有时候会遇上Socket/File: Can't open so many
files的问题,其实Linux是有文件句柄限制的(就像WinXP?),而且默认不是很高,一般都是1024,作为一台生产服务器,其实很容易就达到
这个数量,因此我们需要把这个值改大一些。
大概知道ulimit这个命令是相关的,上Google搜索了一下,大多数说的很含糊,也没有统一说一下,经过两个小时看了不少文章终于弄清楚ulimit相关的一些配置问题。
我们可以用ulimit -a来查看所有限制值,我只关心文件句柄数量的问题
open files (-n) 1024
这个就是限制数量
这里,有很多ulimit的文章都说的很含糊,究竟这个1024是系统的限制,还是用户的限制呢。其实,这个是用户限制来的,完整的说法,应该是当前用户准备要运行的程序的限制。
1、这个限制是针对单个程序的限制
2、这个限制不会改变之前已经运行了的程序的限制
3、对这个值的修改,退出了当前的shell就会消失
比如说,我先运行了一个程序A,然后通过ulimit修改了限制为2048,然后运行B,然后退出了shell再登录,然后运行C。那就只有B可以打开2048个句柄。
如果我们需要改变整体的限制值,或者我们运行的程序是系统启动的,应该怎么处理呢
其中一个方法,是想ulimit修改命令放入/etc/profile里面,但是这个做法并不好
正确的做法,应该是修改/etc/security/limitsconf
里面有很详细的注释,比如
soft nofile 2048
hard nofile 32768
就可以将文件句柄限制统一改成软2048,硬32768
这里涉及另外一个问题,什么是软限制,什么是硬限制
硬限制是实际的限制,而软限制,是warnning限制,只会做出warning
其实ulimit命令本身就有分软硬设置,加-H就是硬,加-S就是软
默认显示的是软限制,如果修改的时候没有加上的话,就是两个一起改
配置文件最前面的一位是domain,设置为星号代表全局,另外你也可以针对不同的用户做出不同的限制
修改了,重新登录用ulimit一开就立刻生效了,不过之前启动过的程序要重新启动才能使用新的值。我用的是CentOS,似乎有些系统需要重启才能生效。
ulimit其实就是对单一程序的限制
那系统总限制呢
其实是在这里,/proc/sys/fs/file-max
可以通过cat查看目前的值,echo来立刻修改
另外还有一个,/proc/sys/fs/file-nr
只读,可以看到整个系统目前使用的文件句柄数量
查找文件句柄问题的时候,还有一个很实用的程序lsof
可以很方便看到某个进程开了那些句柄
也可以看到某个文件/目录被什么进程占用了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13254333.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-27
下一篇 2023-06-27

发表评论

登录后才能评论

评论列表(0条)

保存