谁能给我一个Linux系统中du命令的详细分析?(包括源代码的分析)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谁能给我一个Linux系统中du命令的详细分析?(包括源代码的分析)相关的知识,希望对你有一定的参考价值。
Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍Linux du命令。du:查询档案或目录的磁盘使用空间
a:显示全部目录和其次目录下的每个档案所占的磁盘空间
b:大小用bytes来表示 (默认值为k bytes)
c:最后再加上总计 (默认值)
s:只显示各档案大小的总合
x:只计算同属同一个档案系统的档案
L:计算所有的档案大小
常用命令:du –a
操作详解
引用
指令 du 能以指定的目录下的子目录为单位,显示每个目录内所有档案所占用的磁盘空间大小。例如:
# du -h /etc
104K /etc/defaults
6.0K /etc/X11
8.0K /etc/bluetooth
4.0K /etc/gnats
52K /etc/isdn
388K /etc/mail
68K /etc/mtree
2.0K /etc/ntp
38K /etc/pam.d
44K /etc/periodic/daily
6.0K /etc/periodic/monthly
42K /etc/periodic/security
16K /etc/periodic/weekly
110K /etc/periodic
6.0K /etc/ppp
318K /etc/rc.d
2.0K /etc/skel
130K /etc/ssh
10K /etc/ssl
1.7M /etc
我们目样使用 -h 参数来显示 human-readable 的格式。在应用时,我们可以使用 du 这个指令来查看哪个目录占用最多的空间。不过,du 的输出结果通常很长,我们可以加上 -s 参数来省略指定目录下的子目录,而只显示该目录的总合即可:
# du -sh /etc
1.7M /etc
在查看目录的使用情形时,我们可以将输出结果导到 sort 指令进行排序,以了解哪个档案用了最多的空间:
# du /etc | sort -nr | more
1746 /etc
388 /etc/mail
318 /etc/rc.d
130 /etc/ssh
110 /etc/periodic
104 /etc/defaults
68 /etc/mtree
52 /etc/isdn
44 /etc/periodic/daily
42 /etc/periodic/security
38 /etc/pam.d
16 /etc/periodic/weekly
10 /etc/ssl
8 /etc/bluetooth
6 /etc/ppp
6 /etc/periodic/monthly
6 /etc/X11
4 /etc/gnats
2 /etc/skel
2 /etc/ntp
sort 的参数 -nr 表示要以数字排序法进行反向排序,因为我们要对目录大小做排序,所以不可以使用 human-readable 的大小输出,不然目录大小中会有 K、M 等字样,会造成排序不正确。
现在明了了Linux du命令和Linux df命令的不同之处了吗 参考技术A 这些命令其实都是一些程序,ls、tc这些跟编译普通程序是一样的过程;
这些命令的源文件不在内核中,是在做文件系统的时候定制的;
比如你想添加一个cat命令,那么你只需要找到cat的源码,编译完后,放入你制作的文件系统的/usr/bin目录下面,那么在启动后就可以使用cat了;
参考技术B man du
谁能给我一个在 WIX 中修改 windows 环境系统变量的例子吗?
【中文标题】谁能给我一个在 WIX 中修改 windows 环境系统变量的例子吗?【英文标题】:Can anyone give me a example of modifying windows environment system variables in WIX? 【发布时间】:2010-12-28 05:51:36 【问题描述】:看完WIX教程后,我仍然不知道如何将installdir添加到Windows系统变量的PATH中。
我尝试使用
Environment Id='UpdatePath' Action='create' Name='PATH' System='yes' Value='[INSTALLDIR]'
但我安装程序后路径没有变化。我几乎无法在任何地方找到 WIX 的示例代码。 请帮助我,非常感谢!
【问题讨论】:
【参考方案1】:你应该可以使用:
<Environment Id="PATH" Name="PATH" Value="[INSTALLDIR]" Permanent="yes" Part="last" Action="set" System="yes" />
这应该在环境路径中添加一个新条目,设置为[INSTALLDIR].
【讨论】:
设置Permanent="no"
将在卸载时删除附加的部分(但不是整个值)。
注意 INSTALLDIR 不是一个神奇的词——它需要匹配一个目录的 id,可以是你喜欢的任何东西(甚至不需要大写字母,尽管它们在 wix 中有特殊含义!)
这对我不起作用。当我回显我的 %PATH% 变量时,它没有改变。任何人都可以发布更多的上下文吗?根据@Deqing 在下面的回答,我在 DirectoryRef 中找到了它,但我仍然没有运气。
Wix Official Documentation Basic 和 Wix Official Documentation Detailed 用于Environment
标签。
@KevinSmyth:如果我们设置Permanent="no"
,如果在用户点击卸载时将来自其他安装的更多值附加到路径环境变量会发生什么?是否仍然从路径环境变量中删除了正确的值?【参考方案2】:
另外需要注意的是,Environment
需要放在一个有目录的组件中,例如
<DirectoryRef Id="TARGETDIR">
<Component Id="Path" Guid="xxx-xxx-xxx-xxx">
<Environment Id="PATH" Name="PATH" Value="[INSTALLDIR]" Permanent="no" Part="last" Action="set" System="no" />
</Component>
</DirectoryRef>
Environment Element 中描述的 Wix 元素的详细信息
【讨论】:
其实只需要在一个fragment然后是component,不需要directoryref 我正在尝试使用此答案设置环境变量但没有成功:我找不到DirectoryRef
的正确位置。我还尝试在没有DirectoryRef
父母的情况下放置Component
。有人可以建议我应该将Environment
标签放在我的 wxs 文件中的哪个位置:gist.github.com/pyeremenko/891eceb779197e4be240
我最终将Component
(没有DirectoryRef
)放在了根级别Directory
(即<Directory Id="TARGETDIR" Name="SourceDir">
)的正下方,它对我来说效果很好。【参考方案3】:
有同样的问题,这对我有用:
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="DataBaseds_Service_Installer" />
</Directory>
</Directory>
<ComponentGroup Id="Components" Directory="INSTALLFOLDER">
...some components
</ComponentGroup>
<DirectoryRef Id="TARGETDIR">
<Component Id="MYSQL_PASSWORD" Guid="..."
<Environment Id=HERE YOU CAN ADD THIS :)/>
</Component>
</DirectoryRef>
【讨论】:
我知道已经晚了,但也许有人会用它。以上是关于谁能给我一个Linux系统中du命令的详细分析?(包括源代码的分析)的主要内容,如果未能解决你的问题,请参考以下文章
谁能给我一个详细的Java通过Apache POI导出Excel方法,最好能给完整代码
谁能给我一个关于Android中LineLayout的详细讲解?
LINUX 中 的 mount 和 link 分别是啥作用呀?谁能给详细解释解释区别呀?