pg_ctl
pg_ctl — démarrer, arrêter ou redémarrer 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
]
pg_ctl kill [
nom_signal
] [
id_processus
]
pg_ctl register [-N
nom_service
] [-U
nom_utilisateur
] [-P
mot_de_passe
] [-D
répertoire_données
] [-w] [-o
options
]
pg_ctl unregister [-N
nom_service
]
Description
pg_ctl est un outil de démarrage,
d'arrêt et de redémarrage du serveur PostgreSQL™ (
postgres
(1)). Il permet également
d'afficher le statut d'un serveur en cours d'exécution. Bien que le
serveur puisse être démarré manuellement, pg_ctl encapsule les tâches comme la
redirection des traces ou le détachement du terminal et du groupe
de processus. Il fournit également des options intéressantes pour
l'arrêt contrôlé.
Dans le mode start, un nouveau serveur est
démarré. Le serveur est démarré 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 vers la sortie standard de
pg_ctl (et non pas la sortie
d'erreurs standard). Si aucun journal de traces n'est précisé, la
sortie standard de pg_ctl devrait
être redirigée vers un fichier ou envoyée via un tube à un autre
processus, par exemple un programme de rotation des journaux, comme
rotatelogs ; dans le cas contraire
postgres
écrit sa
sortie sur le terminal de contrôle (à partir de l'arrière-plan) et
ne se détache pas du 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
contraints de se déconnecter. Le serveur est ensuite arrêté. Le
mode « Immediate » tue tous
les processus serveurs sans leur laisser la possibilité de faire un
arrêt propre. Cela conduit à une tentative de récupération au
redémarrage.
Le mode restart exécute en fait un arrêt
suivi d'un démarrage. Ceci permet de modifier les options en ligne
de commande de
postgres
.
Le mode reload envoie simplement au
processus
postgres
un
signal SIGHUP. Le processus relit alors
ses fichiers de configuration (postgresql.conf, pg_hba.conf, etc.). Cela permet de modifier les
options des fichiers de configuration sans qu'il soit nécessaire
d'effectuer 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 démarrage sont affichés.
Le mode kill permet d'envoyer un signal à
un processus spécifique. Ceci est particulièrement utile pour
Microsoft Windows™, qui ne
possède pas de commande kill.
--help permet d'afficher la liste des noms
de signaux supportés.
Le mode register permet d'enregistrer un
service système sur Microsoft
Windows™.
Le mode unregister permet, sur Microsoft Windows™, d'annuler un service
système précédemment enregistré avec la commande register.
Options
-
-D
répertoire_données
-
Indique l'emplacement des fichiers de la base de données sur
le système de fichiers. Si cette option est omise, 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 est, par défaut, interdit aux autres
utilisateurs.
-
-m
mode
-
Précise le mode d'arrêt.
mode
est smart, fast ou
immediate, ou encore la première
lettre d'un de ceux-là.
-
-o
options
-
Indique les options à passer directement à la commande
postgres
.
Les options sont habituellement entourées par des guillemets
simples ou doubles pour être sûr qu'elles soient passées
groupées.
-
-p
chemin
-
Indique l'emplacement de l'exécutable postgres. Par défaut, l'exécutable postgres est pris à partir du même répertoire
que
pg_ctl
ou,
si cela échoue, à partir du répertoire d'installation codé en
dur. Il n'est pas nécessaire d'utiliser cette option sauf cas
inhabituel, comme lorsque des erreurs concernant
l'impossibilité de trouver l'exécutable postgres apparaissent.
-
-s
-
Affichage des seules erreurs, pas de messages d'information.
-
-w
-
Attendre la fin du démarrage ou de l'arrêt. S'interrompt au
bout de 60 secondes. C'est la valeur par défaut pour les
arrêts. Un arrêt réussi est indiqué par la suppression du
fichier PID. Pour le
démarrage, un
psql
-l
se terminant avec succès indique que tout
va bien.
pg_ctl
tente d'utiliser le bon port pour psql. Si la variable d'environnement
PGPORT existe, elle est utilisée.
Sinon, un port configuré dans le fichier postgresql.conf est cherché. Si aucun des
deux n'est utilisé, le port par défaut avec lequel
PostgreSQL™ a été
compilé (5432 par défaut) est utilisé. Lorsqu'il attend,
pg_ctl
renvoie
un code de sortie précis fondé sur le succès du démarrage ou
de l'arrêt.
-
-W
-
Ne pas attendre la fin du démarrage ou de l'arrêt. C'est la
valeur par défaut pour les démarrages et redémarrages.
Options Windows
-
-N
nom_service
-
Nom du service système à enregistrer. Le nom est utilisé à
la fois comme nom de service et comme nom affiché.
-
-P
mot_de_passe
-
Mot de passe de l'utilisateur qui démarre le service.
-
-U
nom_utilisateur
-
Nom de l'utilisateur qui démarre le service. Pour les
utilisateurs identifiés sur un domaine, on utilise le
format DOMAIN\nom_utilisateur.
Environnement
-
PGDATA
-
Emplacement par défaut du répertoire des données.
-
PGPORT
-
Port par défaut pour
psql(1)
(utilisé par l'option -w).
Pour les autres paramètres serveur, voir
postgres
(1). Cet outil, comme la
plupart des autres outils PostgreSQL™, utilise aussi les variables
d'environnement supportées par la bibliothèque libpq (voir Section 29.12,
« Variables d'environnement »).
Fichiers
-
postmaster.pid
-
Ce fichier, situé 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) passe le contenu du fichier
comme options de la commande
postgres
, 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) passe le contenu du fichier comme
options de postgres, sauf en
cas de surcharge par l'option -o.
-
postgresql.conf
-
Ce fichier, situé dans le répertoire des données, est analysé
pour trouver le port à utiliser avec psql lorsque -w
est donné en mode start.
Notes
Attendre le démarrage complet n'est pas une opération bien définie
et peut é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
Démarrer un serveur :
$ pg_ctl start
Démarrer un serveur, avec blocage tant que le serveur n'est pas
complètement démarré :
$ pg_ctl -w start
Pour un serveur utilisant le port 5433 et s'exécutant sans
fsync, on utilise :
$ pg_ctl -o "-F -p 5433" start
Arrêt du serveur
$ pg_ctl stop
arrête le serveur. Utiliser l'option -m
permet de contrôler
comment
le serveur s'arrête.
Redémarrage du serveur
Redémarrer le serveur est pratiquement équivalent à l'arrêter
puis à le démarrer à nouveau si ce n'est que
pg_ctl
sauvegarde et réutilise
les options en ligne de commande qui étaient passées à l'instance
précédente. Pour redémarrer le serveur de la façon la plus
simple, on utilise :
$ pg_ctl restart
Redémarrer le serveur, en attendant l'arrêt et le redémarrage :
$ pg_ctl -w restart
Redémarrer 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: server is running (pid: 13718)
Command line was:
/usr/local/pgsql/bin/postgres '-D' '/usr/local/pgsql/data' '-p' '5433' '-B' '128'
C'est la ligne de commande qui sera appelée en mode redémarrage.