pg_ctl

Name

pg_ctl -- Démarre, arrête ou redémarre un serveur PostgreSQL

Synopsis

pg_ctl start [-w] [-s] [-D datadir] [-l filename] [-o options] [-p path]
pg_ctl stop [-W] [-s] [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ]
pg_ctl restart [-w] [-s] [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-o options]
pg_ctl reload [-s] [-D datadir]
pg_ctl status [-D datadir]

Description

pg_ctl est un utilitaire pour démarrer, arrêter ou redémarrer postmaster(1), le serveur PostgreSQL, ou afficher les status du postmaster qui tourne. Bien que le postmaster puisse être démarré manuellement, pg_ctl encapsule les tâches comme la redirection des sorties log, les détachant du terminal et du groupe processus, et fournit des options pratiques pour le contrôle d'arrêt.

En mode démarrage, un nouveau postmaster est lancé. Le serveur est démarré en arrière-plan, l'entrée standard attachée au /dev/null. La sortie standard et l'erreur standard sont soit jointes à un fichier de log, si l'option -l est utilisée, soit redirigées vers la sortie standard pg_ctl (pas l'erreur standard). Si aucun fichier log n'est choisi, la sortie standard de pg_ctl sera redirigée vers un fichier ou placée en pipe vers un autres processus, par exemple un programme de rotation de logs, sinon le postmaster écrira ses sorties sur le terminal de contrôle (depuis l'arrière-plan) et ne quittera pas le groupe processus du shell.

En mode arrêt, le postmaster qui tourne dans le répertoire spécifié est arrêté. Trois différentes méthodes d'arrêt peuvent être sélectionnées avec l'option -m : le mode "Smart" attend tous les clients pour déconnecter. C'est la procédure par défaut. Le mode "Fast" n'attend pas les clients pour déconnecter. Toutes les transactions actives sont stoppées et les clients sont déconnectés de force, ensuite la base est arrêtée. Le mode "Immediate" stoppera tous les processus serveur sans faire d'arrêt propre. Ceci conduira à lancer un recovery au redémarrage.

Le mode restart exécute un stop suivit d'un démarrage. Ceci permet le changement d'options du postmaster en ligne de commande.

Le mode reload envoit simplement un signal SIGHUP au postmaster, ce qui rpovoque la relecture des fichiers de configuration (postgresql.conf, pg_hba.conf, etc.). Ceci permet le changement des options de configuration qui ne nécessitent pas un redémarrage complet pour prendre effet.

Le mode status vérifie si un postmaster tourne et fournit ainsi le PID et les options en ligne de commande qui ont été utilisées pour l'invoquer.

Options

-D datadir

Spécifie la localisation des fichiers de la base. Si c'est omis, la variable d'environnement PGDATA est utilisée.

-l filename

Joint les sorties log du serveur à filename. Si le fichier n'existe pas il est créé. Les droits sont mis à 077, ainsi l'accès au ficher de log par les autres utilisateurs est désactivé par défaut.

-m mode

Spécifie le mode d'arrêt. mode peut être smart, fast, ou immediate, ou la première lettre d'un de ces trois.

-o options

Spécifie les options à passer directement au postmaster.

Les paramètres sont habituellement entourés de guillemets simples ou doubles pour s'assuer qu'ils seront compris comme un groupe.

-p path

Spécifie la localisation du postmaster exécutable. Par défaut le postmaster est pris dans le même répertoire que pg_ctl, ou sinon, le répertoire d'installation. Il n'est pas nécessaire d'utiliser cette option sauf si vous obtenez des erreurs comme quoi le postmaster n'est pas trouvé.

-s

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

-w

Attend le démarrage ou l'arrêt pour compléter. Normalement 60 secondes par défaut pour l'arrêt.

-W

N'attend pas le démarrage ou l'arrêt pour compléter. Par défaut pour les démarrages et redémarrages.

Files

Si le fichier postmaster.opts.default existe dans le répertoire, les contenus du fichier seront passés comme options au postmaster, à moins d'outrepasser avec l'option -o.

Exemples

Démarrage du postmaster

Pour démarrer un postmaster:

$ pg_ctl start

Un exemple de démarrage du postmaster, bloquant jusqu'à ce qu'il soit lancé :

$ pg_ctl -w start

Pour un postmaster utilisant le port 5433, et tournant sans fsync, utilisez :

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

Arrêter le postmaster

$ pg_ctl stop
arrête le postmaster. Utiliser -m permet de contrôler comment le serveur s'arrête.

Redémarrer le postmaster

C'est la plupart du temps équivalent à stopper le postmaster et le démarrer de nouveau sauf que pg_ctl enregistre et réutilise les options de la ligne de commande passées à l'instance tournant précédemment. Pour redémarrer le postmaster dans la forme la plus simple :

$ pg_ctl restart

Pour redémarrer le postmaster :

$ pg_ctl -w restart

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

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

Affichage des status du postmaster

Ici une simple sortie pour les status depuis 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'
C'est la ligne de commande invoquée en mode redémarrage.

Bugs

Attendre pour le démarrage complet n'est pas une opération bien définie et peut échoer si le contrôle d'accès n'est pas placé comme un client local qui ne peut se connecter sans interaction manuelle. Elle est à éviter.

Voir aussi

postmaster(1), Guide de l'administrateur PostgreSQL.