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

时间:2011-04-27 11:25:08

标签: linux postgresql shell

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

12 个答案:

答案 0 :(得分:62)

尝试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可执行文件。

Here's the information about using echo $?

答案 1 :(得分:7)

如果它是基于debian的。

aptitude show postgresql | grep State

但我想你可以尝试使用--version这样的标志来启动它,它只是打印一些信息并退出。

使用“service postgres status”更新。尝试:

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

答案 2 :(得分:5)

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

答案 3 :(得分:4)

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

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

您不能依赖于psql上的PATH。您不能依赖系统上只有一个psql(可能以不同的方式安装多个版本)。你不能基于端口来做,因为不能保证它在端口5432上,或者没有多个版本。

提示用户并询问他们。

答案 4 :(得分:4)

如果您正在运行Debian Linux(或衍生产品)并且如果您使用> which psql获得正面回报,则只需键入psql -V(大写“V”),您将获得如下返回:{ {1}}

答案 5 :(得分:3)

如果其他所有答案都失败了,你可以随时使用“find”。或者您可能需要使用sudo

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

即可

如果您是用户,则需要sudo priv来运行所有目录

我以这种方式运行,从/基础找到找到该元素的整个路径。这将返回任何带有“postgres”的文件或目录。

你也可以做同样的事情来寻找pg_hba.confpostgresql.conf文件。

答案 6 :(得分:2)

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

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

psql (PostgreSQL) 9.0.4

你走了。

答案 7 :(得分:2)

aptitude show postgresql | grep Version为我工作

答案 8 :(得分:1)

我们可以简单地写:

psql --version

输出显示如下:

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

答案 9 :(得分:0)

您也可以在以下路径[{1}}

中签入/opt mount

答案 10 :(得分:0)

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

ps aux | grep postgres

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

我有时发现this tutorial,其中显示了 locate 命令的用法。在这种情况下,看起来该命令更重要了。

答案 11 :(得分:0)

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

基本上检查文件夹/etc/postgresql/

在大多数情况下,将存在一个子文件夹,例如。 /etc/postgresql/11/(或/etc/postgresql/12)意味着您已经安装了11(或12)个版本,但是在许多情况下,您可能会拥有许多这样的子文件夹,因此拥有它们意味着所有这些版本都曾经存在过。已安装并且正在使用中...因此请注意此重要跟踪。

使用Ubuntu 18.04的

ps