如何通过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