Как проверить статус службы postgresql на Linux и перезапустить её в случае сбоя через systemctl?
Управление службой PostgreSQL в Linux через systemctl — одна из базовых задач системного администратора и разработчика. Рассмотрим все необходимые команды подробно.
## Проверка статуса службы PostgreSQL
Для проверки текущего состояния службы используется команда:
sudo systemctl status postgresql
На некоторых дистрибутивах (например, Ubuntu) служба может называться с указанием версии:
sudo systemctl status postgresql@14-main
Вывод команды покажет:
— **Active: active (running)** — служба работает нормально.
— **Active: failed** — служба завершилась с ошибкой.
— **Active: inactive (dead)** — служба остановлена.
Также будут отображены последние строки журнала, PID процесса и время последнего запуска.
## Перезапуск службы PostgreSQL
Если служба работает, но нужно её перезапустить (например, после изменения конфигурации):
sudo systemctl restart postgresql
Если служба упала и не запускается автоматически, можно запустить её вручную:
sudo systemctl start postgresql
Для «мягкого» перезапуска без полной остановки (reload конфигурации):
sudo systemctl reload postgresql
## Настройка автоматического перезапуска при сбое
Чтобы systemd автоматически перезапускал PostgreSQL при сбое, отредактируйте unit-файл службы. Создайте override-файл:
sudo systemctl edit postgresql
Добавьте следующие строки:
[Service]
Restart=on-failure
RestartSec=5s
После сохранения примените изменения:
sudo systemctl daemon-reload
Параметр `Restart=on-failure` означает, что служба будет перезапущена только при аварийном завершении. `RestartSec=5s` задаёт паузу в 5 секунд перед перезапуском.
## Просмотр логов для диагностики
Если служба не запускается, просмотрите подробные логи:
sudo journalctl -u postgresql -n 50 —no-pager
Для просмотра логов в реальном времени:
sudo journalctl -u postgresql -f
## Включение автозапуска при загрузке системы
Чтобы PostgreSQL запускался автоматически при старте системы:
sudo systemctl enable postgresql
Проверить, включён ли автозапуск:
sudo systemctl is-enabled postgresql
## Полезные дополнительные команды
— Остановить службу: `sudo systemctl stop postgresql`
— Проверить, запущена ли служба: `sudo systemctl is-active postgresql`
— Перезапустить все зависимые службы: `sudo systemctl restart postgresql.service`
Следуя этим инструкциям, вы сможете эффективно управлять службой PostgreSQL, диагностировать сбои и настроить автоматическое восстановление работоспособности базы данных.
