如果在Linux上安装了PostgreSQL,我想检查脚本并打印结果。 有关如何进行检查的任何建议?
答案 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可执行文件。
答案 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.conf
或postgresql.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)个版本,但是在许多情况下,您可能会拥有许多这样的子文件夹,因此拥有它们意味着所有这些版本都曾经存在过。已安装并且正在使用中...因此请注意此重要跟踪。
ps