оценить использование файлового пространства (estimate file space usage)
Пролог (Prolog)
This manual page is part of the POSIX Programmer's Manual. The
Linux implementation of this interface may differ (consult the
corresponding Linux manual page for details of Linux behavior),
or the interface may not be implemented on Linux.
Имя (Name)
du — estimate file space usage
Синопсис (Synopsis)
du [
-a|-s] [
-kx] [
-H|-L] [
file...]
Описание (Description)
By default, the du utility shall write to standard output the
size of the file space allocated to, and the size of the file
space allocated to each subdirectory of, the file hierarchy
rooted in each of the specified files. By default, when a
symbolic link is encountered on the command line or in the file
hierarchy, du shall count the size of the symbolic link (rather
than the file referenced by the link), and shall not follow the
link to another portion of the file hierarchy. The size of the
file space allocated to a file of type directory shall be defined
as the sum total of space allocated to all files in the file
hierarchy rooted in the directory plus the space allocated to the
directory itself.
When du cannot stat() files or stat() or read directories, it
shall report an error condition and the final exit status is
affected. A file that occurs multiple times under one file
operand and that has a link count greater than 1 shall be counted
and written for only one entry. It is implementation-defined
whether a file that has a link count no greater than 1 is counted
and written just once, or is counted and written for each
occurrence. It is implementation-defined whether a file that
occurs under one file operand is counted for other file operands.
The directory entry that is selected in the report is
unspecified. By default, file sizes shall be written in 512-byte
units, rounded up to the next 512-byte unit.
Параметры (Options)
The du utility shall conform to the Base Definitions volume of
POSIX.1‐2017, Section 12.2, Utility Syntax Guidelines.
The following options shall be supported:
-a
In addition to the default output, report the size of
each file not of type directory in the file hierarchy
rooted in the specified file. The -a
option shall not
affect whether non-directories given as file operands
are listed.
-H
If a symbolic link is specified on the command line, du
shall count the size of the file or file hierarchy
referenced by the link.
-k
Write the files sizes in units of 1024 bytes, rather
than the default 512-byte units.
-L
If a symbolic link is specified on the command line or
encountered during the traversal of a file hierarchy,
du shall count the size of the file or file hierarchy
referenced by the link.
-s
Instead of the default output, report only the total
sum for each of the specified files.
-x
When evaluating file sizes, evaluate only those files
that have the same device as the file specified by the
file operand.
Specifying more than one of the mutually-exclusive options -H
and
-L
shall not be considered an error. The last option specified
shall determine the behavior of the utility.
Операнды (Operands)
The following operand shall be supported:
file The pathname of a file whose size is to be written. If
no file is specified, the current directory shall be
used.
Стандартный ввод (Stdin)
Not used.
Входные файлы (Input files)
None.
Переменные окружения (Environment variables)
The following environment variables shall affect the execution of
du:
LANG Provide a default value for the internationalization
variables that are unset or null. (See the Base
Definitions volume of POSIX.1‐2017, Section 8.2,
Internationalization Variables for the precedence of
internationalization variables used to determine the
values of locale categories.)
LC_ALL If set to a non-empty string value, override the values
of all the other internationalization variables.
LC_CTYPE Determine the locale for the interpretation of
sequences of bytes of text data as characters (for
example, single-byte as opposed to multi-byte
characters in arguments).
LC_MESSAGES
Determine the locale that should be used to affect the
format and contents of diagnostic messages written to
standard error.
NLSPATH Determine the location of message catalogs for the
processing of LC_MESSAGES.
Асинхронные события (Asynchronous events)
Default.
Стандартный вывод (Stdout)
The output from du shall consist of the amount of space allocated
to a file and the name of the file, in the following format:
"%d %s\n", <size>, <pathname>
Стандартный вывод сообщений (Stderr)
The standard error shall be used only for diagnostic messages.
Выходные файлы (Output files)
None.
Расширенное описание (Extended description)
None.
Статус выхода (Exit)
The following exit values shall be returned:
0 Successful completion.
>0 An error occurred.
Последствия ошибок (Consequences of errors)
Default.
The following sections are informative.
Использование в приложениях (Application usage)
None.
Примеры (Examples)
None.
Обоснование (Rationale)
The use of 512-byte units is historical practice and maintains
compatibility with ls and other utilities in this volume of
POSIX.1‐2017. This does not mandate that the file system itself
be based on 512-byte blocks. The -k
option was added as a
compromise measure. It was agreed by the standard developers that
512 bytes was the best default unit because of its complete
historical consistency on System V (versus the mixed
512/1024-byte usage on BSD systems), and that a -k
option to
switch to 1024-byte units was a good compromise. Users who prefer
the 1024-byte quantity can easily alias du to du -k
without
breaking the many historical scripts relying on the 512-byte
units.
The -b
option was added to an early proposal to provide a
resolution to the situation where System V and BSD systems give
figures for file sizes in blocks, which is an implementation-
defined concept. (In common usage, the block size is 512 bytes
for System V and 1024 bytes for BSD systems.) However, -b
was
later deleted, since the default was eventually decided as
512-byte units.
Historical file systems provided no way to obtain exact figures
for the space allocation given to files. There are two known
areas of inaccuracies in historical file systems: cases of
indirect blocks being used by the file system or sparse files
yielding incorrectly high values. An indirect block is space used
by the file system in the storage of the file, but that need not
be counted in the space allocated to the file. A sparse file is
one in which an lseek() call has been made to a position beyond
the end of the file and data has subsequently been written at
that point. A file system need not allocate all the intervening
zero-filled blocks to such a file. It is up to the implementation
to define exactly how accurate its methods are.
The -a
and -s
options were mutually-exclusive in the original
version of du. The POSIX Shell and Utilities description is
implied by the language in the SVID where -s
is described as
causing ``only the grand total'' to be reported. Some systems may
produce output for -sa
, but a Strictly Conforming POSIX Shell and
Utilities Application cannot use that combination.
The -a
and -s
options were adopted from the SVID except that the
System V behavior of not listing non-directories explicitly given
as operands, unless the -a
option is specified, was considered a
bug; the BSD-based behavior (report for all operands) is
mandated. The default behavior of du in the SVID with regard to
reporting the failure to read files (it produces no messages) was
considered counter-intuitive, and thus it was specified that the
POSIX Shell and Utilities default behavior shall be to produce
such messages. These messages can be turned off with shell
redirection to achieve the System V behavior.
The -x
option is historical practice on recent BSD systems. It
has been adopted by this volume of POSIX.1‐2017 because there was
no other historical method of limiting the du search to a single
file hierarchy. This limitation of the search is necessary to
make it possible to obtain file space usage information about a
file system on which other file systems are mounted, without
having to resort to a lengthy find and awk script.
Будущие направления (Future directions)
A future version of this standard may require that a file that
occurs multiple times shall be counted and written for only one
entry, even if the occurrences are under different file operands.
Смотри также (See also)
ls(1p)
The Base Definitions volume of POSIX.1‐2017, Chapter 8,
Environment Variables, Section 12.2, Utility Syntax Guidelines
The System Interfaces volume of POSIX.1‐2017, fstatat(3p)