如何通过Linux脚本检查PostgreSQL是否安装?

问题描述 投票:0回答:14

我想检查 Linux 上是否安装了 PostgreSQL 并打印结果。 关于如何进行检查有什么建议吗?

linux postgresql shell
14个回答
138
投票

尝试使用

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 $?


41
投票

我们可以简单地写:

psql --version

输出显示如下:

psql (PostgreSQL) 11.5 (Ubuntu 11.5-1.pgdg18.04+1)

10
投票

如果是基于 Debian 的。

aptitude show postgresql | grep State

但我想你可以尝试使用像

--version
这样的标志来启动它,它只是打印一些信息并退出。

您可以检查该服务是否可用。尝试一下

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

或更广泛的 Linux 发行版

systemctl status postgresql
都可以使用。


6
投票

没有单一简单的方法可以做到这一点,因为 PostgreSQL 可能以多种不同的方式安装和设置:

  • 从用户主目录中的源代码安装
  • 从源安装到
    /opt
    /usr/local
    ,手动启动或通过初始化脚本启动
  • 从发行商
    rpm
    /
    deb
    软件包安装并通过 init 脚本启动
  • 从第 3 方
    rpm
    /
    deb
    软件包安装并通过 init 脚本启动
  • 从软件包安装,但设置为启动
  • 已安装客户端,正在连接到另一台计算机上的服务器
  • 已安装并正在运行,但不在默认
    PATH
    或默认端口

您不能依赖

psql
存在于
PATH
上。您不能依赖系统上只有一个
psql
(可能会以不同的方式安装多个版本)。您无法基于端口执行此操作,因为无法保证它位于端口 5432 上,或者不保证不存在多个版本。

提示用户并询问他们。


5
投票

没有直接的方法可以做到这一点。您所能做的就是检查软件包管理器(rpm、dpkg)或探测您想要的文件的一些可能位置。或者您可以尝试连接到可能的端口 (5432) 并查看是否收到 PostgreSQL 协议响应。但这些都不会非常稳健。您可能需要查看您的要求。


5
投票

如果您运行的是 Debian Linux(或衍生版本),并且您有一个带

> which psql
的正回报,那么只需输入
psql -V
(大写“V”),您将得到如下回报:
psql (PostgreSQL) 9.4.8


4
投票

如果这些绝佳答案的选择都失败了,你总是可以像这样使用“查找”。或者您可能需要使用 sudo

如果您是 root,只需输入

$$> find / -name 'postgres'

如果您是用户,则需要 sudo priv 才能在所有目录中运行它

我以这种方式运行它,从

/
基础查找元素所在的整个路径。这将返回其中包含“postgres”的任何文件或目录。

您也可以执行相同的操作来查找

pg_hba.conf
postgresql.conf
文件。


3
投票

多年来我一直使用命令:

ps aux | grep postgres

一方面它很有用(对于任何流程)并提供有用的信息(但来自流程 POV)。但另一方面,它是为了检查您知道的、已经安装的服务器是否正在运行。

在某个时候我发现了本教程,其中显示了locate命令的用法。看起来这个命令对于这种情况来说更切题。


2
投票

aptitude show postgresql | grep Version
为我工作


1
投票

转到 postgres db 的 bin 目录,例如

/opt/postgresql/bin
并运行以下命令:

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

psql (PostgreSQL) 9.0.4

给你。 .


1
投票

dpkg -l | grep postgres

运行上述命令,如果您得到如图所示的输出,那么它在您的系统上不存在

来源:-点击此处了解更多信息


0
投票

您也可以签入

/opt
安装在以下路径
/opt/PostgresPlus/9.5AS/bin/


0
投票

嗯,上面的所有答案都很好,但并非在所有情况下都是如此。

基本检查文件夹

/etc/postgresql/

在大多数情况下,会有一个子文件夹,例如。

/etc/postgresql/11/
(或
/etc/postgresql/12
)这意味着您已经安装了11(或12)版本,但是在许多情况下您可能有许多这样的子文件夹,因此拥有它们意味着所有这些版本都已安装并且可以在使用中......所以请注意这个重要的痕迹。

使用 Ubuntu 18.04


0
投票

转到窗口服务广告搜索 PostGreSQL。 在这里我发现

© www.soinside.com 2019 - 2024. All rights reserved.