SystemdDoctor

Службы и их ошибки

Для каждой службы собрано то, из-за чего она чаще всего не поднимается: коды выхода, сообщения в журнале, права на файлы и каталоги, конфликты портов. Страница службы — самостоятельный разбор, а не список ссылок.

apache2.service Apache в systemd запускается через обёртку `apachectl`, и это определяет разбор: код возврата приходит от неё, а причина — в выводе проверки конфигурации. Имя unit различается по дистрибутивам: `apache2.service` в Debian и Ubuntu, `httpd.service` в RHEL и Fedora. 5 разобранных ошибок certbot.timer Обновление сертификатов в systemd делает таймер `certbot.timer`, а не служба. Типичная беда не в том, что что-то падает, а в том, что сбой никто не замечает: сертификат истекает через 90 дней, и проблему обнаруживают по ошибке в браузере. 5 разобранных ошибок cron.service Сама служба cron падает редко — чаще «не работает» отдельная задача. Причины почти всегда две: ошибка в строке расписания и разница окружения, потому что задача выполняется без вашего профиля, с коротким PATH и без переменных оболочки. 3 разобранные ошибки docker.service Демон Docker в systemd устроен нетипично: рядом с `docker.service` есть `docker.socket`, а параметры запуска частично берутся из `/etc/docker/daemon.json`. Большинство отказов — это ошибка в этом файле или конфликт между способом указания адреса в файле и в unit-файле. 7 разобранных ошибок elasticsearch.service Elasticsearch — служба на JVM с высокими требованиями к системным пределам. Отказы почти всегда сводятся к четырём вещам: не хватило памяти под JVM, занижен `vm.max_map_count`, мал предел дескрипторов, или нет прав на каталоги данных. 6 разобранных ошибок fail2ban.service fail2ban падает в основном из-за того, за чем он следит: если указанного файла журнала нет, служба не стартует целиком. Вторая причина — расхождение между настроенным способом блокировки и тем, что есть в системе: nftables против iptables. 4 разобранные ошибки grafana-server.service Grafana хранит свои настройки в базе (по умолчанию файловой) и падает, если к ней нет доступа. Остальные причины обычные: занятый порт, ошибка в файле настроек, недоступная внешняя база при её использовании. 4 разобранные ошибки haproxy.service HAProxy проверяет конфигурацию перед запуском, и unit-файл обычно делает это предварительной командой. Поэтому отказы почти всегда видны как неудача проверки: ошибка в конфигурации, недоступный адрес привязки или проблема с файлом сертификата. 5 разобранных ошибок mariadb.service MariaDB во многом повторяет MySQL, но unit-файл у неё свой и устроен аккуратнее: есть предварительные проверки, отдельный таймаут на восстановление и вспомогательные unit. Разбор отказов при этом тот же: собственный журнал ошибок, права каталога данных, память. 6 разобранных ошибок memcached.service memcached — простая служба, и её отказы почти всегда сводятся к трём вещам: занятый порт, недопустимые параметры запуска и нехватка памяти под заданный размер кеша. 4 разобранные ошибки mongod.service MongoDB под systemd падает по трём основным причинам: права на каталог данных, остатки файла блокировки после аварийного завершения и ошибки в файле настроек, который у неё в формате YAML и чувствителен к отступам. 6 разобранных ошибок mysql.service MySQL под systemd падает в основном по трём причинам: права или состояние каталога данных, нехватка памяти при заданном размере буферного пула, и повреждение данных после аварийного завершения. Причина почти всегда в собственном журнале ошибок MySQL, а не в выводе systemd. 8 разобранных ошибок named.service У BIND самая частая причина отказа — конфликт за порт 53 с локальным разрешателем имён systemd-resolved. Вторая — ошибки в зонах: сервер разбирает их при запуске и отказывается стартовать при неверной записи. 5 разобранных ошибок nfs-server.service Сервер NFS зависит от нескольких вспомогательных служб и от файла описания ресурсов. Отказы обычно связаны с ошибкой в этом файле, отсутствием экспортируемого каталога или неработающими зависимостями. 5 разобранных ошибок nginx.service У nginx почти все отказы запуска ловятся до старта самого сервера: unit-файл вызывает `nginx -t` предварительной командой, и падение происходит на ней. Поэтому первая строка разбора — вывод проверки конфигурации, а не журнал службы. 7 разобранных ошибок php8.3-fpm.service php-fpm в systemd отвечает за пул рабочих процессов, и почти все его проблемы делятся на три группы: ошибка в описании пула (служба не стартует), права на unix-сокет (веб-сервер получает отказ), исчерпание рабочих процессов (сайт отвечает медленно или не отвечает). 6 разобранных ошибок postgresql.service В PostgreSQL под systemd есть особенность, которая путает разбор: `postgresql.service` в Debian и Ubuntu — это пустая обёртка, а настоящая работа идёт в шаблонном unit вида `postgresql@16-main.service`. Смотреть журнал нужно именно у него. 8 разобранных ошибок prometheus.service Prometheus проверяет свой файл настроек при запуске и отказывается стартовать при любой ошибке в нём. Вторая частая причина — права на каталог данных, третья — оставшаяся блокировка после аварийного завершения. 5 разобранных ошибок rabbitmq-server.service RabbitMQ построен на Erlang, и его отказы часто выглядят непривычно: длинные сообщения о состоянии узла вместо обычной ошибки. Самые частые причины — несовпадение имени узла с именем машины и права на файл cookie, по которому узлы опознают друг друга. 5 разобранных ошибок redis-server.service Главная ловушка Redis в systemd — параметр `daemonize` в его конфигурации. Если он включён вместе с `Type=notify` или `simple`, systemd теряет процесс и считает службу упавшей. Вторая по частоте причина — невозможность сохранить снимок данных на диск. 6 разобранных ошибок smbd.service Samba проверяет свой файл настроек при запуске отдельной командой, и это первое, что стоит выполнить при отказе. Остальные причины — занятые порты, недоступные каталоги ресурсов и конфликт со службой обнаружения имён. 4 разобранные ошибки ssh.service У службы ssh цена ошибки выше обычной: неудачный перезапуск может оставить сервер без удалённого доступа. Поэтому порядок работы с ней отдельный: сначала проверка конфигурации, потом перезапуск, и никогда не наоборот. Имя unit различается: `ssh.service` в Debian и Ubuntu, `sshd.service` в RHEL. 5 разобранных ошибок systemd-resolved.service systemd-resolved отвечает за разрешение имён и слушает порт 53 на адресе 127.0.0.53. Проблемы с ним делятся на две группы: конфликт за порт с локальным DNS-сервером и неверная настройка /etc/resolv.conf, из-за которой программы обращаются не туда. 4 разобранные ошибки wg-quick@wg0.service WireGuard поднимается шаблонной службой по имени интерфейса. Отказы обычно связаны с правами на файл настроек, отсутствием модуля ядра или конфликтом маршрутов и адресов. 4 разобранные ошибки