Comment puis-je vérifier si PostgreSQL est installé ou non via Linux script?
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?
9 réponses
et la commande which
?
Si vous deviez exécuter which psql
et Postgres n'est pas installé, il ne semble pas sortie. Vous obtenez juste l'invite de terminal prêt à accepter une autre commande:
> which psql
>
Mais si Postgresql est installé, vous obtiendrez une réponse avec le chemin d'accès à l'emplacement de l'installer Postgres:
> which psql
/opt/boxen/homebrew/bin/psql
en regardant man which
il semble aussi 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.
donc il semble que tant que le langage de script que vous utilisez can 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 vous le souhaitez.
j'ai des postgres installés sur ma machine donc j'exécute ce qui suit
> which -s psql
> echo $?
0
qui me dit que la commande est revenue 0, indiquant que L'exécutable Postgres a été trouvé sur ma machine.
si elle est basée sur debian.
aptitude show postgresql | grep State
mais je suppose que vous pouvez juste essayer de le lancer avec un drapeau comme --version
, qui imprime simplement quelques informations et sorties.
mise à Jour à l'aide de "service postgres d'état". Essayez:
service postgres status
if [ "$?" -gt "0" ]; then
echo "Not installed".
else
echo "Intalled"
fi
Il n'y a pas de façon simple de le faire. Tout ce que vous pouvez faire est de vérifier avec le gestionnaire de paquets (rpm, dpkg) ou de sonder certains emplacements probables pour les fichiers que vous voulez. Ou vous pouvez essayer de vous connecter à un port probable (5432) et voir si vous obtenez une réponse de protocole PostgreSQL. Mais rien de tout cela va être très robuste. Vous pouvez examiner vos exigences.
il n'y a pas de façon simple de le faire, car PostgreSQL peut être installé et configuré de différentes façons:
- installé à partir de la source dans un répertoire d'utilisateurs
- installé à partir de la source dans
/opt
ou/usr/local
, démarré manuellement ou démarré par un script d'initialisation - Installé à partir de distributeur
rpm
/deb
packages et a commencé via le script d'initialisation - Installé à partir de la 3ème partie
rpm
/deb
packages et a commencé via le script d'initialisation - installé à partir de paquets mais Non réglé pour démarrer
- Client installé, se connectant à un serveur sur un autre ordinateur
- installé et en cours d'exécution, mais pas sur le port par défaut
PATH
ou "
Vous ne pouvez pas compter sur les psql
le PATH
. Vous ne pouvez pas compter sur l'existence d'un seul psql
sur le système (plusieurs versions peuvent être installées de différentes façons). Vous ne pouvez pas le faire basé sur le port, car il n'y a aucune garantie qu'il soit sur le port 5432, ou qu'il n'y ait pas de versions multiples.
invite l'utilisateur et lui demande.
si vous utilisez Debian Linux (ou dérivé) et si vous avez un retour positif avec > which psql
, tapez simplement psql -V
(capital" V") et vous obtiendrez un retour comme: psql (PostgreSQL) 9.4.8
aller dans le répertoire bin de Postgres db tels que /opt/postgresql/bin
& exécuter la commande:
[...bin]# ./psql --version
psql (PostgreSQL) 9.0.4
voilà . .
et si tout le reste échoue de ce grand choix de réponses, vous pouvez toujours utiliser" trouver " comme ceci. Ou vous pourriez avoir besoin d'utiliser sudo
si vous êtes root, tapez $$> find / -name 'postgres'
si vous êtes un utilisateur, vous aurez besoin de sudo priv's pour l'exécuter à travers tous les répertoires
Je l'exécute de cette façon, à partir de la base /
pour trouver le chemin entier dans lequel l'élément se trouve. Cela va retourner tous les fichiers ou répertoires avec le "postgres".
vous pouvez faire la même chose en cherchant les fichiers pg_hba.conf
ou postgresql.conf
.
aptitude show postgresql | grep Version
travaillé pour moi
vous pouvez également enregistrer /opt
montage dans le chemin suivant /opt/PostgresPlus/9.5AS/bin/