pg_ctl

Nom

pg_ctl -- lance, arrête ou relance le serveur PostgreSQL

Synopsis

pg_ctl start [-w] [-s] [-D répertoire_données] [-l nomfichier] [-o options] [-p chemin]
pg_ctl stop [-W] [-s] [-D répertoire_données] [-m s[mart] | f[ast] | i[mmediate] ]
pg_ctl restart [-w] [-s] [-D répertoire_données] [-m s[mart] | f[ast] | i[mmediate] ] [-o options]
pg_ctl reload [-s] [-D répertoire_données]
pg_ctl status [-D répertoire_données]

Description

pg_ctl est un outil de lancement, d'arrêt et de redémarrage du serveur PostgreSQL (postmaster). Il permet aussi d'afficher le statut d'un serveur en cours d'exécution. Bien que le serveur doive être lancé manuellement, pg_ctl encapsule les tâches comme la redirection des traces ou le détachement du groupe terminal et processus. Il fournit aussi des options intéressantes pour un arrêt contrôlé.

Dans le mode start, un nouveau serveur est lancé. Le serveur est lancé en tâche de fond et l'entrée standard est attachée à /dev/NULL. La sortie standard et la sortie d'erreurs standard sont soit envoyées dans un journal de traces (si l'option -l est utilisée) soit redirigées dans la sortie standard de pg_ctl (et non pas la sortie d'erreurs standard). Si aucun journal de traces n'est donné, la sortie standard de pg_ctl devrait être redirigée dans un fichier ou envoyée via un tube à un autre processus, par exemple un programme de rotation de journaux de trace, sinon postmaster écrira sa sortie dans le terminal de contrôle (à partir de l'arrière-plan) et ne laissera pas le groupe de processus du shell.

Dans le mode stop, le serveur en cours d'exécution dans le répertoire spécifié est arrêté. Trois méthodes différentes d'arrêt peuvent être choisies avec l'option -m : le mode << Smart >> attend la déconnexion de tous les clients. C'est la valeur par défaut. Le mode << Fast >> n'attend pas la déconnexion des clients. Toutes les transactions actives sont annulées et les clients sont forcés à se déconnecter. Le serveur est ensuite arrêté. Le mode << Immediate >> annulera tous les processus serveur sans un arrêt propre. Ceci amènera une tentative de récupération au prochain lancement.

Le mode restart exécute en fait un arrêt suivi d'un lancement. Ceci permet de modifier les options en ligne de commande de postmaster.

Le mode reload envoie simplement au processus postmaster un signal SIGHUP le faisant relire ses fichiers de configuration (postgresql.conf, pg_hba.conf, etc.). Ceci permet de modifier les options du fichier de configuration sans réclamer un redémarrage complet pour que les modifications soient prises en compte.

Le mode status vérifie si un serveur est toujours en cours d'exécution sur le répertoire de données spécifié. Si c'est le cas, le PID et les options en ligne de commande utilisées lors de son lancement sont affichés.

Options

-D répertoire_données

Spécifie l'emplacement des fichiers de la base de données sur le système de fichiers. Si c'est omis, la variable d'environnement PGDATA est utilisée.

-l nomfichier

Ajoute la sortie des traces du serveur dans nomfichier. Si le fichier n'existe pas, il est créé. L'umask est configuré à 077, donc l'accès au journal des traces à partir des autres utilisateurs est désactivé par défaut.

-m mode

Spécifie le mode d'arrêt. mode fait partie de smart, fast ou immediate, ou encore la première lettre d'un de ces trois-là.

-o options

Spécifie les options à passer directement à la commande postmaster.

Les options sont habituellement entourées par des guillemets simples ou doubles pour s'assurer qu'elles sont passées comme un groupe.

-p chemin

Spécifie l'emplacement de l'exécutable postmaster. Par défaut, l'exécutable postmaster est pris à partir du même répertoire que pg_ctl ou, si cela échoue, le répertoire d'installation codé en dur. Il n'est pas nécessaire d'utiliser cette option sauf si vous faites quelque chose d'inhabituel et obtenez des erreurs comme quoi l'exécutable postmaster serait introuvable.

-s

Affiche seulement les erreurs, pas les messages d'information.

-w

Attend la fin du lancement ou de l'arrêt. S'interrompt au bout de 60 secondes. Ceci est la valeur par défaut pour les arrêts. Un arrêt avec succès est indiqué par la suppression du fichier PID. Pour le lancement, un psql -l se terminant avec succès indique que tout va bien. pg_ctl tentera d'utiliser le bon port pour psql. Si la variable d'environnement PGPORT existe, elle est utilisée. Sinon, il verra si un port a été configuré dans le fichier postgresql.conf. Si aucun des deux n'est utilisé, il utilisera le port par défaut avec lequel PostgreSQL a été compilé (5432 par défaut).

-W

Ne pas attendre le lancement ou l'arrêt pour se terminer. Ceci est la valeur par défaut pour les lancements et redémarrages.

Environnement

PGDATA

Emplacement du répertoire des données par défaut.

PGPORT

Port par défaut pour psql (utilisé par l'option -w).

Pour les autres, voir postmaster.

Fichiers

postmaster.pid

Ce fichier dans le répertoire des données est utilisé pour aider pg_ctl à déterminer si le serveur est actuellement en cours d'exécution.

postmaster.opts.default

Si ce fichier existe dans le répertoire des données, pg_ctl (dans le mode start) passera le contenu du fichier comme options de la commande postmaster, sauf en cas de surcharge par l'option -o.

postmaster.opts

Si ce fichier existe dans le répertoire des données, pg_ctl (en mode restart) passera le contenu du fichier comme options de postmaster, sauf en cas de surcharge par l'option -o. Le contenu de ce fichier est aussi affiché dans le mode status.

postgresql.conf

Ce fichier, situé dans le répertoire des données, est analysé pour trouver le bon port à utiliser avec psql lorsque -w est donné en mode start.

Notes

Attendre le lancement complet n'est pas une opération bien définie et pourrait échouer si le contrôle d'accès est configuré pour qu'un client local ne puisse pas se connecter sans interaction manuelle (par exemple, une authentification par mot de passe).

Exemples

Lancer le serveur

Pour lancer un serveur :

$ pg_ctl start

Un exemple de lancement de serveur, bloquant tant que le serveur n'est pas complètement lancé :

$ pg_ctl -w start

Pour un serveur utilisant le port 5433 et s'exécutant sans fsync, utilisez :

$ pg_ctl -o "-F -p 5433" start

Arrêt du serveur

$ pg_ctl stop

arrête le serveur. Utiliser l'option -m vous permet de contrôler comment le serveur s'arrête.

Redémarrage du serveur

Relancer le serveur est pratiquement équivalent à l'arrêter puis à le relancer de nouveau sauf que pg_ctl sauvegarde et réutilise les options en ligne de commande qui ont été passées lors de la précédente instance. Pour relancer le serveur de la façon la plus simple, utilisez :

$ pg_ctl restart

Pour relancer le serveur, en attendant qu'il s'arrête puis qu'il se relance :

$ pg_ctl -w restart

Pour relancer en utilisant le port 5433 et en désactivant fsync après redémarrage :

$ pg_ctl -o "-F -p 5433" restart

Affichage de l'état du serveur

Voici un exemple de statut affiché à partir de pg_ctl :

$ pg_ctl status
pg_ctl: postmaster is running (pid: 13718)
Command line was:
/usr/local/pgsql/bin/postmaster '-D' '/usr/local/pgsql/data' '-p' '5433' '-B' '128'

Ceci est la ligne de commande qui pourrait être appelée en mode de redémarrage.

Voir aussi

postmaster