Как проверить статус службы 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, диагностировать сбои и настроить автоматическое восстановление работоспособности базы данных.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.