Что делает команда truncate в Linux?

«Что делает команда truncate в Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Команда truncate изменяет размер файла до указанной длины. Это мощный инструмент для управления файлами в DevOps-скриптах.

Основное поведение:

  • Если файл больше указанного размера, лишние данные от конца файла будут отброшены (файл усечется).
  • Если файл меньше указанного размера, он будет расширен до нужного размера, а новое пространство заполнится нулевыми байтами (null bytes x00).
  • По умолчанию, если файл не существует, он будет создан.

Ключевые опции:

  • -s, --size=SIZE – задает целевой размер. Можно использовать суффиксы: K, M, G (например, -s 10M).
  • --no-create – не создавать файл, если он не существует.
  • -o, --io-blocks – обрабатывать размер в блоках ввода-вывода (обычно 512 байт).

Практическое применение в DevOps:

  1. Быстрая очистка лог-файлов: Вместо удаления и пересоздания файла (что может сломать file descriptor запущенного процесса) можно усечь его.

    # Очистить лог-файл, оставив его размер 0 байт
    truncate -s 0 /var/log/app.log
    # Или альтернатива: :> /var/log/app.log
  2. Создание файлов-заглушек определенного размера (например, для тестирования мониторинга диска или резервного копирования).

    # Создать файл размером 1 Гигабайт
    truncate -s 1G /tmp/testfile.bin
  3. Освобождение места на диске для конкретного файла: После усечения файла необходимо выполнить sync или перезапустить приложение, чтобы ядро освободило блоки данных.

Важно: truncate работает на уровне файловой системы, манипулируя метаданными размера. Он не перезаписывает старые данные на диске физически, поэтому для безопасного удаления чувствительных данных следует использовать shred.