Documentation PostgreSQL 9.0.23 > Référence > Applications relatives au serveur PostgreSQL > pg_ctl | |
pg_controldata | pg_resetxlog |
pg_ctl — initialiser, démarrer, arrêter ou redémarrer le serveur PostgreSQL™
pg_ctl init[db] [-s] [-D répertoire_données] [-o options]
pg_ctl 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 [-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] [-t secondes] [-s] [-o options]
pg_ctl unregister [-N nom_service]
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). 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 (ou nul sous Windows). Sur les systèmes Unix, par défaut, la sortie standard et la sortie des erreurs du serveur sont envoyées sur la sortie standard de pg_ctl (pas la sortie des erreurs). La sortie standard de pg_ctl devrait ensuite être redirigée dans un fichier standard ou dans un fichier pipe vers un autre processus comme un outil de rotation de fichiers de trace comme rotatelogs. Dans le cas contraire, postgres écrira sa sortie sur le terminal de contrôle. Sur Windows, par défaut, la sortie standard et la sortie des erreurs du serveur sont envoyées au terminal. Les comportements par défaut peuvent être changés en utilisant l'option -l pour ajouter la sortie du serveur dans un fichier de trace. 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 » 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 récupération (recovery), 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 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.
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.
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.
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.
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.
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.
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.
Indique les options à passer directement à la commande postgres.
Ces options sont habituellement entourées par des guillemets simples ou doubles pour s'assurer qu'elles soient passées groupées.
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.
Affichage des seules erreurs, pas de messages d'information.
Le nombre de secondes à attendre pour la fin du lancement ou de l'arrêt.
Attendre la fin du démarrage ou de l'arrêt. Le temps d'attente par défaut est de 60 secondes, option 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.
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.
Nom du service système à enregistrer. Le nom est utilisé à la fois comme nom de service et comme nom affiché.
Mot de passe de l'utilisateur qui démarre le service.
Nom de l'utilisateur qui démarre le service. Pour les utilisateurs identifiés sur un domaine, on utilise le format DOMAIN\nom_utilisateur.
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 31.13, « Variables d'environnement »).
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.
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.
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.
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). Pour des variables de connexion supplémentaires, voir Section 31.13, « Variables d'environnement ». Pour les mots de passe, voir aussi Section 31.14, « Fichier de mots de passe ».
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
$ pg_ctl stop
arrête le serveur. Utiliser l'option -m permet de contrôler comment le serveur s'arrête.
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