Подтвердить что ты не робот

Как я могу проверить, установлен ли PostgreSQL или нет через Linux script?

Я хочу проверить script, если PostgreSQL установлен или нет в Linux и распечатать результат. Любые предложения о том, как сделать чек?

4b9b3361

Ответ 1

Как насчет команды which?

Если вы должны были запустить which psql, а Postgres не будет установлен, выход не будет. Вы просто получите приглашение терминала, чтобы принять другую команду:

> which psql
>

Но если Postgres установлен, вы получите ответ с указанием пути к установке Postgres:

> which psql
/opt/boxen/homebrew/bin/psql

Глядя на man which, также появляется опция, которая может помочь вам:

-s      No output, just return 0 if any of the executables are found, or
        1 if none are found.

Итак, похоже, что любой язык сценариев, который вы используете, может выполнять команду терминала, которую вы могли бы отправить which -s psql, и использовать возвращаемое значение, чтобы определить, установлен ли Postgres. Оттуда вы можете напечатать этот результат, как вам нравится.

У меня есть postgres, установленные на моей машине, поэтому я запускаю следующие

> which -s psql
> echo $?
0

который сообщает мне, что команда вернула 0, указав, что исполняемый файл Postgres был найден на моей машине.

Здесь информация об использовании echo $?

Ответ 2

Если он основан на debian.

aptitude show postgresql | grep State

Но я думаю, вы можете просто запустить его с помощью некоторого флага типа --version, который просто печатает некоторую информацию и выходы.

Обновлено, используя статус службы postgres. Попробуйте:

service postgres status
if [ "$?" -gt "0" ]; then
  echo "Not installed".
else
  echo "Intalled"
fi

Ответ 3

Нет простого способа сделать это. Все, что вы можете сделать, это проверить с менеджером пакетов (rpm, dpkg) или проверить некоторые вероятные местоположения для файлов, которые вы хотите. Или вы можете попытаться подключиться к вероятному порту (5432) и посмотреть, получаете ли вы ответ протокола PostgreSQL. Но ничто из этого не будет очень надежным. Вы можете просмотреть свои требования.

Ответ 4

Нет простого способа сделать это, поскольку PostgreSQL может быть установлен и настроен различными способами:

  • Установлен из исходного кода в домашнем каталоге пользователя
  • Установлен из источника в /opt или /usr/local, вручную запущен или запущен init script
  • Установлен из пакетов дистрибьюторов rpm/deb и запущен через init script
  • Установлен из сторонних пакетов rpm/deb и запущен через init script
  • Установлен из пакетов, но не установлен для запуска
  • Клиент установлен, подключается к серверу на другом компьютере.
  • Установлен и запущен, но не включен по умолчанию PATH или порт по умолчанию

Вы не можете полагаться на psql на PATH. Вы не можете полагаться на то, что в системе есть только один psql (несколько версий могут быть установлены по-разному). Вы не можете сделать это на основе порта, так как нет гарантии на порт 5432 или что не существует нескольких версий.

Запросить пользователя и спросить его.

Ответ 5

Если вы используете Debian Linux (или производную), и если у вас есть postive return с > which psql, просто введите psql -V (capital "V" ), и вы получите возврат как: psql (PostgreSQL) 9.4.8

Ответ 6

Перейдите в каталог bin postgres db, например /opt/postgresql/bin, и запустите команду ниже:

[...bin]# ./psql --version

psql (PostgreSQL) 9.0.4

Здесь вы идете..

Ответ 7

И если все остальное не справится с этим большим выбором ответов, вы всегда можете использовать "найти", как это. Или вам может понадобиться использовать sudo

Если вы являетесь пользователем root, просто введите $$> find / -name 'postgres'

Если вы пользователь, вам понадобится sudo priv, чтобы запустить его через все каталоги.

Я запускаю его таким образом из базы /, чтобы найти весь путь, в котором находится элемент. Это вернет в него любые файлы или каталоги с "postgres".

Вы можете сделать то же самое, что и файлы pg_hba.conf или postgresql.conf.

Ответ 8

Вы также можете проверить монтировку /opt в следующем пути /opt/PostgresPlus/9.5AS/bin/