免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6651 | 回复: 18
打印 上一主题 下一主题

我很晕,超大目录文件怎么删比较快? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-02 17:18 |只看该作者 |倒序浏览
  1. $ls -dl /tmp/
  2. drwxrwxrwt  19 root root 127893568 Jul  2 17:08 /tmp/
复制代码
光目录文件的大小就有127MB了,现在
  1. $find /tmp -exec rm -f '{}' \; &
  2. $while : ; do ls -ldk /tmp.bk/ |awk '{print $5}'; sleep 10; done
复制代码
每10秒才能干掉不到10K,我得删到哪年啊……

/tmp/这个目录居然有19个硬连接,如果用rm -d 然后再建个新的/tmp/,那好像也解决不了问题……

[ 本帖最后由 weichongli 于 2007-7-2 17:22 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-07-02 17:30 |只看该作者
原帖由 weichongli 于 2007-7-2 17:18 发表于 1楼  
$ls -dl /tmp/
drwxrwxrwt  19 root root 127893568 Jul  2 17:08 /tmp/光目录文件的大小就有127MB了,现在$find /tmp -exec rm -f '{}' \; &
$while : ; do ls -ldk /tmp.bk/ |awk '{print $5}'; sleep  ...


find -type f -exec rm 方式不好,效率太差...

若你的 find 支援 -delete 的話,使用該參數效率最好。要不然就是你可慮直接用:

  1. find /tmp -type f | xargs rm -f
复制代码


這樣效率也比 -exec rm 方式好更多。

或者是你直接使用 rm -rf /tmp,完成後建立該目錄並設定好權限即可...

  1. rm -rf /tmp && mkdir /tmp && chmod 1777 /tmp
复制代码


--

论坛徽章:
0
3 [报告]
发表于 2007-07-02 17:43 |只看该作者
2楼的大哥你好,

  1. find /tmp -type f | xargs rm -f,
复制代码

我的“目录文件”已经上百兆了,而不是整个目录才上百兆,里面会有多少个文件呢?显然xarg展开后会超过命令行的最大长度而无法达到目的。



  1. rm -rf /tmp && mkdir /tmp && chmod 1777 /tmp
复制代码


这个/tmp/目录一共有19个硬链接,不是删完重建一个就能解决的吧?最少我得把所有跟这个目录做硬链接的目录文件找出来重新ln一次才行吧?(但是这台机器现在在所有目录下 跑一次find需要的时间实在很难忍受)

刚才man了一下,很遗憾的是,这个find版本不支持delete命令

还有好主意没?

论坛徽章:
0
4 [报告]
发表于 2007-07-02 19:14 |只看该作者
格式化硬盘,
速度还是比较快的............

论坛徽章:
0
5 [报告]
发表于 2007-07-02 23:06 |只看该作者
问题的根源是你磁盘分区方法错误。

论坛徽章:
0
6 [报告]
发表于 2007-07-02 23:51 |只看该作者
换个角度考虑可否?
1、将其他小文件移动走
2、格式化分区
3、再移动回来

论坛徽章:
0
7 [报告]
发表于 2007-07-03 00:24 |只看该作者
我以前也遇到过类似的问题,就是 /var/spool/mail/oracle 下的邮件太多了,有20多万个。

解决的方法如下 :

1)、把 /tmp 下有用的文件拷贝到别的地方

2)、记录下  /tmp 的权限和 owner 等信息

3)、如果允许重启则进入 single 模式,否则就进入第4。主要是怕 /tmp 下有一些文件被进程使用

4)、rm -fr /tmp ,不要用 /tmp/ 。这样可以避免 shell 扩展后命令行超长的问题 、

5)、删除完成后按步骤2重建 /tmp 目录

[ 本帖最后由 ailms 于 2007-7-3 00:29 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2007-07-03 01:25 |只看该作者
原帖由 weichongli 于 2007-7-2 17:43 发表于 3楼  
2楼的大哥你好,

find /tmp -type f | xargs rm -f,

我的“目录文件”已经上百兆了,而不是整个目录才上百兆,里面会有多少个文件呢?显然xarg展开后会超过命令行的最大长度而无法达到目的。


檔案很多與檔名很長,那根本是兩回事吧 ? 所以您是否使用 find + xargs 產生錯誤訊息,這才另我我感到好奇。

再者 xargs 並不是一次把所有東西放進去,依據程式碼設計來看會批次傳入適當的檔名。甚至其實你也可以用 xargs -n 100 這樣傳入每次帶入的檔名數量就可以了。

還有有一堆 hard link 與你討論的問題沒啥關係,我不懂為何你要把這個東西拿出來談。

若你真的認為很麻煩,直接砍掉 /tmp 就好,重新建立之即可用。

--

论坛徽章:
0
9 [报告]
发表于 2007-07-03 01:26 |只看该作者
原帖由 ailms 于 2007-7-3 00:24 发表于 7楼  
我以前也遇到过类似的问题,就是 /var/spool/mail/oracle 下的邮件太多了,有20多万个。
...
rm -fr /tmp ,不要用 /tmp/ 。這樣可以避免 shell 擴展後命令行超長的問題 、
...


rm -rm /tmp 沒有所謂展開太長的問題,因為 rm 只有收到 /tmp 目錄,實際上沒有任何展開的敘述。

--

论坛徽章:
0
10 [报告]
发表于 2007-07-03 01:52 |只看该作者
原帖由 kenduest 于 2007-7-3 01:26 发表于 9楼  


rm -rm /tmp 沒有所謂展開太長的問題,因為 rm 只有收到 /tmp 目錄,實際上沒有任何展開的敘述。

--


晕,写错了。是不要用 /tmp/*
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP