簡體   English   中英

如何通過 Linux 腳本檢查是否安裝了 PostgreSQL?

[英]How can I check if PostgreSQL is installed or not via Linux script?

如果 Linux 上是否安裝了 PostgreSQL,我想檢查腳本並打印結果。 有關如何進行檢查的任何建議?

試試which命令怎么樣?

如果您要運行未安裝which psql和 Postgres,則似乎沒有 output。 您只需准備好終端提示符即可接受另一個命令:

> 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 可執行文件。

這是有關使用echo $?的信息

我們可以簡單地寫:

psql --version

output 顯示如下:

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

如果它是基於 debian 的。

aptitude show postgresql | grep State

但我想你可以嘗試使用像--version這樣的標志來啟動它,它只是打印一些信息並退出。

使用“服務 postgres 狀態”更新 嘗試:

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

沒有單一的簡單方法可以做到這一點,因為 PostgreSQL 可能以多種不同的方式安裝和設置:

  • 從源代碼安裝在用戶主目錄中
  • 從源安裝到/opt/usr/local ,手動啟動或由 init 腳本啟動
  • 從分發器rpm / deb包安裝並通過 init 腳本啟動
  • 從第 3 方rpm / deb包安裝並通過 init 腳本啟動
  • 從包安裝但未設置為啟動
  • 已安裝客戶端,連接到另一台計算機上的服務器
  • 已安裝並運行,但不在默認PATH或默認端口上

您不能依賴psqlPATH上。 您不能依賴系統上只有一個psql (可能以不同的方式安裝多個版本)。 你不能根據端口來做,因為不能保證它在端口 5432 上,或者沒有多個版本。

提示用戶並詢問他們。

沒有直接的方法可以做到這一點。 您所能做的就是檢查 package 管理器(rpm、dpkg)或探測您想要的文件的一些可能位置。 或者您可以嘗試連接到可能的端口 (5432) 並查看是否收到 PostgreSQL 協議響應。 但這一切都不會非常強大。 您可能想要查看您的要求。

如果從這些很好的答案選擇中其他一切都失敗了,你總是可以像這樣使用“find”。 或者您可能需要使用 sudo

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

如果您是用戶,則需要 sudo priv 才能在所有目錄中運行它

我以這種方式運行它,從/ base 找到元素所在的整個路徑。這將返回其中包含“postgres”的任何文件或目錄。

您也可以執行相同的操作來查找pg_hba.confpostgresql.conf文件。

如果您正在運行 Debian Linux (或派生類),並且如果您有一個帶有> which psql的正返回,那么只需輸入psql -V (大寫“V”),您將得到如下返回: psql (PostgreSQL) 9.4.8

Go 到 postgres db 的 bin 目錄,例如/opt/postgresql/bin並運行以下命令:

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

psql (PostgreSQL) 9.0.4

這里是 go。 .

aptitude show postgresql | grep Version aptitude show postgresql | grep Version對我有用

多年來,我使用了以下命令:

ps aux | grep postgres

一方面,它很有用(對於任何流程)並提供有用的信息(但來自流程 POV)。 但另一方面,它用於檢查您知道的、您已經安裝的服務器是否正在運行。

在某個時候,我找到了本教程,其中顯示了定位命令的用法。 看起來這個命令更適合這種情況。

您也可以在以下路徑/opt/PostgresPlus/9.5AS/bin/中簽入/opt mount

好吧,以上所有答案都很好,但並非在所有情況下都是如此。

基本上檢查文件夾/etc/postgresql/

在大多數情況下,會有一個子文件夾,例如。 /etc/postgresql/11/ (或/etc/postgresql/12 )這意味着您已經安裝了 11(或 12)版本,但是在許多情況下,您可能有許多這樣的子文件夾,因此擁有它們意味着所有這些版本曾經安裝過並且可能正在使用中......所以請注意這個重要的痕跡。

ps 使用 Ubuntu 18.04

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM