PostgreSQLがLinuxにインストールされているかどうかをスクリプトでチェックインし、結果を出力したい。チェックの方法に関する提案はありますか?
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実行可能ファイルが私のマシンで見つかったことを示しています。
Debianベースの場合。
aptitude show postgresql | grep State
しかし、単に情報を出力して終了する--version
のようなフラグを付けて起動することを試みることができると思います。
更新「service postgres status」を使用。試してください:
service postgres status
if [ "$?" -gt "0" ]; then
echo "Not installed".
else
echo "Intalled"
fi
これを行う簡単な方法はありません。できることは、パッケージマネージャー(rpm、dpkg)で確認するか、必要なファイルの場所を調査することだけです。または、可能性のあるポート(5432)に接続して、PostgreSQLプロトコル応答を受信するかどうかを確認できます。しかし、これはどれも非常に堅牢にはなりません。要件を確認することをお勧めします。
Debian Linux(または派生物)を実行していて、> which psql
でポジティブなリターンがある場合、単にpsql -V
(大文字の「V」)と入力すると、psql (PostgreSQL) 9.4.8
PostgreSQLのインストールとセットアップはさまざまな方法で行われる可能性があるため、簡単な方法はありません。
/opt
または/usr/local
にインストールされ、手動で開始されるか、initスクリプトによって開始されますrpm
/deb
パッケージからインストールされ、initスクリプト経由で開始rpm
/deb
パッケージからインストールされ、initスクリプト経由で開始PATH
またはデフォルトのポートにはありませんpsql
がPATH
にあることに依存することはできません。システムにpsql
が1つしかないことに依存することはできません(複数のバージョンが異なる方法でインストールされる可能性があります)。ポート5432にあること、または複数のバージョンがないことの保証がないため、ポートに基づいて実行することはできません。
ユーザーにプロンプトを表示して尋ねます。
そして、これらの素晴らしい選択肢から他のすべてが失敗した場合、いつでもこのような「検索」を使用できます。または、Sudoを使用する必要がある場合があります
ルートの場合は、$$> find / -name 'postgres'
と入力するだけです
あなたがユーザーである場合、すべてのディレクトリを介して実行するには、Sudo privが必要です。
この方法で/
ベースから実行して、要素が見つかったパス全体を見つけます。これにより、「postgres」が含まれるファイルまたはディレクトリが返されます。
pg_hba.conf
またはpostgresql.conf
ファイルを探しても同じことができます。
aptitude show postgresql | grep Version
私のために働いた
/opt/postgresql/bin
などのpostgres dbのbinディレクトリに移動し、以下のコマンドを実行します。
[...bin]# ./psql --version
psql (PostgreSQL) 9.0.4
どうぞ 。 。
長年、私は次のコマンドを使用しました。
ps aux | grep postgres
一方では(すべてのプロセスで)有用であり、有用な情報を提供します(ただし、プロセスPOVから)。ただし、一方で、インストール済みの既知のサーバーが実行されているかどうかを確認するためのものです。
ある時点で このチュートリアル が見つかりました。ここでは、locateコマンドの使用方法が示されています。この場合、このコマンドはかなり重要なようです。
また、/opt
次のパスにマウント/opt/PostgresPlus/9.5AS/bin/