pg_ctl

Nome

pg_ctl -- inicia, pára ou reinicia o servidor PostgreSQL

Sinopse

pg_ctl start [-w] [-s] [-D diretório_de_dados] [-l nome_do_arquivo] [-o opções] [-p caminho]
pg_ctl stop [-W] [-s] [-D diretório_de_dados] [-m s[mart] | f[ast] | i[mmediate] ]
pg_ctl restart [-w] [-s] [-D diretório_de_dados] [-m s[mart] | f[ast] | i[mmediate] ] [-o opções]
pg_ctl reload [-s] [-D diretório_de_dados]
pg_ctl status [-D diretório_de_dados]
pg_ctl kill [nome_do_sinal] [id_processo]
pg_ctl register [-N nome_do_serviço] [-U nome_do_usuário] [-P senha] [-D diretório_de_dados] [-w] [-o opções]
pg_ctl unregister [-N nome_do_serviço]

Descrição

O pg_ctl é um utilitário para iniciar, parar ou reiniciar o servidor PostgreSQL (postgres), ou mostrar o status de um servidor ativo. Embora o servidor possa ser iniciado manualmente, o pg_ctl encapsula tarefas como redirecionar a saída do log, desacoplar do terminal e do grupo de processos de forma adequada, além de fornecer opções convenientes para uma parada controlada.

No modo iniciar (start), é lançado um novo servidor. O servidor é iniciado em segundo plano, e a entrada padrão é direcionada para /dev/null. A saída padrão e o erro padrão são ambos anexados ao arquivo de log (se a opção -l for usada), ou redirecionada para a saída padrão do pg_ctl (não o erro padrão). Se não for escolhido nenhum arquivo de log, a saída padrão do pg_ctl deverá ser redirecionada para um arquivo ou enviada para outro processo (através de um pipe) como, por exemplo, um programa de rotação de log, como o rotatelogs, senão o postgres escreverá sua saída no terminal que o controla (do segundo plano), e não vai deixar o grupo de processos do interpretador de comandos (shell).

No modo parar (stop), o servidor que está executando no diretório de dados especificado é parado. Podem ser selecionados três métodos de parada diferentes pela opção -m: O modo "Smart" (inteligente) aguarda todos os clientes desconectarem. Este é o padrão. O modo "Fast" (rápido) não aguarda os clientes desconectarem. Todas as transações ativas são desfeitas (rollback), os clientes são desconectados à força e, em seguida, o servidor é parado. O modo "Immediate" (imediato) interrompe todos os processos servidores sem uma parada limpa, provocando um processamento de recuperação ao reiniciar.

O modo reiniciar (restart) executa uma parada seguida por um início. Permite mudar as opções de linha de comando do postgres.

O modo recarregar (reload) simplesmente envia o sinal SIGHUP para o processo postgres, fazendo este ler novamente os arquivos de configuração (postgresql.conf, pg_hba.conf, etc.). Permite mudar as opções do arquivo de configuração que não requerem o reinício completo para passarem a valer.

O modo status verifica se o servidor está executando no diretório de dados especificado e, se estiver, mostra o PID e as opções de linha de comando usadas para chamá-lo.

O modo kill permite enviar um sinal para um determinado processo. É particularmente útil no Microsoft Windows que não possui o comando kill. Deve ser utilizado --help para ver a lista de nomes de sinais suportados.

O modo registrar (register) permite registrar um serviço do sistema no Microsoft Windows.

O modo remover registro (unregister) permite remover o registro de um serviço do sistema, previamente registrado pelo modo registrar, no Microsoft Windows.

Opções

-D diretório_de_dados

Especifica o local dos arquivos de banco de dados no sistema de arquivos. Se for omitido, será utilizada a variável de ambiente PGDATA.

-l nome_do_arquivo

Anexa a saída do log do servidor ao nome_do_arquivo. Se o arquivo não existir será criado. A umask é definida como 077 e, portanto, o padrão é não permitir o acesso ao arquivo de log pelos outros usuários.

-m modo

Especifica o modo de parada (shutdown). O modo pode ser smart, fast ou immediate, ou a primeira letra de um dos três.

-o opções

Especifica as opções a serem passadas diretamente para o comando postgres.

As opções são geralmente envoltas por apóstrofos (') ou aspas("), para garantir que sejam passadas como um grupo.

-p caminho

Especifica o local do arquivo executável postgres. Por padrão o executável postgres é lido do mesmo diretório do pg_ctl ou, caso não seja bem-sucedido, do diretório de instalação especificado. Não é necessário usar esta opção, a menos que esteja sendo feito algo diferente do usual e recebendo mensagem de erro informando que o executável do postgres não foi encontrado.

-s

Mostra somente os erros, sem mensagens informativas.

-w

Aguarda o início ou a parada terminar. Expira em 60 segundos. Este é o padrão para a parada. Uma parada bem-sucedida é indicada pela remoção do arquivo do PID. Para o início, a execução do comando psql -l bem-sucedida indica sucesso. O pg_ctl tenta utilizar a porta apropriada para o psql. Se a variável de ambiente PGPORT existir, esta será utilizada, senão, será visto se a porta está definida no arquivo postgresql.conf. Se nenhuma destas duas estiver definida, será utilizada a porta padrão com a qual o PostgreSQL foi compilado (5432 por padrão). Quando estiver aguardando, o pg_ctl retornará um código de saída acurado baseado no sucesso do início ou da parada.

-W

Não aguarda o início ou a parada terminar. Este é o padrão para inícios e reinícios.

Opções para o Windows

-N nome_do_serviço

Nome do serviço do sistema a ser registrado. O nome será utilizado tanto como o nome do serviço quanto para o nome exibido.

-P senha

Senha para o usuário iniciar o serviço.

-U nome_do_usuário

O nome de usuário para iniciar o serviço. Para usuários de domínio, deve ser utilizado o formato DOMÍNIO\nome_de_usuário.

Ambiente

PGDATA

Local padrão do diretório de dados.

PGPORT

Porta padrão para o psql (usada pela opção -w).

Para as demais deve ser consultado o postgres.

Arquivos

postmaster.pid

A existência deste arquivo no diretório de dados é utilizada para ajudar o pg_ctl a determinar se o servidor está executando ou não.

postmaster.opts.default

Se existir este arquivo no diretório de dados, o pg_ctl (no modo start) passará o conteúdo deste arquivo como opções para o comando postgres, a menos que esteja substituído pela opção -o.

postmaster.opts

Se existir este arquivo no diretório de dados, o pg_ctl (no modo restart) passará o conteúdo deste arquivo como opções para o comando postgres, a menos que esteja substituído pela opção -o. O conteúdo deste arquivo também é mostrado no modo status.

postgresql.conf

Este arquivo, localizado no diretório de dados, é analisado para descobrir a porta apropriada a ser utilizada pelo psql quando a opção -w é usada no modo start.

Observações

Aguardar o término do início não é uma operação bem definida, podendo não ser bem-sucedida se o controle de acesso for configurado de modo que o cliente local não possa se conectar sem intervenção manual (por exemplo, autenticação por senha).

Exemplos

Iniciar o servidor

Para iniciar o servidor:

$ pg_ctl start

Para iniciar o servidor bloqueando até o servidor estar ativo:

$ pg_ctl -w start

Para iniciar um servidor usando a porta 5433, e executando sem fsync, deve ser usado:

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

O script a seguir inicia o servidor com a área de dados definida na variável PGDATA, com o diretório dos programas executáveis definido na variável PGBIN, com o arquivo de log definido na variável LOGFILE, mostrando somente os erros, sem mensagens informativas (chave -s) e bloqueando até o servidor estar ativo (chave -w). [1]

#!/bin/sh
PGDATA='/usr/local/pgsql/data'
PGBIN='/usr/local/pgsql/bin'
LOGFILE='/var/log/postgresql'
sudo touch $LOGFILE
sudo chmod 0600 $LOGFILE
sudo chown postgres:postgres $LOGFILE
sudo su - postgres -c "$PGBIN/pg_ctl start -s -w -D $PGDATA -l $LOGFILE"

Parar o servidor

$ pg_ctl stop

pára o servidor. A chave -m permite controlar como o servidor irá parar.

O script a seguir pára o servidor com a área de dados definida na variável PGDATA e com o diretório dos programas executáveis definido na variável PGBIN. [2]

#!/bin/sh
PGDATA='/usr/local/pgsql/data'
PGBIN='/usr/local/pgsql/bin'
sudo su - postgres -c "$PGBIN/pg_ctl stop -D $PGDATA"

Reiniciar o servidor

Reiniciar o servidor praticamente equivale a parar o servidor e iniciá-lo novamente, exceto que o pg_ctl salva e reutiliza as opções de linha de comando passadas para a instância que estava executando. Para reiniciar o servidor da forma mais simples possível:

$ pg_ctl restart

Para reiniciar o servidor aguardando o término da parada e da inicialização:

$ pg_ctl -w restart

Para reiniciar usando a porta 5433 e desativando o fsync após o reinício:

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

Mostrar o status do servidor

Abaixo segue um exemplo da saída de status mostrada pelo pg_ctl:

$ pg_ctl status
pg_ctl: o servidor está executando (pid: 13718)
A linha de comando foi:
/usr/local/pgsql/bin/postgres '-D' '/usr/local/pgsql/data' '-p' '5433' '-B' '128'

Esta é a linha de comandos que seria usada no modo de reinício.

O script a seguir mostra o status do servidor com a área de dados definida na variável PGDATA e com o diretório dos programas executáveis definido na variável PGBIN. [3]

#!/bin/sh
PGDATA='/usr/local/pgsql/data'
PGBIN='/usr/local/pgsql/bin'
sudo su - postgres -c "$PGBIN/pg_ctl status -D $PGDATA"

Consulte também

postgres

Notas

[1]

Exemplo escrito pelo tradutor, não fazendo parte do manual original.

[2]

Exemplo escrito pelo tradutor, não fazendo parte do manual original.

[3]

Exemplo escrito pelo tradutor, não fazendo parte do manual original.

SourceForge.net Logo CSS válido!