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可执行文件.
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)
如果它是基于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)
没有直接的方法来做到这一点.您所能做的就是检查软件包管理器(rpm,dpkg)或探测所需文件的某些可能位置.或者您可以尝试连接到可能的端口(5432)并查看是否获得PostgreSQL协议响应.但这一切都不会非常强大.您可能想要查看您的要求.
没有一种简单的方法可以做到这一点,因为 PostgreSQL 可能以多种不同的方式安装和设置:
/optor /usr/local,手动启动或由 init 脚本启动rpm/deb软件包安装并通过初始化脚本启动rpm/deb软件包安装并通过 init 脚本启动PATH或默认端口上你可以不依赖于psql正对PATH。您不能依赖系统上只有一个psql(多个版本可能以不同的方式安装)。你不能基于端口来做,因为不能保证它在端口 5432 上,或者没有多个版本。
提示用户并询问他们。
小智 5
如果您正在运行 Debian Linux(或衍生版本)并且您有一个带有 的正返回> which psql,那么只需键入psql -V(大写“V”),您将得到如下返回:psql (PostgreSQL) 9.4.8
| 归档时间: |
|
| 查看次数: |
116801 次 |
| 最近记录: |