web-dev-qa-db-ja.com

Linuxスクリプトを使用してPostgreSQLがインストールされているかどうかを確認するにはどうすればよいですか?

PostgreSQLがLinuxにインストールされているかどうかをスクリプトでチェックインし、結果を出力したい。チェックの方法に関する提案はありますか?

45

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実行可能ファイルが私のマシンで見つかったことを示しています。

これはecho $?の使用に関する情報です

66
campo

Debianベースの場合。

aptitude show postgresql | grep State

しかし、単に情報を出力して終了する--versionのようなフラグを付けて起動することを試みることができると思います。

更新「service postgres status」を使用。試してください:

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

これを行う簡単な方法はありません。できることは、パッケージマネージャー(rpm、dpkg)で確認するか、必要なファイルの場所を調査することだけです。または、可能性のあるポート(5432)に接続して、PostgreSQLプロトコル応答を受信するかどうかを確認できます。しかし、これはどれも非常に堅牢にはなりません。要件を確認することをお勧めします。

5

Debian Linux(または派生物)を実行していて、> which psqlでポジティブなリターンがある場合、単にpsql -V(大文字の「V」)と入力すると、psql (PostgreSQL) 9.4.8

4
Roland Shield

PostgreSQLのインストールとセットアップはさまざまな方法で行われる可能性があるため、簡単な方法はありません。

  • ソースからユーザーのホームディレクトリにインストール
  • ソースから/optまたは/usr/localにインストールされ、手動で開始されるか、initスクリプトによって開始されます
  • ディストリビューターrpm/debパッケージからインストールされ、initスクリプト経由で開始
  • サードパーティのrpm/debパッケージからインストールされ、initスクリプト経由で開始
  • パッケージからインストールされますが、not startに設定されます
  • クライアントがインストールされ、別のコンピューター上のサーバーに接続している
  • インストールされ、実行されていますが、デフォルトのPATHまたはデフォルトのポートにはありません

psqlPATHにあることに依存することはできません。システムにpsqlが1つしかないことに依存することはできません(複数のバージョンが異なる方法でインストールされる可能性があります)。ポート5432にあること、または複数のバージョンがないことの保証がないため、ポートに基づいて実行することはできません。

ユーザーにプロンプ​​トを表示して尋ねます。

4
Craig Ringer

そして、これらの素晴らしい選択肢から他のすべてが失敗した場合、いつでもこのような「検索」を使用できます。または、Sudoを使用する必要がある場合があります

ルートの場合は、$$> find / -name 'postgres'と入力するだけです

あなたがユーザーである場合、すべてのディレクトリを介して実行するには、Sudo privが必要です。

この方法で/ベースから実行して、要素が見つかったパス全体を見つけます。これにより、「postgres」が含まれるファイルまたはディレクトリが返されます。

pg_hba.confまたはpostgresql.confファイルを探しても同じことができます。

3
netfluence

aptitude show postgresql | grep Version私のために働いた

2
user2584621

/opt/postgresql/binなどのpostgres dbのbinディレクトリに移動し、以下のコマンドを実行します。

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

psql (PostgreSQL) 9.0.4

どうぞ 。 。

2
Finn

長年、私は次のコマンドを使用しました。

ps aux | grep postgres

一方では(すべてのプロセスで)有用であり、有用な情報を提供します(ただし、プロセスPOVから)。ただし、一方で、インストール済みの既知のサーバーが実行されているかどうかを確認するためのものです。

ある時点で このチュートリアル が見つかりました。ここでは、locateコマンドの使用方法が示されています。この場合、このコマンドはかなり重要なようです。

0
johnniepop

また、/opt次のパスにマウント/opt/PostgresPlus/9.5AS/bin/

0
vinoy vincent