TGViewer
ServerAdmin.ru ServerAdmin.ru @srv_admin · 32.6K subscribers
Post #1791 8.07K
Во вчерашней заметке вскользь упомянул про утилиту truncate. Решил рассказать про неё поподробнее, так как сам иногда использую. С её помощью можно усечь текстовый файл, либо полностью обнулить, не удаляя его. Это удобно, когда нужно очистить лог файл, но не хочется его удалять, создавать заново, выставлять права доступа и перезапускать сервис, который его использовал.

Утилита truncate чаще всего входит в базовый состав системных утилит, которые идут в комплекте с дистрибутивом Linux. Если её нет, то можно установить пакет coreutils, она скорее всего будет там.

Вообще, самый простой способ обнулить файл, это сделать вот так:
# > access.log
Это в оболочке bash. В каких-то других может не сработать и нужно будет какую-то команду типа echo -n или cat /dev/null добавить перед перенаправлением. С truncate очистка файла выглядит так:
# truncate -s 0 access.log

Truncate позволяет не только полностью обнулить файл, но и сохранить какую-то его часть, что актуально для логов. Если у вас образовался огромный лог файл от веб сервера, который вам точно не нужен, но вы хотите что-то поискать в его начале, то просто обрежьте его до нужного размера:
# truncate -s 10M access.log
Конец будет отсечён до нового размера файла в 10 мегабайт. Обращаю внимание, что обрезается хвост файла, а не начало. Это принципиальный момент, так как truncate не читает файл, а просто отсекает лишнее, поэтому работает очень быстро на любых объемах. Мне как-то нужно было удалить именно начало большого файла, оставив конец. С удивлением обнаружил, что это не так просто сделать. Так и не придумал простого и удобного решения. Использовал tail -n и перенаправление в новый файл.

Другой возможностью truncate является создание файлов заданного размера. На практике лично мне это никогда не было нужно и я не знаю, где может пригодиться. Только если в каких-то тестах. Тем не менее с truncate это сделать проще всего. Создаём файл:
# truncate -s 10M file.txt
Получили файл в 10 мегабайт, заполненный нулями.

Также с truncate удобно увеличивать размер файла порциями. Есть какой-то файл, его надо увеличить на 10 мегабайт:
# truncate -s +10M file.txt
Если использовать вместо плюса минус, файл будет уменьшен на 10 мегабайт. Это может быть полезно, когда тестируется какой-то триггер в мониторинге на контроль размера файла. Например, если дамп sql базы слишком маленький, нужно обратить на это внимание.

#terminal #bash
  • 👍 64
  • 👎 3
More from @srv_admin
  1. Sep 23, 2026Очередная подборка статей авторов, которые согласились в ней участвовать. Кто не понимает,…
  2. Sep 23, 2026Контейнеры в одном инструменте, виртуалки — в другом, частное облако — вообще отдельная ис…
  3. Sep 23, 2026Расскажу тем, кто не знает, и напомню тем, кто забыл, как я. Не надо в Proxmox в LXC конте…
  4. Sep 22, 2026Недавно случайно заметил любопытную информацию на тему Proxmox VE и новой функциональности…
  5. Sep 22, 2026✔️ Сети для всех — сообщество для тех, кто развивается в сетевом и системном администриров…
  6. Sep 22, 2026Я ранее уже рассказывал, что приобрёл себе домой полноценную серверную платформу на базе S…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →