linux命令du解释和使用:用于估算和显示文件和目录在磁盘上使用的空间的命令

目录

一、命令du介绍

二、 基本语法

三、常用选项

四、命令示例

1. 显示当前目录及其子目录的总磁盘使用情况

2. 显示目录的详细磁盘使用情况

3. 显示目录的深度为 1 的磁盘使用情况

4.对文件列表中列出的文件进行磁盘使用情况分析

(1)生成文件名列表

(2)使用 --files0-from=F 选项,进行磁盘分析

五、补充解释


一、命令du介绍

        `du` 是 Linux 系统中用于估算和显示文件和目录在磁盘上使用的空间的命令。这个命令的名字来源于 "disk usage" 的缩写。

二、 基本语法

           du [选项]...    [文件或目录]...

 或者   du [选项]...    --files0-from=F        

        在linux系统中输入

du --help

        出现如下du的语法结构,如下图所示:

三、常用选项

        du命令包括如下常用选项:

* `-a` 或 `--all`:显示目录中个别文件的大小。

* `-b` 或 `--bytes`:显示目录或文件大小时,以 byte 为单位。

* `-c` 或 `--total`:除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。

* `-k` 或 `--kilobytes`:以 KB(1024bytes)为单位输出。

* `-m` 或 `--megabytes`:以 MB 为单位输出。

* `-s` 或 `--summarize`:仅显示总计,只列出最后加总的值。

* `-h` 或 `--human-readable`:以 K,M,G 为单位,提高信息的可读性。

* `--max-depth=N`:显示目录的深度最大为 N。

四、命令示例

1. 显示当前目录及其子目录的总磁盘使用情况

du -sh

        这里的 `-s` 表示汇总输出,`-h` 表示以人类可读的格式(如 K、M、G)显示。

[root@ecs-52a1 mysql]#
[root@ecs-52a1 mysql]# du -sh
5.6G    .
[root@ecs-52a1 mysql]#

2. 显示目录的详细磁盘使用情况

du -ah 

        这会列出当前目录下所有文件和子目录的磁盘使用情况。

        实际操作如下:

[root@ecs-52a1 mysql]# cd lib/
[root@ecs-52a1 lib]# du -ah
4.0K    ./mecab/etc/mecabrc
8.0K    ./mecab/etc
3.4M    ./mecab/dic/ipadic_euc-jp/matrix.bin
260K    ./mecab/dic/ipadic_euc-jp/char.bin
8.0K    ./mecab/dic/ipadic_euc-jp/unk.dic
56K     ./mecab/dic/ipadic_euc-jp/right-id.def
8.0K    ./mecab/dic/ipadic_euc-jp/rewrite.def
4.0K    ./mecab/dic/ipadic_euc-jp/pos-id.def
4.0K    ./mecab/dic/ipadic_euc-jp/dicrc
37M     ./mecab/dic/ipadic_euc-jp/sys.dic
56K     ./mecab/dic/ipadic_euc-jp/left-id.def
40M     ./mecab/dic/ipadic_euc-jp
3.4M    ./mecab/dic/ipadic_utf-8/matrix.bin
260K    ./mecab/dic/ipadic_utf-8/char.bin
8.0K    ./mecab/dic/ipadic_utf-8/unk.dic
56K     ./mecab/dic/ipadic_utf-8/right-id.def
8.0K    ./mecab/dic/ipadic_utf-8/rewrite.def
4.0K    ./mecab/dic/ipadic_utf-8/pos-id.def
4.0K    ./mecab/dic/ipadic_utf-8/dicrc
47M     ./mecab/dic/ipadic_utf-8/sys.dic
56K     ./mecab/dic/ipadic_utf-8/left-id.def
51M     ./mecab/dic/ipadic_utf-8
3.4M    ./mecab/dic/ipadic_sjis/matrix.bin
260K    ./mecab/dic/ipadic_sjis/char.bin
8.0K    ./mecab/dic/ipadic_sjis/unk.dic
56K     ./mecab/dic/ipadic_sjis/right-id.def
8.0K    ./mecab/dic/ipadic_sjis/rewrite.def
4.0K    ./mecab/dic/ipadic_sjis/pos-id.def
4.0K    ./mecab/dic/ipadic_sjis/dicrc
36M     ./mecab/dic/ipadic_sjis/sys.dic
56K     ./mecab/dic/ipadic_sjis/left-id.def
40M     ./mecab/dic/ipadic_sjis
130M    ./mecab/dic
130M    ./mecab
384M    ./libmysqld-debug.a
9.0M    ./libmysqlclient.so.20.3.12
44K     ./libmysqlservices.a
557M    ./libmysqld.a
20M     ./libmysqlclient.a
0       ./libmysqlclient.so
0       ./libmysqlclient.so.20
4.0K    ./pkgconfig/mysqlclient.pc
8.0K    ./pkgconfig
340K    ./plugin/ha_example.so
52K     ./plugin/mypluglib.so
900K    ./plugin/keyring_file.so
48K     ./plugin/test_security_context.so
604K    ./plugin/libmemcached.so
152K    ./plugin/semisync_slave.so
40K     ./plugin/mysql_no_login.so
100K    ./plugin/libtest_sql_2_sessions.so
48K     ./plugin/rewrite_example.so
44K     ./plugin/test_udf_services.so
288K    ./plugin/keyring_udf.so
360K    ./plugin/authentication_ldap_sasl_client.so
124K    ./plugin/libtest_sql_replication.so
696K    ./plugin/semisync_master.so
104K    ./plugin/libtest_sql_errors.so
104K    ./plugin/libtest_sql_all_col_types.so
52K     ./plugin/libtest_services.so
100K    ./plugin/libtest_sql_lock.so
128K    ./plugin/libtest_sql_stored_procedures_functions.so
16M     ./plugin/group_replication.so
22M     ./plugin/mysqlx.so
348K    ./plugin/version_token.so
7.6M    ./plugin/libpluginmecab.so
96K     ./plugin/libtest_sql_shutdown.so
104K    ./plugin/libtest_sql_commit.so
656K    ./plugin/connection_control.so
92K     ./plugin/libtest_sql_processlist.so
60K     ./plugin/libtest_services_threaded.so
128K    ./plugin/libtest_sql_views_triggers.so
608K    ./plugin/rewriter.so
48K     ./plugin/libtest_framework.so
76K     ./plugin/libtest_x_sessions_init.so
200K    ./plugin/validate_password.so
40K     ./plugin/auth_socket.so
60K     ./plugin/libtest_session_in_thd.so
356K    ./plugin/debug/ha_example.so
48K     ./plugin/debug/mypluglib.so
804K    ./plugin/debug/keyring_file.so
68K     ./plugin/debug/test_security_context.so
460K    ./plugin/debug/libmemcached.so
196K    ./plugin/debug/semisync_slave.so
40K     ./plugin/debug/mysql_no_login.so
116K    ./plugin/debug/libtest_sql_2_sessions.so
68K     ./plugin/debug/rewrite_example.so
64K     ./plugin/debug/test_udf_services.so
296K    ./plugin/debug/keyring_udf.so
124K    ./plugin/debug/authentication_ldap_sasl_client.so
120K    ./plugin/debug/libtest_sql_replication.so
816K    ./plugin/debug/semisync_master.so
120K    ./plugin/debug/libtest_sql_errors.so
120K    ./plugin/debug/libtest_sql_all_col_types.so
72K     ./plugin/debug/libtest_services.so
120K    ./plugin/debug/libtest_sql_lock.so
124K    ./plugin/debug/libtest_sql_stored_procedures_functions.so
13M     ./plugin/debug/group_replication.so
17M     ./plugin/debug/mysqlx.so
308K    ./plugin/debug/version_token.so
7.6M    ./plugin/debug/libpluginmecab.so
112K    ./plugin/debug/libtest_sql_shutdown.so
120K    ./plugin/debug/libtest_sql_commit.so
744K    ./plugin/debug/connection_control.so
112K    ./plugin/debug/libtest_sql_processlist.so
76K     ./plugin/debug/libtest_services_threaded.so
124K    ./plugin/debug/libtest_sql_views_triggers.so
448K    ./plugin/debug/rewriter.so
68K     ./plugin/debug/libtest_framework.so
92K     ./plugin/debug/libtest_x_sessions_init.so
180K    ./plugin/debug/validate_password.so
40K     ./plugin/debug/auth_socket.so
76K     ./plugin/debug/libtest_session_in_thd.so
76K     ./plugin/debug/libtest_x_sessions_deinit.so
124K    ./plugin/debug/libtest_sql_cmds_1.so
128K    ./plugin/debug/libtest_sql_sqlmode.so
572K    ./plugin/debug/innodb_engine.so
108K    ./plugin/debug/libtest_session_detach.so
128K    ./plugin/debug/libtest_session_info.so
40K     ./plugin/debug/locking_service.so
128K    ./plugin/debug/libtest_sql_complex.so
84K     ./plugin/debug/adt_null.so
45M     ./plugin/debug
60K     ./plugin/libtest_x_sessions_deinit.so
180K    ./plugin/libtest_sql_cmds_1.so
128K    ./plugin/libtest_sql_sqlmode.so
652K    ./plugin/innodb_engine.so
88K     ./plugin/libtest_session_detach.so
112K    ./plugin/libtest_session_info.so
20K     ./plugin/locking_service.so
132K    ./plugin/libtest_sql_complex.so
96K     ./plugin/adt_null.so
98M     ./plugin
1.2G    .
[root@ecs-52a1 lib]#

3. 显示目录的深度为 1 的磁盘使用情况

        du --max-depth=1 -ab  ./share/

        这会显示指定目录的直接子目录和文件的磁盘使用情况,但不会递归地进入更深层的子目录。

        实际操作如下所示:

[root@ecs-52a1 mysql]#
[root@ecs-52a1 mysql]# du --max-depth=1 -ab ./share/
182299  ./share/charsets
811     ./share/mysql_system_tables_data.sql
945542  ./share/fill_help_tables.sql
82642   ./share/norwegian-ny
89965   ./share/japanese
83237   ./share/polish
83278   ./share/danish
84173   ./share/spanish
82771   ./share/bulgarian
1812    ./share/install_rewriter.sql
83160   ./share/hungarian
82518   ./share/english
92431   ./share/ukrainian
82783   ./share/estonian
3999    ./share/innodb_memcached_config.sql
83372   ./share/swedish
85481   ./share/portuguese
89310   ./share/greek
8317    ./share/aclocal
84289   ./share/italian
529032  ./share/errmsg-utf8.txt
84231   ./share/romanian
834     ./share/uninstall_rewriter.sql
287110  ./share/mysql_sys_schema.sql
90240   ./share/german
97856   ./share/russian
154626  ./share/mysql_system_tables.sql
84298   ./share/dutch
25575   ./share/dictionary.txt
1760    ./share/mysql_security_commands.sql
85559   ./share/korean
83045   ./share/slovak
83278   ./share/czech
10410   ./share/mysql_test_data_timezone.sql
82589   ./share/norwegian
84900   ./share/serbian
83926   ./share/french
4205555 ./share/
[root@ecs-52a1 mysql]#

4.对文件列表中列出的文件进行磁盘使用情况分析

(1)生成文件名列表

        可以使用 find 命令结合 xargs  printf 来生成一个包含文件名列表的文件,文件名之间用 NUL 字符分隔。例如,从列出 /usr/local/mysql/bin 下所有的文件,并将这些文件名写入一个名为 du-filelist.txt 的文件中:

find /usr/local/mysql/bin/ -type f -print0 > /home/du-filelist.txt

        这里 -print0 选项告诉 find 命令使用 NUL 字符作为文件名之间的分隔符。

        实际操作如下所示:

[root@ecs-52a1 mysql]#
[root@ecs-52a1 mysql]#
[root@ecs-52a1 mysql]# find /usr/local/mysql/bin/ -type f -print0 > /home/du-filelist.txt
[root@ecs-52a1 mysql]#
[root@ecs-52a1 mysql]#
[root@ecs-52a1 mysql]# ll /home/du-filelist.txt
-rw-r--r-- 1 root root 1315 Mar 24 09:17 /home/du-filelist.txt
[root@ecs-52a1 mysql]#
[root@ecs-52a1 mysql]#
[root@ecs-52a1 mysql]# date
Sun Mar 24 09:17:45 CST 2024
[root@ecs-52a1 mysql]#

(2)使用 --files0-from=F 选项,进行磁盘分析

        使用 du 命令的 --files0-from=F 选项来读取这个文件,并计算这些文件的磁盘使用情况:

du --files0-from=/home/du-filelist.txt -ch

        实际操作如下所示:

[root@ecs-52a1 mysql]#
[root@ecs-52a1 mysql]# du --files0-from=/home/du-filelist.txt -ch
9.9M    /usr/local/mysql/bin/mysql_install_db
12M     /usr/local/mysql/bin/mysql_upgrade
197M    /usr/local/mysql/bin/mysqld-debug
5.3M    /usr/local/mysql/bin/resolveip
209M    /usr/local/mysql/bin/mysqltest_embedded
8.4M    /usr/local/mysql/bin/innochecksum
11M     /usr/local/mysql/bin/mysqlbinlog
28K     /usr/local/mysql/bin/mysqld_multi
7.9M    /usr/local/mysql/bin/mysql_config_editor
5.7M    /usr/local/mysql/bin/mysql_ssl_rsa_setup
209M    /usr/local/mysql/bin/mysql_embedded
5.4M    /usr/local/mysql/bin/mysql_plugin
5.1M    /usr/local/mysql/bin/replace
9.0M    /usr/local/mysql/bin/mysqlimport
7.5M    /usr/local/mysql/bin/myisampack
8.0K    /usr/local/mysql/bin/mysql_config
5.5M    /usr/local/mysql/bin/perror
5.4M    /usr/local/mysql/bin/resolve_stack_dump
232K    /usr/local/mysql/bin/lz4_decompress
4.9M    /usr/local/mysql/bin/mysql_tzinfo_to_sql
9.3M    /usr/local/mysql/bin/mysqlcheck
210M    /usr/local/mysql/bin/mysql_client_test_embedded
8.9M    /usr/local/mysql/bin/mysql_secure_installation
9.0M    /usr/local/mysql/bin/mysqlslap
112K    /usr/local/mysql/bin/zlib_decompress
7.2M    /usr/local/mysql/bin/myisamlog
5.3M    /usr/local/mysql/bin/my_print_defaults
243M    /usr/local/mysql/bin/mysqld
8.0K    /usr/local/mysql/bin/mysqldumpslow
9.2M    /usr/local/mysql/bin/mysqldump
24M     /usr/local/mysql/bin/mysqlxtest
10M     /usr/local/mysql/bin/mysql
9.0M    /usr/local/mysql/bin/mysqladmin
8.9M    /usr/local/mysql/bin/mysqlshow
7.8M    /usr/local/mysql/bin/myisamchk
28K     /usr/local/mysql/bin/mysqld_safe
17M     /usr/local/mysql/bin/mysqlpump
7.4M    /usr/local/mysql/bin/myisam_ftdump
1.3G    total
[root@ecs-52a1 mysql]#

五、补充解释

        `du` 命令扫描的是整个文件系统,因此它可能需要一些时间来运行,特别是在大型文件系统中。

        `du` 命令显示的是磁盘使用情况,而不是文件大小。对于某些类型的文件(如稀疏文件),这两者可能有很大的不同。

        `du` 命令是一个非常有用的工具,特别是我们在做运维的时候,可以帮助我们了解文件和目录在磁盘上的使用情况,从而进行更有效的磁盘管理。

篇幅有限,文章正下方可以看到我的联系方式。

鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-24 12:08:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-24 12:08:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-24 12:08:02       87 阅读
  4. Python语言-面向对象

    2024-03-24 12:08:02       96 阅读

热门阅读

  1. Web 中的 3D 游戏

    2024-03-24 12:08:02       37 阅读
  2. 云扩展要求(云租户)

    2024-03-24 12:08:02       39 阅读
  3. Redis 教程系列之Redis 配置(三)

    2024-03-24 12:08:02       42 阅读
  4. ubuntu安装可调试的ffmpeg

    2024-03-24 12:08:02       39 阅读
  5. vue3项目的创建

    2024-03-24 12:08:02       38 阅读
  6. Dr4g0n

    Dr4g0n

    2024-03-24 12:08:02      43 阅读
  7. Codeup_5973:问题 B: 【递归入门】组合的输出

    2024-03-24 12:08:02       48 阅读
  8. Spark 安装(集群模式)

    2024-03-24 12:08:02       43 阅读