Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

Vous n'avez pas encore de compte Developpez.com ? L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Developpez.com

PostgreSQL

Choisissez la catégorie, puis la rubrique :

pg_ctl

pg_ctl — initialiser, démarrer, arrêter ou contrôler le serveur PostgreSQL

Synopsis

pg_ctl init[db] [-s] [-D répertoire_données] [-o options-initdb]

start [-w] [-t secondes] [-s] [-D répertoire_données] [-l nomfichier] [-o options] [-p chemin] [-c]

pg_ctl stop [-W] [-t secondes] [-s] [-D répertoire_données] [-m s[mart] | f[ast] | i[mmediate] ]

pg_ctl restart [-w] [-t secondes] [-s] [-D répertoire_données] [-c] [-m s[mart] | f[ast] | i[mmediate] ] [-o options]

pg_ctl reload [-s] [-D répertoire_données]

pg_ctl status status [-D répertoire_données]

pg_ctl promote [-s] [-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] [-S a[uto] | d[emand] ] [-w] [-t secondes] [-s] [-o options]

pg_ctl unregister [-N nom_service]

Description

pg_ctl est un outil qui permet d'initialiser une instance, de démarrer, d'arrêter, ou de redémarrer un 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 contrôler l'arrêt.

Le mode init ou initdb crée une nouvelle grappe PostgreSQL™. Une grappe est un ensemble de bases contrôlées par une même instance du serveur. Ce mode invoque la commande initdb. Voir initdb(1) pour les détails.

En 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 (or nul on Windows). On Unix-like systems, by default, the server's standard output and standard error are send to pg_ctl's standard output (not standard error). The standard output of pg_ctl should then be redirected to a file or piped to another process such as a log rotating program like rotatelogs; otherwise postgres will write its output to the controlling terminal (from the background) and will not leave the shell's process group. On Windows, by default the server's standard output and standard error are sent to the terminal. These default behaviors can be changed by using -l to append server output to a log file. L'utilisation de l'option -l ou d'une redirection de la sortie est recommandée.

En mode stop, le serveur en cours d'exécution dans le répertoire indiqué est arrêté. Trois méthodes différentes d'arrêt peuvent être choisies avec l'option -m : le mode « smart » (la valeur par défaut) attend la fin de la sauvegarde en ligne (PITR) et la déconnexion de tous les clients. C'est la valeur par défaut. Si le serveur est en mode hot standby, la récupération et la réplication en continu sont arrêtées dès que tous les clients se sont déconnectés. Le mode « fast » n'attend pas la déconnexion des clients et stoppe la sauvegarde en ligne (PITR). Toutes les transactions actives sont annulées et les clients sont déconnectés. Le serveur est ensuite arrêté. Le mode « immediate » tue tous les processus serveur immédiatement, sans leur laisser la possibilité de s'arrêter proprement. Cela conduit à une récupération au redémarrage.

Le mode restart exécute un arrêt suivi d'un démarrage. Ceci permet de modifier les options en ligne de commande de postgres. restart peut échouer si les chemins relatifs ont été spécifiés sur la ligne de commande au démarrage du serveur.

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 qui ne requièrent pas un redémarrage complet pour être 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 indiqué. Si c'est le cas, le PID et les options en ligne de commande utilisées lors de son démarrage sont affichés. Si le serveur n'est pas en cours d'exécution, le processus retourne une valeur de sortie de 3.

Dans le mode promote, le serveur en attente, fonctionnant à partir du répertoire de données spécifiée, sort de la restauration et commence à opérer en mode lecture/écriture.

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™. L'option -S permet la sélection du type de démarrage du service, soit « auto » (lance le service automatiquement lors du démarrage du serveur) soit « demand » (lance le service à la demande).

Le mode unregister permet, sur Microsoft Windows™, d'annuler un service système. Ceci annule les effets de la commande register.

Options

-c, --core-file

Tente d'autoriser la création de fichiers core suite à un arrêt brutal du serveur, sur les plateformes où cette fonctionnalité est disponible, en augmentant la limite logicielle qui en dépend. C'est utile pour le déboguage et pour diagnostiquer des problèmes en permettant la récupération d'une trace de la pile d'un processus serveur en échec.

-D répertoire_données, --pgdata datadir

Indique l'emplacement des fichiers de configuration 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, --log filename

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, --mode mode

Précise le mode d'arrêt. mode peut être smart, fast ou immediate, ou la première lettre d'un de ces trois mots. En cas d'omission, smart est utilisé.

-o options

Indique les options à passer directement à la commande postgres.

Les options doivent habituellement être entourées de guillemets simples ou doubles pour s'assurer qu'elles soient bien passées comme un groupe.

-o options-initdb

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

Ces options sont habituellement entourées par des guillemets simples ou doubles pour s'assurer 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.

Dans le mode init, cette option indique de manière analogue la localisation de l'exécutable initdb.

-s, --silent

Affichage des seules erreurs, pas de messages d'information.

-t, --timeout

Le nombre maximum de secondes à attendre pour la fin du lancement ou de l'arrêt.

-V, --version

Affiche la version de pg_ctl, puis quitte.

-w

Attendre que le démarrage ou l'arrêt se termine. Attendre est l'option par défaut pour les arrêts, mais pas pour les démarrages. Lors d'une attente d'un démarrage, pg_ctl tente plusieurs fois de se connecter au serveur. Lors d'une attente d'un arrêt, pg_ctl attend que le serveur supprime le fichier PID. Cette option permet d'entrer une passphrase SSL au démarrage. pg_ctl renvoie un code d'erreur basé 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.

-?, --help

Affiche de l'aide sur les arguments en ligne de commande de pg_ctl, puis quitte.

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.

-S start-type

Type de démarrage du service système à enregistrer. start-type peut valoir auto ou demand ou la première lettre de ces deux possibilités. Si ce paramètre est omis, la valeur par défaut est auto.

-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.

pg_ctl, comme la plupart des autres outils PostgreSQL™, utilise aussi les variables d'environnement supportées par la bibliothèque libpq (voir Section 31.14, « Variables d'environnement »). Pour des variables serveurs supplémentaires, voir postgres(1).

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

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. Le contenu de ce fichier est aussi affiché en mode status.

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 exécuter le serveur en utilisant le port 5433, et en s'exécutant sans fsync :

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

Arrêt du serveur

Pour arrêter le serveur, utilisez :

$ pg_ctl stop

L'option -m autorise le contrôle sur la façon dont le serveur est arrêté :

$ pg_ctl stop -m fast

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

Exemple de statut affiché à partir de pg_ctl :

$ pg_ctl status

+pg_ctl: server is running (PID: 13718)
+/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.

Voir aussi

initdb(1), postgres(1)
Contacter le responsable de la rubrique PostgreSQL

Partenaire : Hébergement Web