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

Я хочу проверить скрипт, установлен ли PostgreSQL или нет в Linux, и распечатать результат. Есть предложения, как сделать проверку?

9 ответов


как насчет попробовать ?

если бы вы побежали 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 $?


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

aptitude show postgresql | grep State

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

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

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

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


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

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

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

подскажите пользователю и спросите их.


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


перейдите в каталог bin БД postgres, например /opt/postgresql/bin и запустить следующую команду :

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

psql (PostgreSQL) 9.0.4

вот вы идете . .


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

если вы корень, просто введите $$> find / -name 'postgres'

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

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

вы мог бы сделать то же самое, глядя на pg_hba.conf или postgresql.conf файлы.


aptitude show postgresql | grep Version работал для меня


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