Как проверить статус postgresql в linux
Перейти к содержимому

Как проверить статус postgresql в linux

  • автор:

PostgreSQL в Linux: рецепты популярных действий и решения проблем

PostgreSQL, как сказано на её официальном сайте, это самая продвинутая в мире реляционная база данных с открытым исходным кодом.

Использование PostgreSQL

Как запустить службу PostgreSQL. Как управлять службой PostgreSQL

Запуск службы PostgreSQL:

Остановка службы PostgreSQL:

Добавление службы PostgreSQL в автозагрузку:

Удаление службы PostgreSQL из автозагрузки:

Для просмотра состояния процесса PostgreSQL:

Альтернативный вариант запуска службы для работы с определённой базой данных следующий:

Как узнать, какая версия PostgreSQL запущена

Версию запущенной PostgreSQL не всегда можно определить по установленным пакетам. Например, во время обновления PostgreSQL на некоторых дистрибутивах не заменяет предыдущую версию, а устанавливает новую в дополнении к имеющейся. Иногда у пользователя в корпоративной среде есть доступ через Navicat или phpPgAdmin, но нет доступа к консоли сервера, на котором работает база данных.

Для определения версии сервера выполните команду:

Для определения версии клиента:

Ещё один вариант определения версии PostgreSQL:

Если вам нужен только номер версии (например, для скрипта), то используйте следующую команду:

Хотя вместо postgres можно использовать postmaster, использование postgres предпочтительнее, поскольку postmaster это устаревший псевдоним для postgres.

Если вы предпочитаете вариант с SQL, то подключитесь к интерактивному терминалу:

Также вам может пригодиться один из следующих вариантов

Как инициализировать базу данных PostgreSQL

Остановите службу, если она запущена:

Директория /var/lib/postgres/ должна принадлежать пользователю postgres:

Смените пользователя на postgres:

Выполните инициализацию БД:

Если вы столкнулись с ошибкой:

То найдите расположение файла initdb:

И укажите до него полный путь в команде инициализации:

Нажмите CTRL+D

Запустите службу PostgreSQL:

Создайте нового пользователя (например, user):

При желании, вы можете установить пароль для пользователя, это делается командой с ключом -W:

Создайте базу данных (например, my-first-db):

Как подключиться к локальному серверу PostgreSQL

Для подключения к интерактивному терминалу PostgreSQL используется команда psql.

Примеры синтаксиса команд:

Для psql требуется указать имя пользователя и если он не указан, то пересылается имя текущего пользователя системы, который скорее всего отсутствует в базе данных PostgreSQL, что вызывает ошибку. По умолчанию создаётся пользователь postgres, поэтому без дополнительной настройке вы можете подключиться к серверу PostgreSQL следующим образом:

Какой конфигурационный файл использует PostgreSQL

Конфигурационный файл PostgreSQL носит имя postgresql.conf.

В системе может быть несколько конфигурационных файлов PostgreSQL. Вы можете найти их командой:

Что особенно важно, systemd может использовать свои собственные конфигурационные файлы, например:

  • /usr/lib/systemd/system/postgresql@.service.d/kali_postgresql.conf (путь в Kali Linux)
  • /usr/lib/sysusers.d/postgresql.conf (путь в Arch Linux)

Если вы настраиваете PostgreSQL, но после перезапуска службы с помощью systemd (systemctl) изменения не применяются, возможно, вы просто редактируете неверный файл.

Также конфигурационный файл имеется в директории с базой данных, например:

  • /var/lib/postgres/data/postgresql.conf

С пакетом PostgreSQL могут поставляться образцы конфигурационных файлов, например:

  • /usr/share/postgresql/14/postgresql.conf.sample
  • /usr/share/postgresql/postgresql.conf.sample

Как обновить базу данных PostgreSQL при переходе на новую версию

Сообщение при обновлении пакетов Linux:

Оно означает, что в системе 2 установленные версии PostgreSQL:

  • postgresql-13
  • postgresql-14

Если запустить службу PostgreSQL командой:

И проверить версию командой:

То будет выведено следующее:

То есть по умолчанию используется 13, устаревшая версия.

Удаление старых версий пакетов, например, командой:

ситуацию не меняет. Если вам нужно перенести базы данных из устаревшей версии в новую, то верните устаревшие пакеты, если вы успели их удалить.

Последующие действия подразумевают, что вы

1) установили новую версию PostgreSQL, но ещё не использовали её, то есть не сохраняли базы данных, поскольку файлы новой версии будут удалены.

2) хотите перенести старые база данных в новый формат

С помощью следующей команды просмотрите доступные кластеры:

На скриншоте только один из них online (я успел удалить пакет postgresql-13), но у вас оба должны быть online, иначе перенос базы данных не удастся.

Пример правильного вывода:

Как можно увидеть, обе версии 13 и 14 в настоящее время установлены и запущены. Держите в уме, что при переносе старой базы данных в новый формат вам понадобиться двойной объём места на диске, поскольку pg_upgradecluster копирует данные.

Процедура обновления включает в себя следующее:

1. Удаляем данные новой версии:

2. Запускаем процедуру обновления кластера:

3. Когда операция будет завершена, дважды проверьте, что всё работает

4. Удалите старую версию

Это показывает суть обновления кластера. Конечно, в конкретной вашей ситуации могут быть нюансы: другие номера версий, либо другое расположение файлов с базами данных.

Вновь проверяем версию:

Теперь используется 14, то есть самая последняя версия.

В чём разница между postgres и psql

postgres

postgres — это сервер базы данных PostgreSQL. Чтобы клиентское приложение могло получить доступ к базе данных, оно подключается (по сети или локально) к работающему экземпляру postgres. Затем экземпляр postgres запускает отдельный серверный процесс для обработки соединения.

Один экземпляр postgres всегда управляет данными только одного кластера базы данных. Кластер базы данных — это набор баз данных, который хранится в общей папке файловой системы («область данных»). В системе может работать более одного экземпляра postgres одновременно, если они используют разные области данных и разные порты связи. Когда postgres запускается, ему необходимо знать расположение области данных. Местоположение должно быть указано параметром -D или переменной среды PGDATA; по умолчанию это значение не установлено. Обычно -D или PGDATA указывает непосредственно на каталог области данных, созданный initdb.

Чтобы запустить сервер в однопользовательском режиме, используйте такую команду, как

Чтобы запустить postgres в фоновом режиме со значениями по умолчанию, введите:

Чтобы запустить postgres с определенным портом, например, 1234:

Чтобы подключиться к этому серверу с помощью psql, укажите этот порт с параметром -p:

или установите переменную окружения PGPORT:

psql

psql — это интерфейс для PostgreSQL на основе терминала. Он позволяет вам вводить запросы в интерактивном режиме, отправлять их в PostgreSQL и просматривать результаты запросов. В качестве альтернативы ввод может быть из файла или из аргументов командной строки. Кроме того, psql предоставляет ряд мета-команд и различных функций, подобных оболочке, для облегчения написания сценариев и автоматизации широкого спектра задач.

Пример запуска psql:

Запуск psql от пользователя postgres, который создаётся по умолчанию:

Ошибки PostgreSQL

psql: error: не удалось подключиться к серверу: Нет такого файла или каталога

При попытке подключиться к серверу PostgreSQL или выполнить запрос на сервере PostgreSQL, например:

вы можете столкнуться с ошибкой:

В англоязычной версии эта ошибка выглядит так:

Эта ошибка означает, что служба PostgreSQL не запущена, для её запуска выполните команду:

Альтернативный вариант запуска службы следующий:

Другой возможной причиной ошибки может быть то, что psql ищет файл сокета в неверной директории: например, файл сокета помещён в /tmp, а psql ищет его в /run/postgresql/. В этом случае вы можете с помощью опции —host явно указать директорию, в которой находится сокет:

FATAL: не удалось создать файл блокировки "/run/postgresql/.s.PGSQL.5432.lock": Нет такого файла или каталога

При запуске системы БД, например, следующей командой:

Вы можете столкнуться с ошибкой:

В англоязычной версии ошибка выглядит так:

Причина ошибки в том, что не удалось создать файл блокировки в указанной директории. Путь директории может быть разным в различных дистрибутивах, например, /var/run/postgresql/ или как в сообщении выше /run/postgresql/. Вы можете разрешить проблему двумя способами:

  1. Создать данную директорию (если она отсутствует) и сделать её владельцем пользователя postgres
  2. Отредактировать конфигурационный файл так, чтобы служба пыталась создавать файл блокировки в директории /tmp, на которую у всех пользователей есть право записи

Первый вариант — создаём директорию /run/postgresql/ и назначаем её владельцем пользователя postgres:

Второй вариант — открываем конфигурационный файл postgresql.conf (у вас может быть другое расположение)

И добавляем туда следующую запись:

sudo: postgres: command not found

Если при использовании postgres вы столкнулись с ошибкой:

то у этой проблемы может быть две возможных причины:

1. Не установлен пакет postgresql.

Установите его одной из следующих команд.

В Debian, Kali Linux, Linux Mint, Ubuntu и их производных:

В Arch Linux, Manjaro, BlackArch и их производных:

2. Исполнимый файл postgres находится за пределами $PATH

Это необязательно говорит о проблеме — такой подход может использоваться для возможности иметь на одном компьютере сразу несколько серверов PostgreSQL.

Найдите исполнимый файл

Как можно видеть на скриншоте, исполнимый файл присутствует для двух версий сервера:

  • /usr/lib/postgresql/13/bin/postgres
  • /usr/lib/postgresql/14/bin/postgres

Теперь вместо postgres используйте полный путь в команде запуска, например:

psql: ошибка: ВАЖНО: роль "" не существует

При попытке запуска интерактивного терминала PostgreSQL

Вы можете столкнуться с ошибкой:

Имя пользователя может быть другим — там будет показано имя того пользователя, котоырй пытается выполнить вход.

В англоязычной версии ошибка выглядит так:

Для psql необходимо имя пользователя и если оно не указано явно, то передаётся имя пользователя системы. Но поскольку данный пользователь не существует на сервере PostgreSQL, то возникает указанная выше ошибка.

Вы можете создать пользователя с любы именем, как это показано выше и ошибка исчезнет.

По умолчанию присутствует пользователь postgres, поэтому вы можете подключиться от его имени:

Вы должны указать его расположение в параметре —config-file или -D, либо установить переменную окружения PGDATA

При запуске postgres вы можете столкнуться с ошибкой:

В англоязычной версии:

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

Конфигурационный файл называется postgresql.conf, но нужно указать не его, а директорию, в которой он содержится. Например:

initdb: command not found

Смотрите объяснение данной проблемы, а также дополнительные пути устранения в описании аналогичной ошибки: sudo: postgres: command not found

Найдите initdb с помощью:

  • /usr/lib/postgresql/13/bin/initdb
  • /usr/lib/postgresql/14/bin/initdb

И используйте в ваших командах абсолютный путь до файла initdb нужной вам версии, например:

How to check if a service that I don't know the name of is running on Ubuntu

I do not know the service’s name, but would like to stop the service by checking its status.

For example, if I want to check if the PostgreSQL service is running or not, but I don’t know the service’s name, then how could I check its status?

I know the command to check the status if the service name is known.

freethinker36's user avatar

abcd's user avatar

14 Answers 14

I don’t have an Ubuntu box, but on Red Hat Linux you can see all running services by running the following command:

On the list the + indicates the service is running, — indicates service is not running, ? indicates the service state cannot be determined.

For Ubuntu (checked with 12.04)

You can get list of all services and select by color one of them with ‘grep’:

Or you may use another way if you know correct name of service:

Maybe what you want is the ps command;

will show you all processes running. Then if you have an idea of what you’re looking for use grep to filter;

There is a simple way to verify if a service is running

Henry's user avatar

If you run the following command you will get a list of services:

To get a list of upstart jobs run this command:

Peter Mortensen's user avatar

You can use the below command to check the list of all services.

To check your own service:

Peter Mortensen's user avatar

the best way is using of nmap tool in terminal. nmap is an useful tool that analyse an up system, using it’s IP Address , then show all actived network services .

open terminal and use of this example :

BattleTested_закалённый в бою's user avatar

ps -ef | grep name-related-to-process

above command will give all the details like pid, start time about the process.

like if you want all java realted process give java or if you have name of process place the name

To check the status of a service on linux operating system :

To stop or start service

To get the list of all services along with PID :

You can use systemctl instead of directly calling service :

Dirty way to find running services. (sometime it is not accurate because some custom script doesn’t have |status| option)

Satish's user avatar

For centos, below command worked for me (:

/usr/lib/systemd/system/postgresql-9.3.service

Walk's user avatar

for Centos 6.10 : /sbin/service serviceNAME status

for Centos 7.6 and ubuntu 18.04: systemctl status NAME.service

works for all of them: service —status-all

Panagiotis Simakis's user avatar

Tia's user avatar

Based on this answer on a similar topic https://askubuntu.com/a/58406
I prefer: /etc/init.d/postgres status

if you are looking particularly for postgres there is a specific command called "pgrep" you can find the usage in the below mentioned article https://mydbanotebook.org/post/troubleshooting-01/

this article provides the following details: check if postgres server is running where does postgres store all the server config how to start/stop postgres

hope this is helpful

    The Overflow Blog
Linked
Related
Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.3.3.43278

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Управляем PostgreSQL, полезные команды

Управляем PostgreSQL, полезные команды 1

PostgreSQL — свободная объектно-реляционная система управления базами данных. Существует в реализациях для множества UNIX-подобных платформ.

Управление базами

Переключаемся на пользователя Postgres

Смотрим, список БД

Смотрим статус определенной БД

Запускаем определенную БД

Перезапустить определенную БД

Так же БД можно запустить через systemctl от пользователя с правами sudo

Либо запустить все базы на сервере

Создание, удаление базы

Переключаемся на пользователя Postgres

Создаем базу main (версия postgresql 15), не запуская БД

Создаем базу portal (версия postgresql 14) и запустить БД

Создаем базу main (версия postgresql 15), локализация ru_RU, запустить БД

Другие ключи создания БД

Обновление БД

Проверяем готовность СУБД к обновлению

Другие действия

Переключаемся на пользователя Postgres

Создаем файл pgpass, в котором хранятся пароли для подключения к БД

Переводим БД в режиме Replica в режим записи (Master)

У блога появился хостинг, его любезно предоставила компания Облакотека. Облакотека — облачные сервисы для создания и управления виртуальной ИТ-инфраструктурой.
Если вам понравился мой блог и вы хотели бы видеть на нем еще больше полезных статей, большая просьба поддержать этот ресурс.

Если вы размещаете материалы этого сайта в своем блоге, соц. сетях, и т.д., убедительная просьба публиковать обратную ссылку на оригинал

Похожие записи

[РЕШЕНО] Failed to connect to lvmetad. Falling back to device scanning

[РЕШЕНО] Failed to connect to lvmetad. Falling back to device scanning

При добавлении LVM-раздела в Debian 9, после перезагрузки ОС не смогла штатно загрузиться Что бы ОС загружалась штатно, отредактируем файл /etc/lvm/lvm.conf Обновим initramfs для текущего ядра ОС (от root-пользователя) и перезагрузимся

[РЕШЕНО] GPT структура разделов при авто установке (preseed) Debian 11 / Debian 10

[РЕШЕНО] GPT структура разделов при авто установке (preseed) Debian 11 / Debian 10

GPT — более новая и продвинутая структура разделов. При использовании MS-DOS partition table (MBR) на жёстком диске может быть сформировано 3 основных раздела (primary) и один дополнительный (extended). Загружаться можно только в режиме эмуляции BIOS. Ограничение на емкость диска 2 Tb. При использовании GUID partition table (GPT) на жёстком диске может быть сформировано 128 разделов,…

Установка ITSM-системы Snipe-IT + NGINX + Percona на Centos 7

Установка ITSM-системы Snipe-IT + NGINX + Percona на Centos 7

Snipe-IT – open source, кроссплатформенная, многофункциональная система управления ИТ-активами с открытым исходным кодом, построенная с использованием PHP-фреймворка Laravel. Подготовка Обновляем операционную систему, добавляем репозиторий EPEL, устанавливаем софт Установка и настройка PHP 7.4 Установим yum-utils для инструмента yum-config-manager Включаем remi-репозиторий для установки php 7.4 Устанавливаем php 7.4 и некоторые компоненты Меняем настройки в конфигурационных файлах Добавляем…

Настройка нескольких подключений (peer) к Wireguard серверу

Настройка нескольких подключений (peer) к Wireguard серверу

WireGuard – это протокол связи и бесплатное программное обеспечение с открытым исходным кодом, реализующее зашифрованные виртуальные частные сети, и был разработан с учетом простоты использования, высокой производительности и низкой поверхности для атак. Устанавливаем Wireguard на каждую машину (см. в одной из предыдущих статей) На каждой машине необходимо сгенерить пару ключей (от пользователя root): публичный и…

Как установить Thunderbird 60 в Ubuntu 18.04

Как установить Thunderbird 60 в Ubuntu 18.04

Установка Thunderbird из репозитория Добавим репозиторий. Откройте терминал (Ctrl+Alt+T) и выполните команду Синхронизируем индексные файловые пакеты с источниками Установим Thunderbird Если в системе до этого был установлен Thunderbird, то вместо предыдущей команды можно выполнить Удаление Thunderbird Для удаления Notepadqq откройте терминал (Ctrl+Alt+T) и выполните команду

Защита Web-сервера с помощью UFW, WireGuard и Dnsmasq в Debian 11

Защита Web-сервера с помощью UFW, WireGuard и Dnsmasq в Debian 11

UFW (Uncomplicated Firewall) — это утилита для конфигурирования межсетевого экрана Netfilter. Она использует интерфейс командной строки, состоящий из небольшого числа простых команд. В статье рассмотрен один из вариантов защиты Web севера, который показался мне интересным Принцип действия следующий: Установка и настройка WireGuard Устанавливаем дистрибутив и генерим пару ключей Редактируем конфиг wireguard Запускаем сервис и добавляем…

Check PostgreSQL Service Status

This article will show some alternative or the way to check whether the PostgreSQL service in a host, server or workstation is actually active or not.

It is an important thing to do before any other things can be done especially connecting to PostgreSQL Database Server on the machine either locally or remotely.

By detecting whether the status of the service is actually active or not, it doesn’t take any longer just to spend and wasting time whether the connection to the PostgreSQL Database server can be initiated or not.

First of all, check whether PostgreSQL Database Server has already installed or not. It is important but this step can be skipped if it has already ensured that it really has. Be sure to check it and in Ubuntu Linux operating system, it can be done by using ‘apt’ command which can be read in the article about ‘List Installed Program in Ubuntu Linux using apt command’, if the operating system used is Ubuntu or any variant of Debian operating system distribution.

After that, in order to check the service whether it is active or not, it is important to know the service name which represents PostgreSQL Database Server. It can be done in several Linux operating system distribution by checking the service configuration file which is normally located in /etc depends on the Linux variant used. Type the following command to do that :

If PostgreSQL database server has already installed and it is configured to listen and handle request in port 5432, below is the possible outcome which is going to be shown by executing the above command in the bash prompt terminal :

It is understandable from the output shown above where the service name is ‘postgresql’. The next thing to do is checking whether that service name called ‘postgresql’ is active or at least the port which is assigned to the service is active and listening for processing request.

This is how to check whether the service is active or not :

This is when it is executed in the bash prompt terminal and turned out the service is active :

The other thing which is an alternative way to do it is by checking whether a specific port assigned for service relates to PostgreSQL Database Server is actively listening or not by executing the following command :

The possible outcome if the PostgreSQL Database Server is running and it is configured to listen incoming request in port 5432 is shown below :

It is stated by the output above that in there is an open port which is listen for incoming request in localhost at port 5432.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *