Когда я только начинал администрировать Linux сервера, первые несколько лет регулярно использовал панель управления Webmin для одной единственной цели - просмотр всевозможных логов. Мне нравился там модуль для этого дела. С его помощью можно было удобно грепать логи, что-то искать, копировать и т.д.
Особенно это было актуально для почтовых серверов на базе postfix. Там постоянно нужно было лазить в лог и что-то проверять: почему письмо не дошло, подключался ли данный клиент, какой был ответ сервера и т.д. Мне было удобно в Webmin задать ID письма или IP сервера и посмотреть всю информацию о них в логах. Обычно там все сильно разбросано по лог файлу, потому что куча повторяющихся и новых событий происходят, а Webmin помогал упорядочить.
Со временем отказался от Webmin, так как ставить такого монстра только для логов было излишним. Недавно наткнулся на удобную утилиту, которая позволяет делать примерно то же самое - удобно просматривать логи через браузер. Речь идёт про tailon (https://github.com/gvalkov/tailon).
Это маленькая утилита, состоящая из одного бинарника, который можно скачать из репозитория и запустить. Она состоит из веб сервера, который открывает заданные логи, чтобы вы могли посмотреть их через браузер. Поддерживается не только просмотр, но и обработка прямо в браузере стандартными утилитами grep, awk, sed. Сделано всё простенько, но функционально.
Можно сразу все логи директории отправить в браузер, например так:
# ./tailon /var/log/*.log
И выбирать, какой из них открыть на просмотр в веб интерфейсе. Сервер по умолчанию поднимается на порту 8080.
Если вы новичок в Linux и работать в консоли ещё не привыкли, то попробуйте, может понравится инструмент. Да и просто на время отладки может пригодиться, или анализа логов веб сервера в режиме реального времени. В общем, полезная штука.
#linux #logs
❓Хочешь освоить PostgreSQL?
📌 14 апреля в 20:00 в OTUS пройдет открытый урок «Резервное копирование и восстановление» с Евгением Аристовым, архитектором баз данных PostgreSQL, MongoDB, MSSQL, Oracle, MySQL, MariaDB, Couchbase и автором книг по PostgreSQL.
📘На занятии мы разберем:
• Стандартные методы логического и физического копирования
• Современную утилиту pg_probackup
• Лучшие практики по бэкапам и восстановлению
💻 Открытый урок пройдет в рамках онлайн-курса «PostgreSQL Cloud Solutions», рассчитанного на DevOps-инженеров, SRE, архитекторов данных, администраторов баз данных и разработчиков.
👉ЗАРЕГИСТРИРОВАТЬСЯ
https://otus.pw/NMPz/
#реклама
Rsync - мощная консольная утилита и служба для быстрого копирования файлов. Отличает её в первую очередь скорость сравнения директорий с огромным количеством файлов. К примеру, если вам нужно будет сравнить и привести к единому содержимому два разнесённых по сети хранилища с миллионом файлов внутри, то rsync для этого подойдёт лучше, чем что-либо другое.
Я сам лично до сих пор для бэкапов использую преимущественно голый rsync, но не всегда и не везде. Если нужно обязательно копировать файлы как есть, без упаковки, сжатия, дедупликации, то как раз в этом случае выберу его. Пример подхода с использованием rsync давно описал в статье, которая нисколько не устарела, так как сам rsync, его возможности и параметры не изменились вообще.
Для тех, кто не хочет колхозить автоматизацию бэкапов с помощью самодельных скриптов, есть готовые системы на базе Rsync. Я постарался рассмотреть практически все более ли менее известные. Вот они:
▪ Butterfly Backup - консольная утилита Linux.
▪ Rsnapshot - консольная утилита Linux.
▪ ElkarBackup - сервис для бэкапов, написанный на PHP, настройка через браузер.
▪ BackupPC - сервис для бэкапов, написанный на PERL, настройка через браузер.
▪ Burp - сервис под Linux, более простой аналог Bacula.
▪ cwRsyncServer Программа под Windows.
▪ DeltaCopy Программа под Windows.
Забирайте в закладки. Rsnapshot, DeltaCopy постоянно использую сам.
#rsync #backup
MikroTik Newsletter Апрель 2022
Основная новость для нас - Mikrotik отозвал все тренерские сертификаты из РФ, остановил программу обучения и официально прекратил поставки оборудования. Тем не менее, в продаже оно есть и скоро на канале будет реклама поставщиков этого оборудования. Законы капитализма нерушимы - деньги превыше всего. Пожалуй сейчас это единственная ситуация, когда данный принцип я могу оценить положительно.
Остальные новости вендора:
◽ Новая модель свитча CRS504-4XQ-IN за $799. Особенности: 2 hot-swap блока питания, 4х100 gigabit QSFP28 порта!!! Обзор на Youtube. Я думал такие скорости стоят значительно дороже, а оказывается 100 гигабит можно за 800 баксов заиметь.
◽ Новый уличный топовый LTE модем LHG LTE18 kit за $279. Пригодится там, где очень слабый сигнал и обычными устройствами он не ловится. Питаться может через PoE-in, связь через Gigabit Ethernet порт. Внутри dual-core ARM CPU, так что если сигнал хороший, то модем может агрегировать каналы и выдавать скорость LTE соединения до одного гигабита в секунду. Обзор на Youtube.
◽ Новый маршрутизатор CCR2004-16G-2S+PC за $465. Особенности: 16xGigabit Ethernet портов (по 8 на каждый switch чип), 2x10G SFP+ портов, 4-х ядерный процессор, консольный порт RG-45, пассивное охлаждение!. Устройство позиционируется как бесшумный роутер для установки прямо в офисе или дома (для богатеньких 😎). Обзор на Youtube.
◽ Вышла RouterOS v7.2 Stable. "Remember to keep your devices updated for the best performance and maximum security!" Все обновились? 😄
Там ещё новые вентиляторы и крепления вышли, но это не так интересно. Отдельно стоит упомянуть, что Mikrotik обновил логотип. Новый в прикреплённом изображении ниже. Побуду занудой, но мне старый нравится больше. А вам как?
Newsletter PDF
#mikrotik
Как организовать видеоконференцсвязь, когда приходится отказываться от импортного ПО и оборудования?
Об этом пойдёт речь на вебинаре Logitech и NBCom Group – «Как обеспечить видеоконференцсвязь в современных реалиях».
Дата и время: 14 апреля, 11:00 по МСК
Зарегистрироваться и узнать подробности здесь.
Я вчера был на конференции, организованной компанией TrueConf. Была недавно на канале реклама этого мероприятия. Сразу скажу, что этот пост у меня никто не заказывал и не просил написать. Это моя инициатива. Он просто хорошо ложится в конву импортозамещения и перехода на отечественные продукты.
TrueConf - это платформа для видеоконференций и онлайн общения, которая конкурирует с известными мировыми брендами, такими как Zoom, Teams, Webex и т.д. Причём конкурирует давно и не только на отечественном рынке. Основное отличие и оно же преимущество - возможность купить продукт в формате On-premise или Box. То есть вы можете установить ПО на своё железо и оплачивать его по ежегодной подписке или купить бессрочную лицензию.
Я не буду подробно описывать все возможности TrueConf, так как это известная компания с большой линейкой продуктов, пытающаяся покрыть все потребности бизнеса в коммуникациях (видеоконференции через PC клиенты, через аппаратные устройства для переговорок, через аппаратные терминалы для sip/h323, свой транскодирующий сервер и т.д.) Всё это рассчитано на очень большие масштабы.
Отмечу кратко то, на что сам обратил внимание из полученной информации:
◽ Некоторое время назад было масштабное обновление ПО, в том числе клиентского. Сейчас клиент позиционируется в том числе как чат для корпоративного общения. Замена Telegram, WhatsApp и т.д. То есть не только звонилка для видеопереговоров.
◽ Разработка старается конкурировать с мировыми лидерами Zoom, Teams и т.д. Пытаются брать лучшие практики и улучшать их. Речь о функционале и удобстве.
◽ Решение, установленное на своих серверах, позволяет хранить у себя всю аналитику по использованию, в том числе статистику, видеозаписи и т.д. Это становится очень актуально в последнее время, так как явно виден тренд на сегментирование интернета и риски SaaS продуктов.
◽ TrueConf Server можно установить на любое типовое железо, так что производительность и объёмы дисков зависят только от ваших потребностей.
◽ У TrueConf есть поддержка SIP. То есть этот продукт пытается совместить в себе основные коммуникации бизнеса - чат, видео, телефония.
Отдельно отмечу, что сам я TrueConf никогда не использовал. Была пара тестирований, когда поднимал сервер, но внедрения не делал и активно не использовал. Так что всё написал со слов докладчиков и маркетинговой информации.
❗️У TrueConf Server есть бесплатная версия на 10 абонентов, где можно протестировать основной функционал, в том числе запись конференций. Сервер есть под Windows и Linux, клиенты под все популярные стационарные и мобильные системы. Поддерживаются в том числе все отечественные системы (Asta, ROSA, Alt и т.д.) Ещё раз отмечу, что сервер можно установить у себя автономно в том числе в закрытых сетях.
ps Отдельно хочу отметить, что хотя официально на поставки иностранного оборудования наложены ссанкции, сами производители в них не заинтересованы и реально оборудование поступает и доступно для заказа.
Сайт - https://trueconf.ru/
Реестр ПО - https://reestr.digital.gov.ru/reestr/301405/
#наше #videoserver #chat
Мне очень не нравятся счётчики Яндекс.Метрика и Google Analytics для сайтов. Они собирают тонну информации, которая лично мне не нужна. При этом заметно замедляют рендеринг страниц. Приходится с этим мириться, потому что существует популярное мнение, что наличие этих счётчиков улучшает ранжирование сайта, так как у поисковых систем появляется больше информации о нём. И хотя нигде открыто об этом не говорится, но очевидно, что это так и есть. Иначе зачем делать такие масштабные highload системы с метрикой бесплатными и доступными всем. Для поисковиков это полезная информация и очевидно, что они будут понижать в выдаче тех, кто не захочет их установить.
Для тех, кому описанная выше проблема не критична, существуют другие более простые и быстрые решения по сбору статистики. Ранее я уже рассказывал про одно из таких решений - counter.dev. Сейчас добавлю только одно - разработчик этой системы сбора статистики живёт в Киеве. Последние коммиты можете сами посмотреть. Я познакомился с похожим аналогом, который мне понравился больше - umami.is.
Это тоже Open Source система. Umami понравилась за очень простой, лаконичный и быстрый веб интерфейс. Написана на Node.js, использует базу MySQL или Postgresql для хранения статистики. Код скрипта сбора данных всего 2KB. Статистику можно сделать публичной при желании. Есть встроенное API, что удобно, если есть желание забирать метрики в мониторинг.
Бонусом использования подобной системы сбора статистики может стать учёт пользователей с блокировщиками рекламы, так как хостится она локально и повода для блокировки особо не имеет, хотя зная усердия некоторых фильтров не уверен в этом. Но в любом случае упомянутые в начале метрика и аналитика блокируются почти у всех.
Сайт - https://umami.is/
Исходники - https://github.com/mikecao/umami
Демо - https://app.umami.is/share/8rmHaheU/umami.is
#website
@Social_Engineering — Самый крупный ресурс в Telegram, посвященный Информационной Безопасности, Информационным технологиям, Хакингу, OSINT и Cоциальной Инженерии.
#реклама
Продолжаю ваc знакомить с утилитами командной стоки Linux, которыми пользуюсь сам. На днях вспомнил про SPLIT. С её помощью можно делить файлы на части. Чаще всего это нужно для больших архивов, которые требуется разбиться на части перед передачей по интернету. Так проще передать большой файл.
Я не помню, чтобы мне приходилось когда-нибудь ставить split отдельно. Обычно она есть в стандартном системном наборе во всех дистрибутивах, с которыми приходится работать.
Конкретно я split использую, когда нужно отправить в S3 хранилище какой-то большой архив. Во многих инструкциях по S3 указывается, что большие файлы отправлять не рекомендуется. Под большими подразумевается что-то больше 2-3 Гигабайт. Так что такие файлы приходится разбивать.
В общем случае разбить файл с помощью split можно следующим образом:
# split -b 100M file
На выходе получим некоторый набор файлов в зависимости от размера исходного. Имена у файлов будут вида xaa, xab, xaс и т.д., что явно неудобно. Поэтому на практике лучше сразу указать маску, по которой будут создаваться новые файлы:
# split -b 2M file file_ -a 2 -d
Мы указали длину префикса 2 и использование чисел. На выходе будут файлы file_00, file_01, file_02 и т.д., что мне видится удобнее дефолтных масок.
Собрать файлы обратно можно следующим образом:
# cat file_* > file
Если вы просто хотите разделить файл на 5 частей вне зависимости от того, какого они будут размера, то делается это следующим образом:
# split -n 5 file file_ -a 2 -d
Вот пример использования split на бэкапе большого сайта для дальнейшей передачи его в S3. Пример условный, так как вынул его из большого скрипта и все переменные указал явно. То есть это не мой окончательный рабочий вариант, а адаптированный пример:
# Делаем архив с относительным путём внутри/usr/bin/tar --exclude='cache/*' \-czvf /mnt/backup/site.ru_`date +"%Y-%m-%d_%H-%M"`.tar.gz \-C /web/sites/site.ru www# Разбиваем архив на части/usr/bin/split -b 2048m \/mnt/backup/site.ru_`date +"%Y-%m-%d_%H-%M"`.tar.gz \"/mnt/backup/site.ru_`date +"%Y-%m-%d_%H-%M"`.tar.gz-part-"# Удаляем исходный файл/usr/bin/rm -rf /mnt/backup/site.ru_`date +"%Y-%m-%d_%H-%M"`.tar.gz# Заливаем в S3/usr/bin/rclone copy /mnt/backup s3storage:week# Чистим локальный бэкап от старых архивов/usr/bin/find /mnt/backup -type f -mtime +7 -exec rm {} \;
Отдельно отмечу, что подобные бэкапы обязательно нужно проверять. У меня S3 это не основной бэкап, а холодное хранилище для них. Эти же бэкапы хранятся где-то ещё, разворачиваются и проверяются, так как туда ещё и дамп базы обычно кладётся, чтобы всё в одном месте было.
#terminal #bash
В Zabbix 6.0 появились дашборды с географическими картами. Я посмотрел, как всё это работает и решил поделиться с вами информацией.
Реализовано всё достаточно просто и удобно. Для начала вам нужно в свойствах хоста, в инвентаризации, указать широту и долготу. Посмотреть их можно на любой публичной карте.
Затем надо добавить на Дашборд новый виджет - Геокарта. В настройках виджета указать узлы сети, которые будут помещены на карту. Вот и всё. Сохраняете виджет и наблюдаете узлы на карте. В свойствах виджета можно настроить начальный вид и приближение, чтобы каждый раз не скролить при поиске хостов.
В разделе Администрирование -> Общие -> Географические карты можно выбрать сервис, с помощью которого будет отображаться карта. Я видел отзывы, что не у всех все эти сервисы нормально работают. Сам попробовал несколько, всё нормально.
Наглядно посмотреть, как эти карты настраиваются и потом выглядят можно в ролике на официальном канале Zabbix:
https://www.youtube.com/watch?v=rjl9QLYBGRs
Мне понравилась реализация. Классно сделали.
#zabbix
В закладочках нашёл любопытный сервис, который очень полезен линуксоидам - конструктор для консольной команды FIND. Это такая типичная линуксовая утилита, у которой 100500 параметров и возможностей, ключи которой невозможно запомнить раз и навсегда. У меня огромная шпаргалка по find на все случаи жизни, чтобы не приходилось заново вспоминать, как реализовать тот или иной поиск.
Кое-что необычное по find уже публиковал на канале:
- очистка старых файлов
- поиск дубликатов файлов
- утилита fd для упрощения поиска через find
Сервис называется find-command-generator. С его помощью узнал, что find очень просто может находить файлы, которые принадлежат несуществующему пользователю или группе, или обоим одновременно. Бывает нужно такие найти:
# find . -nogroup -nouser
Сервис пригодится, когда нужно найти что-то с параметрами, типа ограничения по датам изменения или доступа, размеру, правам доступа и т.д. Типичная история, когда надо проверить директорию веб сервера и снять с файлов все права на исполнение:
# find /web/site/www -type f -name "*" -perm u+x -exec chmod 664 {} \;
Программисты любят ставить 777 без разбора. Постоянно с этим сталкиваюсь. Когда у них что-то работает не так, они первым делом права доступа 777 ставят, а потом дальше разбираются.
#bash #terminal
В непростое время жестких санкций мы организуем площадку для общения среди экспертов в сфере ИТ-инфраструктуры, желающих поделиться своим опытом, послушать мнение коллег, задать вопросы.
На последнем из серии мероприятии 07 апреля выступят:
• Сергей Ульданов, Руководитель департамента ИТ, Mediascope (исследовательский бизнес)
• Андрей Ванин, CIO, IThub (образование в сфере ИТ)
• Эксперты от Stack Group
Планируем обсудить пути решения возникших и возможных проблем в части ИТ-инфраструктуры и ИТ, чтобы обеспечить стабильное функционирование физической и облачной ИТ-инфраструктуры в российских компаниях для бесперебойной работы бизнеса.
На мероприятиях серии выступают приглашенные эксперты из разных отраслей (финтех, промышленность, ритейл, авиа, разработка ПО и др).
Когда 📆
07 апреля (четверг), 12:00 (мск)
Регистрация
#реклама
Во вчерашней заметке вскользь упомянул про утилиту 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
🚑 Скорая помощь по Zabbix и Elastic Stack
Консультации через Zoom сертифицированными специалистами:
🔥 Оперативная помощь с траблшутингом проблем с Zabbix или Elastic Stack (все штатные компоненты)
🔥 Работы по миграции с версии на версию Zabbix/Elastic Stack
🔥 Разработка шаблонов мониторинга в Zabbix/правил обработки данных в Elastic Stack
🔥 Тюнинг производительности Zabbix/Elastic Stack
🔥 Услуги удаленного администрирования и удаленной поддержки на постоянной основе Zabbix/Elastic Stack
🔥 Семинары-инструктажи по Zabbix/Elastic Stack
Для оперативной связи @galssoftware. Подробнее о наших услугах на gals.software
#реклама
Я давно принял решение, что следующий купленный ноутбук для работы будет на Linux. С Windows буду потихоньку прощаться по целому ряду причин, которые может быть перечислю как-нибудь отдельным постом. Сегодня хотел рассказать про программу-клиент для подключения к удалённому рабочему столу по различным протоколам Remmina.
Это один из немногих примеров программ, про которые спрашивают пользователи Linux, когда вынуждены использовать Windows: "Какой есть аналог Remmina под виндой?" Обычно под виндой полно всякого софта и подобные вопросы задают в обратную сторону, переползая на Linux.
Лично я знаю два подобных аналога: MobaXterm и Remote Desktop Manager. Но с одной существенной разницей - они коммерческие. Про обе эти программы я писал ранее. Есть ещё одна, но как по мне похуже этих двух - mRemoteNG. Надо будет сделать про неё отдельный пост. Remmina существует только под Linux и умеет примерно всё то же самое, только абсолютно бесплатно и без ограничений, так как это Open Source и распространяется под лицензией GPLv2+.
Как я уже сказал, Remmina работает под Linux и позволяет получить удаленный доступ к Windows, MacOS и Linux с помощью протоколов RDP, SSH, SPICE, VNC, X2Go, HTTP/HTTPS. Программа популярна и есть в стандартных репозиториях всех известных дистрибутивов, либо имеет свой отдельный репозиторий, который можно подключить.
Если есть большое желание использовать Remmina под Windows, то можно запустить её под WSL. Эта возможность упомянута и продемонстрирована отдельной статьёй на официальном сайте.
В свете того, что многим из нас в ближайшее время придётся переходить на "отечественные ОС", которые все на базе Linux, имеет смысл подбирать подходящий софт под это дело. Я не придумал тэг для программ этой категории. Как думаете, какой для них будет актуален? #remote уже занят для всяких энидексов и им подобным.
Сайт - https://remmina.org
Исходники - https://gitlab.com/Remmina/Remmina
#linux
25 марта в официальном блоге Zabbix вышла обзорная заметка с примером на тему вебхуков - Webhooks in Zabbix. Это очень функциональная возможность системы мониторинга, которая позволяет практически безгранично настраивать интеграции с другими системами.
Для тех, кто не знает, что такое вебхуки, поясню своими словами. С помощью вебхука можно отправить HTTP запрос с параметрами на какое-то событие. Например, сработал какой-то триггер в Zabbix, а в качестве вебхука к нему прописано действие по отправке POST запроса к https://api.telegram.org. Таким образом вы можете самостоятельно настроить оповещения в Telegram не прибегая вообще ни к каким сторонним скриптам или расширениям.
То есть с помощью webhook вы можете настроить интеграцию с любым продуктом, у которого есть API. Передавайте туда необходимые параметры, создавайте объекты, уведомления и т.д. На основе вебхуков созданы большинство встроенных интеграций с другими системами.
Для создания простых вебхуков не требуется каких-то особенных знаний. Можно использовать встроенные макросы Zabbix для передачи тех или иных значений. Если нужно что-то посложнее с модификацией передаваемой информации, то придётся использовать JavaScript, который поддерживается механизмом вебхуков в Zabbix Server.
Готовые примеры вебхуков для интеграции с различными системами можно посмотреть в официальном репозитории Zabbix на Github. Наиболее частое применение - оповещение с помощью различных мессенджеров и заведение заявок в системах HelpDesk.
#zabbix
Сделайте первый шаг к освоению профессии Linux-администратора с нуля! Встречаемся 🗓 6 апреля в 20:00 на вебинаре «Знакомство с Nginx. Веб-сервер на Linux». Открытый урок проведет Николай Лавлинский, технический директор «Метод Лаб»
📁 За 1,5 часа на занятии мы:
- Познакомимся с веб-сервером Nginx
- Посмотрим основные принципы конфигурации и диагностики
- Поговорим о базовых принципах взаимодействия веб-сервера и браузера
👉🏻 Зарегистрируйтесь, чтобы принять участие https://otus.pw/jlBP/
Используйте эту возможность протестировать онлайн-курс «Специализация Administrator Linux» от OTUS и познакомиться с преподавателем.
ps Этого автора я давно знаю и много раз упоминал его ролики из youtube канала Ускорение Сайтов :: Метод Лаб.
#реклама
В продолжение к предыдущей заметке, где я восстанавливал удалённый файл, который был открыт процессом. Ещё один практический пример на эту тему. Мы теперь знаем, что в Linux сначала удаляется имя файла. Сам же файл удаляется, только после того, как счётчик ссылок станет равен нулю и будут закрыты все файловые дескрипторы, ассоциированные с файлом. Давайте найдём файлы, количество ссылок которых равны нулю.
# lsof +L1
или так:
# lsof | grep '(deleted)'
Вывод этой команды можно ограничить файлами конкретного раздела:
# lsof -s +L1 -a /dev/sda1
Приведу практический пример по этой теме. Создадим большой файл /tmp/tempfile размером в один гибибайт:
# dd if=/dev/zero of=/tmp/tempfile bs=1M count=10241073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.22636 s, 482 MB/s
Находясь в директории /tmp запускаю команду в фоне, которая открывает файл на чтение. Удаляет его и засыпает. Используется оболочка Bash:
# ( : {fd}< ./tempfile && rm -f ./tempfile && sleep 30000 {fd}>&- ) 2> /dev/null &
Если после запуска скрипта посмотреть размер раздела, на котором размещается директория /tmp и сумму всех файлов на этом разделе, то получится разница в этот самый гибибайт. В моём случае это корневой раздел:
# df -h /Filesystem Size Used Avail Use% Mounted on/dev/mapper/debian11--vg-root 19G 2.1G 16G 12% /# du -xhs /1.1G /
Есть процесс, который удалил файл, но продолжает держать открытым файловый дескриптор, поэтому реально файл не удалён и всё ещё занимает место на диске. Если поднять процесс из фона и завершить, то файловый дескриптор будет закрыт и файл перестанет заниматься место на диске.
# fgCTRL+C
На практике я регулярно сталкиваюсь с подобной ситуацией. Чаще всего это касается лог файлов. Кто-то решает удалить распухший лог, но при этом забывает перезапустить сервис. Например некоторые разработчики любят урезать логи docker или nginx с помощью truncate.
В итоге лог вроде как удалён, но файловый дескриптор открыт и служба продолжает писать в него логи. Доходит до того, что всё место на диске занято и непонятно кем. Тут спасёт перезагрузка, или определение с помощью lsof какой файл открыт и какая служба его держит. Перезапускаем и всё становится в порядке с местом.
#terminal