Je veux vérifier dans un script si PostgreSQL est installé ou non sur Linux et imprimer le résultat. Des suggestions sur la façon de faire la vérification?
Pourquoi ne pas essayer la commande which
?
Si vous exécutez which psql
et que Postgres n'est pas installé, il ne semble pas y avoir de sortie. Vous venez juste d'obtenir l'invite du terminal prête à accepter une autre commande:
> which psql
>
Mais si Postgres est installé, vous obtiendrez une réponse avec le chemin d'accès à l'emplacement d'installation de Postgres:
> which psql
/opt/boxen/homebrew/bin/psql
En regardant man which
, il semble également y avoir une option qui pourrait vous aider:
-s No output, just return 0 if any of the executables are found, or
1 if none are found.
Il semble donc que tant que le langage de script que vous utilisez peut exécuter une commande de terminal, vous pouvez envoyer which -s psql
et utiliser la valeur de retour pour déterminer si Postgres est installé. De là, vous pouvez imprimer ce résultat comme bon vous semble.
J'ai postgres installé sur ma machine, donc je lance le programme suivant
> which -s psql
> echo $?
0
qui me dit que la commande a retourné 0, indiquant que l'exécutable Postgres a été trouvé sur ma machine.
Si c'est basé sur Debian.
aptitude show postgresql | grep State
Mais je suppose que vous pouvez simplement essayer de le lancer avec un drapeau comme --version
, qui affiche simplement des informations et des sorties.
Mise à jour utilisant "service postgres status". Essayer:
service postgres status
if [ "$?" -gt "0" ]; then
echo "Not installed".
else
echo "Intalled"
fi
Il n'y a pas de moyen simple de faire cela. Tout ce que vous pouvez faire est de vérifier avec le gestionnaire de paquets (rpm, dpkg) ou de rechercher des emplacements probables pour les fichiers souhaités. Vous pouvez également essayer de vous connecter à un port probable (5432) et voir si vous obtenez une réponse au protocole PostgreSQL. Mais rien de tout cela ne va être très robuste. Vous voudrez peut-être revoir vos besoins.
Si vous utilisez Debian Linux (ou une version dérivée) et que vous avez un retour positif avec > which psql
, tapez simplement psql -V
("V" en majuscule) et vous obtiendrez un retour du type: psql (PostgreSQL) 9.4.8
.
Il n'y a pas de moyen simple et simple de le faire, car PostgreSQL peut être installé et configuré de différentes manières:
/opt
ou /usr/local
, démarré manuellement ou démarré par un script initrpm
/deb
et démarré via le script initrpm
/deb
tiers et démarré via le script initPATH
ou par défautVous ne pouvez pas compter sur psql
pour être sur la PATH
. Vous ne pouvez pas compter sur la présence d'une seule psql
sur le système (plusieurs versions peuvent être installées de différentes manières). Vous ne pouvez pas le faire sur le port, car rien ne garantit qu'il est sur le port 5432 ou qu'il n'y a pas plusieurs versions.
Demander à l'utilisateur et leur demander.
Et si tout le reste échoue à partir de ce grand choix de réponses, vous pouvez toujours utiliser "trouver" comme ceci. Ou vous devrez peut-être utiliser Sudo
Si vous êtes root, tapez simplement $$> find / -name 'postgres'
Si vous êtes un utilisateur, vous aurez besoin de Sudo priv pour l'exécuter dans tous les répertoires.
Je l’exécute de cette façon, à partir de la base /
pour trouver le chemin complet dans lequel se trouve l’élément. Cela renverra tous les fichiers ou répertoires contenant le "postgres".
Vous pouvez faire la même chose en recherchant les fichiers pg_hba.conf
ou postgresql.conf
également.
Accédez au répertoire bin de la base de données PostgreSQL tel que /opt/postgresql/bin
et exécuter ci-dessous la commande:
[...bin]# ./psql --version
psql (PostgreSQL) 9.0.4
Voici . .
aptitude show postgresql | grep Version
a travaillé pour moi
Pendant de nombreuses années, j'ai utilisé la commande:
ps aux | grep postgres
D'une part, il est utile (pour tout processus) et donne des informations utiles (mais à partir du processus POV). Mais d’autre part, c’est pour vérifier si le serveur que vous connaissez déjà installé est en cours d’exécution.
À un moment donné, j'ai trouvé ce tutoriel , où l'utilisation de la commande localiser est indiquée. Il semble que cette commande est beaucoup plus pertinente pour ce cas.
Vous pouvez également enregistrer /opt
mount dans le chemin suivant /opt/PostgresPlus/9.5AS/bin/