Иногда требуется проверить поведение скрипта, когда на диске физически закончилось место. Но создавать огромный файл с нулями и забивать всё место — такое себе решение.
А как быть? Да всё просто, диск можно забить искусственно, не забивая его. Для этого существует такая поебень как:
/dev/full./dev/full — это специальный файл устройства, источник данных, который всегда возвращает ошибку «No space left on device».
При попытке записи в
/dev/full, тебе выдаст — опа, а места нету! Даже если физически место есть.Это удобно для тестирования софта и обработчиков исключений. Например, пишет твой скрипт в файл какую-нибудь суету, место закончилось. Что будет дальше делать скрипт? Как он себя поведет?
Держу пари, будет пытаться продолжать писать. А по-хорошему, он должен сообщить тебе про это, либо корректно завершиться и освободить файл. Смекаешь?
Вот пример скрипта:
#!/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 можешь заменить например на триггер, который тюкнет тебе в телеграм и скажет, что твой скрипт сожрал всё место.
Как взаимодействовать с API телеграм через Bash, я писал тут.
Такие дела. Изучай.
tags: #bash #linux
—
@BASHDAYS