linux 查看pgsql端口,如何通过Linux脚本检查是否已安装PostgreSQL?

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

我想检入一个脚本,看看是否在Linux上安装了PostgreSQL并打印结果。有关如何进行检查的任何建议?

11个解决方案

70 votes

尝试echo $?命令怎么办?

如果要运行echo $?,但未安装Postgres,则似乎没有输出。 您只需准备好终端提示符即可接受另一个命令:

> which psql

>

但是,如果安装了Postgres,您将获得一个响应,并带有指向Postgres安装位置的路径:

> which psql

/opt/boxen/homebrew/bin/psql

查看echo $?,似乎还有一个可以帮助您的选择:

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

1 if none are found.

因此,似乎只要您使用的任何脚本语言都可以执行终端命令,您就可以发送echo $?,并使用返回值确定是否已安装Postgres。 从那里您可以按自己的喜好打印结果。

我的机器上确实安装了postgres,所以我运行以下命令

> which -s psql

> echo $?

0

告诉我该命令返回了0,表示在我的计算机上找到了Postgres可执行文件。

这是有关使用echo $?的信息

campo answered 2020-02-22T02:26:41Z

8 votes

如果是基于debian的。

aptitude show postgresql | grep State

但是我想您可以尝试使用诸如--version之类的标志启动它,该标志仅打印一些信息并退出。

使用“服务postgres状态”进行了更新。 尝试:

service postgres status

if [ "$?" -gt "0" ]; then

echo "Not installed".

else

echo "Intalled"

fi

Draco Ater answered 2020-02-22T02:27:09Z

5 votes

没有直接的方法可以做到这一点。 您所要做的就是与程序包管理器(rpm,dpkg)进行检查,或者探查所需文件的可能位置。 或者,您可以尝试连接到可能的端口(5432),看看是否收到PostgreSQL协议响应。 但是,这一切都不会非常强大。 您可能需要查看您的要求。

Peter Eisentraut answered 2020-02-22T02:27:30Z

4 votes

没有一种简单的方法可以执行此操作,因为PostgreSQL可以通过许多不同的方式进行安装和设置:

从源安装在用户主目录中

从源安装到psql或PATH中,手动启动或由init脚本启动

从分发服务器psql/PATH软件包安装并通过init脚本启动

从第3方psql/PATH软件包安装,并通过init脚本启动

从软件包安装但未设置为开始

已安装客户端,连接到另一台计算机上的服务器

已安装并正在运行,但不在默认的psql或默认端口上

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

提示用户并询问他们。

Craig Ringer answered 2020-02-22T02:28:32Z

4 votes

如果您运行的是Debian Linux(或衍生版本),并且如果返回正值> which psql,则只需键入psql -V(大写“ V”),您将得到如下收益:psql (PostgreSQL) 9.4.8

Roland Shield answered 2020-02-22T02:28:54Z

3 votes

而且,如果其他一切都因这些出色的答案而失败,那么您始终可以像这样使用“查找”。 否则您可能需要使用sudo

如果您是root用户,只需键入$$> find / -name 'postgres'

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

我以这种方式从pg_hba.conf基础运行,以找到在其中找到该元素的整个路径。这将返回其中带有“ postgres”的所有文件或目录。

寻找pg_hba.conf或275818855835055005500文件也可以做同样的事情。

netfluence answered 2020-02-22T02:29:32Z

2 votes

转到postgres db的bin目录,例如/opt/postgresql/bin并运行以下命令:

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

psql (PostgreSQL) 9.0.4

干得好 。 。

Finn answered 2020-02-22T02:29:56Z

2 votes

aptitude show postgresql | grep Version为我工作

user2584621 answered 2020-02-22T02:30:16Z

1 votes

我们可以简单地写:

psql --version

输出显示如下:

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

Chandan Sharma answered 2020-02-22T02:30:40Z

0 votes

您也可以在以下路径/opt/PostgresPlus/9.5AS/bin/中检入/opt安装

vinoy vincent answered 2020-02-22T02:31:01Z

0 votes

多年以来,我一直使用以下命令:

ps aux | grep postgres

一方面,它是有用的(对于任何过程),并且给出了有用的信息(但来自过程POV)。 但另一方面,它用于检查您已经安装的服务器是否正在运行。

在某种程度上,我找到了本教程,其中显示了locate命令的用法。 在这种情况下,看起来该命令更重要了。

johnniepop answered 2020-02-22T02:31:30Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值