[英]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 可執行文件。
我們可以簡單地寫:
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 腳本啟動rpm
/ deb
包安裝並通過 init 腳本啟動PATH
或默認端口上您不能依賴psql
在PATH
上。 您不能依賴系統上只有一個psql
(可能以不同的方式安裝多個版本)。 你不能根據端口來做,因為不能保證它在端口 5432 上,或者沒有多個版本。
提示用戶並詢問他們。
沒有直接的方法可以做到這一點。 您所能做的就是檢查 package 管理器(rpm、dpkg)或探測您想要的文件的一些可能位置。 或者您可以嘗試連接到可能的端口 (5432) 並查看是否收到 PostgreSQL 協議響應。 但這一切都不會非常強大。 您可能想要查看您的要求。
如果從這些很好的答案選擇中其他一切都失敗了,你總是可以像這樣使用“find”。 或者您可能需要使用 sudo
如果您是 root,只需鍵入$$> find / -name 'postgres'
如果您是用戶,則需要 sudo priv 才能在所有目錄中運行它
我以這種方式運行它,從/
base 找到元素所在的整個路徑。這將返回其中包含“postgres”的任何文件或目錄。
您也可以執行相同的操作來查找pg_hba.conf
或postgresql.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.