Я хочу проверить script, если PostgreSQL установлен или нет в Linux и распечатать результат. Любые предложения о том, как сделать чек?
Как я могу проверить, установлен ли PostgreSQL или нет через Linux script?
Ответ 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 был найден на моей машине.
Ответ 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/