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]
O pg_ctl é um utilitário para iniciar, parar ou reiniciar o servidor PostgreSQL ( postmaster ), 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 deve ser redirecionada para um arquivo, ou ser 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 postmaster escreverá sua saída no terminal que o controla (do segundo plano), e não vai deixar o grupo de processos da 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 canceladas (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 postmaster.
O modo recarregar (reload) simplesmente envia o sinal SIGHUP para o processo postmaster, 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 um reinício completo para produzir efeito.
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.
Para os demais consulte o postmaster .
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).
Para iniciar o servidor:
$ pg_ctl start
Exemplo de iniciar o servidor bloqueando até o servidor estar pronto:
$ pg_ctl -w start
Para um servidor usando a porta 5433, e executando sem fsync
, deve ser usado:
$ pg_ctl -o "-F -p 5433" start
$ pg_ctl stop
pára o servidor. A chave -m permite controlar como o servidor irá parar.
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 executando anteriormente. 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 desabilitando o fsync
após o reinício:
$ pg_ctl -o "-F -p 5433" restart
Abaixo segue um exemplo da saída de status mostrada pelo pg_ctl no Fedora Core 3:
$ su - postgres $ pg_ctl status pg_ctl: postmaster is running (PID: 4607) Command line was: /usr/bin/postmaster '-p' '5432' '-D' '/var/lib/pgsql/data'
Esta é a linha de comandos que seria usada no modo de reinício.