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

Nir*_*ond 48 linux postgresql shell

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

cam*_*mpo 71

尝试which命令怎么样?

如果您要运行which psql并且未安装Postgres,则似乎没有输出.您只需准备好终端提示符即可接受另一个命令:

> which psql
>
Run Code Online (Sandbox Code Playgroud)

但是如果安装了Postgres,你会得到一个回复​​,其中包含Postgres安装位置的路径:

> which psql
/opt/boxen/homebrew/bin/psql
Run Code Online (Sandbox Code Playgroud)

看着man which那里似乎还有一个可以帮助你的选择:

-s      No output, just return 0 if any of the executables are found, or
        1 if none are found.
Run Code Online (Sandbox Code Playgroud)

因此,只要您使用的任何脚本语言都可以执行终端命令,您可以发送which -s psql并使用返回值来确定是否已安装Postgres.从那里你可以打印出你喜欢的结果.

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

> which -s psql
> echo $?
0
Run Code Online (Sandbox Code Playgroud)

它告诉我该命令返回0,表明我的机器上找到了Postgres可执行文件.

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

  • 对我来说,唯一的选择是`-a`(打印每个参数的所有匹配路径名),如果我使用`-s`,则会导致非法选项. (2认同)
  • `which psql` 不会告诉您是否安装了 Postgres **服务器**。可以在没有服务器的情况下安装客户端包(psql) (2认同)

Cha*_*rma 17

我们可以简单地写:

psql --version
Run Code Online (Sandbox Code Playgroud)

输出显示如下:

psql (PostgreSQL) 11.5 (Ubuntu 11.5-1.pgdg18.04+1)
Run Code Online (Sandbox Code Playgroud)


Dra*_*ter 8

如果它是基于debian的.

aptitude show postgresql | grep State
Run Code Online (Sandbox Code Playgroud)

但我想你可以尝试用一些标志来启动它--version,只需打印一些信息并退出.

使用"service postgres status" 更新.尝试:

service postgres status
if [ "$?" -gt "0" ]; then
  echo "Not installed".
else
  echo "Intalled"
fi
Run Code Online (Sandbox Code Playgroud)


Pet*_*aut 5

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

  • 绝对正确。我已经从“茶壶”用户名下的源安装了PostgreSQL服务器,并将二进制/服务名更改为“ TeaPotSQL”。没有其他用户有权读取安装目录的目录。默认端口也已更改。去找到它:-) (2认同)

Cra*_*ger 5

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

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

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

提示用户并询问他们。


小智 5

如果您正在运行 Debian Linux(或衍生版本)并且您有一个带有 的正返回> which psql,那么只需键入psql -V(大写“V”),您将得到如下返回:psql (PostgreSQL) 9.4.8