Сделать через жопу — это лучше, чем не сделать совсем

Иногда требуется проверить поведение скрипта, когда на диске физически закончилось место. Но создавать огромный файл с нулями и забивать всё место — такое себе решение.

А как быть? Да всё просто, диск можно забить искусственно, не забивая его. Для этого существует такая поебень, как /dev/full.

При попытке записи в /dev/full тебе выдаст — опа, а места нету! Даже если физически место есть.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Это удобно для тестирования софта и обработчиков исключений. Например, пишет твой скрипт в файл какую-нибудь суету, место закончилось. Что будет дальше делать скрипт? Как он себя поведёт?

Держу пари, будет пытаться продолжать писать. А по-хорошему, он должен сообщить тебе про это либо корректно завершиться и освободить файл. Смекаешь?

Вот пример скрипта:

#!/bin/bash

output_file="data.txt"

while true; do
    # Записываем данные в файл
    echo "bashdays data" >> "$output_file"

    # Проверяем на "No space left on device"
    if ! echo "bashdays data" >> "/dev/full"; then
        echo "Disk is full!"
        break
    fi
done

Скрипт при каждой итерации проверяет, заполнен ли диск, и, если заполнен, выводит сообщение «Disk is full!».

Символ «!» в этом примере инвертирует результат выполнения команды. То есть если запись в /dev/full не вызывает ошибки, то диск ещё не заполнен.

echo можешь заменить, например, на триггер, который тюкнет тебе в Telegram и скажет, что твой скрипт сожрал всё место.

Такие дела. Изучай.