Как я могу проверить, установлен ли 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 был найден на моей машине.
если он основан на 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
файлы.