V5R3,我确实可以访问 PASE 环境
磁盘空间报告显示用户目录占用了系统磁盘的 76%。不幸的是,在目录上加上“8”并不能给出递归大小估计。
是否有任何其他命令或 IBM 实用程序可以有效地获取此信息,以便我们可以发现哪个文件夹正在消耗磁盘空间?系统已经在爬行,我宁愿不要让它停下来尝试诊断它。
IBM 提到了以下 PASE 实用程序:
CALL QP2TERM
find /qibm/proddata -type f -size +20000 -exec ls -lH {} \; | awk '{ print
$9 ": " $5 }'
但它(到目前为止)只返回了大约 3-4 GB 的文件,这让我相信是成千上万的小文件导致系统紧张。
最坏的情况,我明天将使用 QSH CMD('ls -R / >> /QSYS.LIB/QGPL.LIB/QSHOUT.FILE/QSHOUT.MBR') 运行 SBMJOB,然后将其放在 QSYSNOMAX 中,优先级较低.
哇,我接触 AS/400 已经好几年了,而且我还没有类似 Unix 的命令。
您问题中的
find
命令仅搜索大文件而不是大目录(大量小文件)。而不是
find
命令,请尝试:如果可行,该列表的底部将是该层次结构下最大的目录。
您还可以尝试对
find
您列出的查看目录大小的命令进行变体:您可以尝试不同的尺寸作为您的阈值。您的空间可能被
/qibm/proddata
.不幸的是,我已经忘记了很多关于 AS/400 的知识。
首先,IBM关于该主题的知识库值得一读。
其次,这里有一个巨大的误解。在 IFS 文件夹上放置8以查看其属性时,“磁盘大小”属性是 IFS“文件夹”对象的大小,除了其任何内容。因此,我们怀疑的文件夹大小显示为 83 886 080 字节:80 兆字节。如果它是递归计算的,这还不错,但这只是文件夹对象本身!一旦明确了这一点,解决方案就很简单了;使用 DEL 命令清除有问题的目录,其中包含大约 75 GB 的对象。
一种推导 IFS 目录递归大小的方法是将2放在其父目录上,然后将6放在相关目录对象上;产生的数字将用于文件夹对象和包含的所有对象,包括子文件夹及其对象。
RTVDIRINF 和 PRTDIRINF 命令也可能有用,尽管在我的例子中我不需要它们。
我的同事对这些有几点说明:
这些命令为每次运行生成不同的文件——输出应该带有一些有意义的前缀;顶级目录或类似目录。PRTDIRINF 有一个 *DIR 选项,它列出了每个目录使用的空间。可能可以运行这样的查询以获得更快的概览:
SELECT sum(QEZALCSIZE), sum(QEZDTASIZE) FROM homeo
这将给出目录 /home 中的总大小。
这是一个更有用的示例,针对每个目录的结果运行。
SELECT sum(O.QEZALCSIZE), D.QEZDIRNAM1, D.QEZDIRIDX FROM homed d join homeo o on d.qezdiridx = o.qezdiridx GROUP BY d.qezdiridx, qezdirnam1 ORDER BY 1 desc, 3, 2
然后,您可以使用 UNION SELECT 将它们组合起来以掌握全局:
SELECT sum(QEZALCSIZE), QEZDIRNAM1, homeD.QEZDIRIDX FROM homed join homeo on homed.qezdiridx = homeo.qezdiridx GROUP BY homed.qezdiridx, qezdirnam1 UNION SELECT sum(QEZALCSIZE), QEZDIRNAM1, etcD.QEZDIRIDX FROM etcd join etco on etcd.qezdiridx = etco.qezdiridx GROUP BY tcd.qezdiridx, qezdirnam1 ORDER BY 1 desc, 3, 2
一个常见的罪魁祸首是这个目录:
/QIBM/UserData/OS400/MGTC/服务
如果此文件夹非常大,请按照IBM 的说明将其关闭(除非您有特定原因将其打开),然后按上述方式清除该目录。
最后,Midrange 邮件列表档案和相应的wiki在他们的领域也是极好的资源。SQL 示例和有关管理中心跟踪的说明均来自 Midrange 邮件列表上的交流。