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