Введение
В процессе эксплуатации Linux аварийное завершение демонов и пользовательских процессов нередко приводит к накоплению «осиротевших» файлов UNIX-сокетов во временных хранилищах. Подобный мусор засоряет файловую систему и нерационально расходует доступные дескрипторы. В этом руководстве мы разберем практические приемы поиска и безопасного удаления неактивных сокетов межпроцессного взаимодействия с помощью системной утилиты dbus-cleanup-sockets.
1. Подготовка окружения и аудит утилиты D-Bus
Для моделирования рабочих сценариев и проверки состояния шины сообщений развернем пакеты dbus и python3, синхронизировав базу репозиториев.

Команда which позволяет убедиться, что исполняемый файл dbus-cleanup-sockets корректно зарегистрирован в стандартном каталоге системных бинарников (/usr/bin).
⚙️ [Ключевые параметры запуска]
--version : вывод сведений о сборке и лицензионных правах.--help : отображение встроенной справки по доступным ключам.<directory> : указание целевой директории для поиска и удаления неактивных сокетов.

С помощью вызова dbus-cleanup-sockets --version запросим номер релиза инструмента. На случай, если утилита не поддерживает прямой вывод версии через этот флаг, предусмотрен резервный запрос к dbus-daemon --version для комплексного аудита стека D-Bus.

2. Инспекция активных дескрипторов D-Bus в системе
Просканируем каталог временных файлов инструкцией ls -la /tmp | grep -E "dbus|systemd" || true, чтобы выявить существующие точки монтирования сокетов.
В выводе присутствуют исключительно служебные каталоги systemd, тогда как брошенные или поврежденные сокеты D-Bus в директории /tmp отсутствуют.

Инструмент сетевой статистики ss -xl | grep -i dbus | head -n 5 дает возможность проверить локальные сокеты домена UNIX, находящиеся в состоянии прослушивания (Listening).
Пустой вывод свидетельствует о том, что активных очередей ожидания D-Bus в стандартных временных каталогах сейчас нет.

3. Моделирование и тестирование механизма очистки сокетов
Для проведения контролируемого эксперимента изолируем рабочую среду, сформировав тестовую папку вызовом mkdir -p /tmp/test_dbus_sockets.

Смоделируем ситуацию аварийного закрытия приложения, оставившего после себя открытый файл сокета, исполнив однострочник: python3 -c 'import socket; s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM); s.bind("/tmp/test_dbus_sockets/s_test_socket")'.

Убедимся в успешном создании объекта файловой системы, выполнив ls -l /tmp/test_dbus_sockets.
Символ s в первой позиции битовой маски прав доступа подтверждает создание валидного UNIX-сокета.

Запустим сканирование подготовленной директории с помощью dbus-cleanup-sockets /tmp/test_dbus_sockets, чтобы оценить поведение очистителя на нестандартных дескрипторах.
Отчет демонстрирует значение 0 удаленных сокетов: утилита игнорирует сторонние сокеты, защищая приложения от непреднамеренного повреждения чужих точек связи.

Контрольная проверка ls -la /tmp/test_dbus_sockets подтверждает сохранность файла.
Созданный сокет s_test_socket остался нетронутым, что демонстрирует избирательность и безопасность встроенных алгоритмов утилиты.

4. Проверка системного каталога /tmp и удаление тестовых данных
Применим команду к корневому временному хранилищу: dbus-cleanup-sockets /tmp.
Нулевой результат свидетельствует об идеальном порядке в системном каталоге /tmp и полном отсутствии зависших сессионных шин.

Освободим дисковое пространство, удалив тестовую песочницу командой rm -rf /tmp/test_dbus_sockets.

Зафиксируем успешное прохождение всех этапов обслуживания командой echo "D-Bus socket cleanup verification finished successfully".

Мы подробно рассмотрели механизм работы dbus-cleanup-sockets в среде Ubuntu. Регулярная профилактика точек межпроцессного взаимодействия предотвращает переполнение таблицы дескрипторов и гарантирует стабильную работу серверных и настольных инсталляций Linux.