du --max-depth=1将给出您登录的用户的使用情况。但我们有一个由多个团队共享的开发盒,因此很难找到罪魁祸首。
如果我是 root,我可以做到这一点,但我不是 root 用户,并且不想一直要求系统管理员找到使用最多的用户。
请对此有任何想法。
我正在使用DU函数将目录大小输出到文件,然后将其移动到 excel 文件以添加总数。是否可以仅以 MB 为单位输出目录的大小(即使大小以 KB 或 GB 为单位):
例如,如果文件大小为 50kb,则输出将显示 0.048MB
但是我知道,du -h如果大小大于 1024,我无法保持以 MB 为单位的大小,因为它切换到 1G。该du -m但是不显示M(兆字节)旁边的值,因此是不是真的人的友好。
提前致谢,J
有没有办法格式化(在shell命令链中)以下输出 du -s -k *
287720 crm-cc
21500 crm-mvh
40360 elasticsearch-5.1.2
293292 electron-quick-start
44636 hexagon
193572 jpk
132 knights
209860 pink-panther
1722104 popc
4 server-config.txt
45392 sigb-backend
47468 test
58904 um-report
164156 zeus
Run Code Online (Sandbox Code Playgroud)
通过以下方式:
1,763,434,496 popc
300,331,008 electron-quick-start
294,625,280 crm-cc
214,896,640 pink-panther
198,217,728 jpk
168,095,744 zeus
60,317,696 um-report
48,607,232 test
46,481,408 sigb-backend
45,707,264 hexagon
41,328,640 elasticsearch-5.1.2
22,016,000 crm-mvh
135,168 knights
4,096 server-config.txt
Run Code Online (Sandbox Code Playgroud)
我的意思是:
我已经在 PHP 中实现了这个,但我希望有一个更通用的解决方案(不是每个基于 linux 的操作系统都安装了 PHP 解释器)。
如果相关,我zsh大部分时间都在使用,因此解决方案可以仅限于此外壳。
如果我在sudo du -sh <some_directory>/*需要 root 访问权限的目录上运行,它会工作并列出 . 然而,我发现至少有一种情况不会发生这种情况:
sudo du -sh /var/lib/docker/*
http://tldp.org/LDP/abs/html/globbingref.html没有提到任何预计这不起作用的场景。有谁知道为什么这可能行不通?它与 Docker 有关还是du与 globbing 完全有关。
我尝试使用 golang 了解目录的磁盘使用情况,但下面的应用程序计算不正确。我不想用filepath.Walk。我尝试过os.Stat(),但没有获得实际的目录大小。我在下面分享了相关的代码语句,正确的目录信息和app的结果。
const (
B = 1
KB = 1024 * B
MB = 1024 * KB
GB = 1024 * MB
)
type DiskStatus struct {
All uint64
Free uint64
Used uint64
}
func DiskUsage(path string) (ds DiskStatus) {
fs := syscall.Statfs_t{}
err := syscall.Statfs(path, &fs)
if err != nil {
return
}
ds.All = fs.Blocks * uint64(fs.Bsize)
ds.Free = fs.Bfree * uint64(fs.Bsize)
ds.Used = ds.All - ds.Free
fmt.Println(path, ds.Used)
return ds
}
func …Run Code Online (Sandbox Code Playgroud) 在不显示所有子目录的情况下,我无法获得任何命令来列出目录中所有文件和文件夹及其总大小。例如我有一个目录
ls /home/kayan/data/
data-1 data-2 test.txt readme.txt
Run Code Online (Sandbox Code Playgroud)
这里 data-1 和 data-2 是两个文件夹,有很多子文件夹和文件。它们的实际大小是 123G 和 115G。
当我使用“du”命令时,它会列出所有子目录并花费太多时间。当我使用“ll”时,它没有显示包含子文件夹的文件夹的实际大小。我想要的是:
data-1 123G
data-2 115G
test.txt 12K
readme.txt 14K
Run Code Online (Sandbox Code Playgroud) 我有一个脚本,每晚运行一次,以将大量内容存储在服务器上的特定目录中。这是我用于该核心部分的功能:
def get_size(start_path = '.'):
total_size = 0
for dirpath, dirnames, filenames in os.walk(start_path):
for f in filenames:
try:
fp = os.path.join(dirpath, f)
total_size += os.path.getsize(fp)
print str(total_size)+" bytes / "+str(size(total_size))+" counted"+" <------------ current position: "+start_path+" : "+f
for location in locations_dict:
if locations_dict[location][1] != "":
print str(location)+": "+str(size(locations_dict[location][1]))
except OSError, e:
print e
return total_size
Run Code Online (Sandbox Code Playgroud)
由于某些原因,当我手动运行时,我得到一个不同的值
$ du -hc [path to dir]
Run Code Online (Sandbox Code Playgroud)
使用Python,我得到20551043874445字节(转换为20.5 TB)。随着du我得到28 TB(我现在重新运行没有-h得到以字节为单位的值)。
显然,Python函数缺少某些内容,但是我不确定是什么或如何。有任何想法吗?
ls | ruby -ne 'BEGIN{a= []}; a << File.size($_.chomp).to_i; END{puts a.sum}'
Run Code Online (Sandbox Code Playgroud)
上面的代码获取每个文件的文件大小,将其放入一个数组中,并打印总和。
返回的值与:
du -ach
Run Code Online (Sandbox Code Playgroud)
并且这两个值与通过以下方式显示的总计非常不同:
ls -al
Run Code Online (Sandbox Code Playgroud)
没有隐藏文件。
苹果系统