免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: security1024
打印 上一主题 下一主题

[新手入门] 查找占用空间的文件 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-05-22 16:05 |只看该作者
原帖由 security1024 于 2007-5-22 15:54 发表
看完man fuser还是没明白这个结果如何能看到那31.5M被那些文件占用了,帮忙看看?谢谢
server1:/home>fuser -cux /home
/home:    22672c(root)   22880c(root)   31620c(user01)   32482c(user01)   33040c ...

那你用du -a /home|more看一下什么文件占了空间.然后再删除.

论坛徽章:
0
12 [报告]
发表于 2007-05-22 16:14 |只看该作者

回复 11楼 unixasdfg 的帖子

结果和“du -sk"查到的差不多,应该没有什么大的隐含文件。 为什么用“df -k看到文件系统为32M,使用率为99%,而"du -sk "就是查不到30M的空间被谁占用了?


server1:/home>du -a /home |more
1       /home/lost+found
1       /home/guest
1       /home/user02/.profile
19      /home/user02/bin/instsrv
25      /home/user02/bin/instsrv.c
45      /home/user02/bin
1       /home/user02/db/choices
4       /home/user02/db/class.sample
5       /home/user02/db/default.client
9       /home/user02/db/sample.client
20      /home/user02/db
3       /home/user02/scripts/clientdb
2       /home/user02/scripts/curdate
5       /home/user02/scripts/dbextract
2       /home/user02/scripts/defaults
21      /home/user02/scripts/getdb
3       /home/user02/scripts/netcat
3       /home/user02/scripts/sendfile
3       /home/user02/scripts/sendfssz
3       /home/user02/scripts/showchoices
46      /home/user02/scripts
113     /home/user02
1       /home/user01/.profile
6       /home/user01/.sh_history
80      /home/user01/ms03/channel.c
35      /home/user01/ms03/mqutils.c
15      /home/user01/ms03/namelist.c
22      /home/user01/ms03/process.c
36      /home/user01/ms03/qmgr.c
54      /home/user01/ms03/queue.c
112     /home/user01/ms03/saveqmgr.c
37      /home/user01/ms03/saveqmgr.h
2       /home/user01/ms03/makefile.aix
27      /home/user01/ms03/saveqmgr.o
8       /home/user01/ms03/namelist.o
27      /home/user01/ms03/channel.o
17      /home/user01/ms03/mqutils.o
11      /home/user01/ms03/process.o
17      /home/user01/ms03/qmgr.o
23      /home/user01/ms03/queue.o
128     /home/user01/ms03/saveqmgr
45      /home/user01/ms03/DMZ_QMGR.TST
32      /home/user01/ms03/SEN.TST
32      /home/user01/ms03/SEN_QMGR.TST
18      /home/user01/ms03/SEN2.TST
779     /home/user01/ms03
1       /home/user01/smit.log
0       /home/user01/smit.script
72      /home/user01/SEN2_20041109.tst
3       /home/user01/petDMZQMGR_20060628.tst
3       /home/user01/petSENQMGR_20060628.tst
866     /home/user01
982     /home

论坛徽章:
0
13 [报告]
发表于 2007-05-22 16:16 |只看该作者
原帖由 security1024 于 2007-5-22 15:54 发表
看完man fuser还是没明白这个结果如何能看到那31.5M被那些文件占用了,帮忙看看?谢谢
server1:/home>fuser -cux /home
/home:    22672c(root)   22880c(root)   31620c(user01)   32482c(user01)   33040c ...

那你用du -a /home|more查一下,看什么文件占了空间,然后再删除.

论坛徽章:
0
14 [报告]
发表于 2007-05-22 16:50 |只看该作者
原帖由 security1024 于 2007-5-22 15:21 发表
AIX版本是4.3,


4.3 太老了,我这也没法试。

前面fuser 显示的是正在使用该文件系统文件的进程号和用户名,如果你不在乎把这些进程杀掉的话就简单了:确认杀掉这些进程,再看看文件系统空间是否被释放了。

要具体找出哪个文件在占用空间就麻烦一点。
先试一下有没有kdb (as root)

# kdb

如果看到kdb提示符,试一下这个命令:

(0)> inode | grep CNOLINK

有没有返回?有没有报错?贴出来。

(0)> q
退出kdb.

论坛徽章:
0
15 [报告]
发表于 2007-05-22 16:57 |只看该作者

回复 14楼 thesix 的帖子

谢谢先!这些进程真的不可以停掉的(生产机),你是说有用户使用该文件系统的话,会占用该文件系统的空间吗?

下面是kdb输出:
server1:/home>kdb
Preserving 618261 bytes of symbol table
First symbol __mulh
KERNEXT FUNCTION NAME CACHE (90112 bytes) allocated
KERNEXT COMMANDS SPACE (4096 bytes) allocated
           START              END <name>
0000000000003500 0000000001427120 _system_configuration+000020
000000002FF3B400 000000002FF7E428 __ublock+000000
000000002FF22FF4 000000002FF22FF8 environ+000000
000000002FF22FF8 000000002FF22FFC errno+000000
00000000E0000000 00000000F0000000 lkwseg+10000000
PFT:
id....................0007
raddr.....0000000002000000 eaddr.....0000000002000000
size..............02000000 align.............02000000
valid..1 ros....0 holes..0 io.....0 seg....1 wimg...2

PVT:
id....................0008
raddr.....0000000000291000 eaddr.....0000000000291000
size..............00200000 align.............00001000
valid..1 ros....0 holes..0 io.....0 seg....1 wimg...2
(0)> inode | grep CNOLINK
Expected symbol, address or slot_number.
(0)> q
server1:/hom

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
16 [报告]
发表于 2007-05-22 19:51 |只看该作者
文件系统元数据

论坛徽章:
0
17 [报告]
发表于 2007-05-22 23:10 |只看该作者
(今天cu好像处问题了,发表几次都不成功。)

原帖由 security1024 于 2007-5-22 16:57 发表
谢谢先!这些进程真的不可以停掉的(生产机),你是说有用户使用该文件系统的话,会占用该文件系统的空间吗?


通常df 和du 不一致的原因有两条:
1. df 报告的使用量包括 filesystem metadata, 这部分是du 看不到的。

   如果df/du差别相对文件系统本身大小不大的话,不能排除这个原因。

2. 如果一个进程正在使用某个文件 (file reference count >0),而该文件又从目录中被“删除”了( file disk link count = 0),那么这个文件所占用的空间在df中会体现出来,因为它们还没被释放,但du找不到这个文件,从而不能报出它占用的空间。
根本的区别在于:df看的是文件系统总的空间分配量(不是读每个文件的大小),而du是一个文件(disk inode)一个文件地去读,然后累加。

只有当使用“已删除”文件的那个进程把文件关闭(比如进程本身退出)时,那个文件所持有的空间才会被释放到文件系统的可用空间中去,才能在df中体现出来。

下面是kdb输出:
(0)> inode | grep CNOLINK
Expected symbol, address or slot_number.
(0)> q


想起来了,4.3的kdb 不支持 "grep".
如果单独用 "inode" 呢?

(0)> inode

输出可能很长,想办法存到一个文件中去,再 'grep CNOLINK'.

这个不行还有其他办法,但我写这些真是够累的,很花时间啊。

论坛徽章:
0
18 [报告]
发表于 2007-05-23 10:36 |只看该作者

回复 17楼 thesix 的帖子

哈哈,辛苦辛苦,如果到上海我请你吃饭好了:)
按照你说的,有点理解了。把结果贴出来,请辛苦一下,帮忙看看
另外一个小问题: 那里可以找到相关的资料讲“kde“的?

                         DEV     NUMBER CNT    GNODE    IPMNT TYPE FLAGS
169903 inodes+3A54CE0 000A0007        129   1 16A54CF0 16F18E70 REG  CMNOLINK
176939 inodes+3CBF340 000A0008       2057   1 16CBF350 143985E8 REG  CMNOLINK
157917 inodes+3637590 000A0008       2064   1 166375A0 143985E8 REG  CMNOLINK
125544 inodes+2B1A108 000A0009       2095   1 15B1A118 16AC1B38 REG  CHG UPD CMNOLINK
157229 inodes+35FAE10 000A0009       2098   1 165FAE20 16AC1B38 REG  CHG UPD CMNOLINK
177562 inodes+3CF5F58 000A0006       4174   1 16CF5F68 1572A390 SOCK CMNOLINK
107856 inodes+2507748 000A0006       4190   1 15507758 1572A390 SOCK CMNOLINK
96574 inodes+437CEF8 000A0006       4191   1 1737CF08 1572A390 SOCK CMNOLINK
35051 inodes +C08940 000A0009      22553   1 13C08950 16AC1B38 REG  CMNOLINK
28714 inodes +9DB9D8 000A0009      22552   1 139DB9E8 16AC1B38 REG  CMNOLINK
123768 inodes+2A7DF88 000A0009      22555   1 15A7DF98 16AC1B38 REG  CMNOLINK
136442 inodes+2ED7E58 000A0009      22557   1 15ED7E68 16AC1B38 REG  CMNOLINK
130105 inodes+2CAAEF0 000A0009      22556   1 15CAAF00 16AC1B38 REG  CMNOLINK
149116 inodes+3331D28 000A0009      22559   1 16331D38 16AC1B38 REG  CMNOLINK
142779 inodes+3104DC0 000A0009      22558   1 16104DD0 16AC1B38 REG  CMNOLINK
167048 inodes+3959E08 000A0009       8201   1 16959E18 16AC1B38 REG  CMNOLINK
28720 inodes +9DC248 000A0009       8200   1 139DC258 16AC1B38 REG  CMNOLINK
41394 inodes +E36118 000A0009       8203   1 13E36128 16AC1B38 REG  CMNOLINK
5057 inodes +C091B0 000A0009       8202   1 13C091C0 16AC1B38 REG  CMNOLINK
187144 inodes+4040208 000A0009       8204   1 17040218 16AC1B38 REG  CMNOLINK
2288 inodes +0C9048 000A0009       8207   1 130C9058 16AC1B38 REG  CMNOLINK
198733 inodes+443AB10 000A0009       8206   1 1743AB20 16AC1B38 REG  CMNOLINK
141700 inodes+30A6068 000A0009       8197   1 160A6078 16AC1B38 REG  CMNOLINK
135363 inodes+2E79100 000A0009       8196   1 15E79110 16AC1B38 REG  CMNOLINK
148037 inodes+32D2FD0 000A0009       8198   1 162D2FE0 16AC1B38 REG  CMNOLINK
22384 inodes +7AF448 000A0009       8216   1 137AF458 16AC1B38 REG  CMNOLINK
41395 inodes +E36280 000A0009       8219   1 13E36290 16AC1B38 REG  CMNOLINK
35058 inodes +C09318 000A0009       8218   1 13C09328 16AC1B38 REG  CMNOLINK
199818 inodes+449A0D8 000A0009       8208   1 1749A0E8 16AC1B38 REG  CMNOLINK
21299 inodes +74FE80 000A0009       8210   1 1374FE90 16AC1B38 REG  CMNOLINK
16047 inodes +5824E0 000A0009       8215   1 135824F0 16AC1B38 REG  CMNOLINK

论坛徽章:
0
19 [报告]
发表于 2007-05-23 11:20 |只看该作者
原帖由 security1024 于 2007-5-23 10:36 发表

176939 inodes+3CBF340 000A0008       2057   1 16CBF350 143985E8 REG  CMNOLINK
157917 inodes+3637590 000A0008       2064   1 166375A0 143985E8 REG  CMNOLINK


/home 应该是 /dev/hd1 000A0008 (major number 10, minor number .

你可以看一下以上两个inode的大小:

(0)> inode inodes+3CBF340
(0)> inode inodes+3637590
在输出中找 "size"。

它们应该已经被“删除”了。
# find /home -xdev -inum 2057
# find /home -xdev -inum 2064
应该没有返回。

http://publibn.boulder.ibm.com/d ... ds/aixcmds3/kdb.htm
上面是5.1 kdb的文档。4.3.3文档不知道在哪还有。kdb的功能在每个AIX版本中都有扩充。

论坛徽章:
0
20 [报告]
发表于 2007-05-23 11:53 |只看该作者

回复 19楼 thesix 的帖子

非常感谢!
     我还是有三个小问题:):
1)如何确定/home 应该是 /dev/hd1 000A0008 ?而不是000A0006 或别的?
2)如果某个进程在使用一个文件,该文件可以被删除吗?
3)像现在的情况,是否只有等这些进程结束或被Kill后,空间才能释放出来?

下面是相关输出:
(0)> inode inodes+3CBF340
       size      000000000114FEEBgets      00000000

(0)> inode inodes+3637590
      size      0000000000C7FF38gets      00000000
下面的命令没有返回
# find /home -xdev -inum 2057
# find /home -xdev -inum 2064
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP