/dev/full

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Файл UNIX-устройства
/dev/full
Тип символьное (c)
Коды
ОС major minor
Linux 1 7
Специальные файлы устройств

/dev/full — специальный файл в UNIX-подобных системах, представляющий собой «полное устройство»[1]. Запись в него ненулевого количества байт происходит с ошибкой «недостаточно места» (ошибка ENOSPC)[1], независимо от объёма «записанной» информации. Чтение из /dev/full эквивалентно считыванию запрошенного количества нулевых байтов, как для /dev/zero[1].

Запись в /dev/full завершается успешно только для нулевого количества байт. Это устройство используется для добавления проверок того, что программа ничего не выводит. Если программа сама не обработает ошибку вывода, то она завершится с ошибкой при первом нарушении требования ничего не выводить.

Создание[править | править код]

Устройство /dev/full считается символьным. В Linux оно создаётся с помощью утилиты mknod следующим образом[1]:

mknod FILE c 1 7

Здесь FILE — имя для нового устройства. На этапе установки системы оно создаётся таким образом со стандартным именем /dev/full.

Примеры использования[править | править код]

Чаще всего /dev/full используется для дополнительного уровня проверок (избыточного, но иногда полезного)[источник не указан 1185 дней]. Например, для создания архива системного протокола syslog можно выполнить команду

bzip2 --compress --stdout --best -- '/var/log/syslog' > /dev/full

В этой команде присутствует типичная ошибка — неверно указан параметр, но дополнительная проверка позволяет избежать двух проблем: во-первых, вывода на терминал бинарного потока, который может что-нибудь сломать даже самостоятельно, и, во-вторых, потери файла архива, как было бы при использовании /dev/null или /dev/zero на месте /dev/full, но с /dev/full архиватор выдаст понятную ошибку.

См. также[править | править код]

Примечания[править | править код]

  1. 1 2 3 4 full(4) - справочная страница Linux (англ.). man7.org. Дата обращения: 7 февраля 2021. Архивировано 20 января 2021 года.