O arquivo
pgagent.sh em /etc/init.d serve para iniciar o pgAgent junto ao
Systemd, pois os dois servidores
Debian 11 e
Ubuntu 22.04.2 LTS os quais tiveram essa instalação ficou uma dificuldade em fazer o pgAgent funcionar, pois o Systemd não o reconhecia.
O arquivo rc-local.service em
/usr/lib/systemd/system geralmente é criado junto com o sistema. É este arquivo que permite nas novas versões que criemos o arquivo rc.local para colocar arquivos de inicialização com o sistema quando necessário.
O arquivo
rc.local, que, segundo dizem, está obsoleto, porém, às vezes é necessário criá-lo, pois no Systemd é muito mais complicado configurar para iniciar programas instalados pelo usuário junto com o sistema quando estes não são configurados automaticamente na instalação.
Estas linhas no rc.local:
pgagent hostaddr=127.0.0.1 port=5433 dbname=banco1 user=postgres
pgagent hostaddr=127.0.0.1 port=5432 dbname=banco2 user=postgres
são as strings de conexão do pgAgent compostas pelo hostaddr (hostname ou IP), a porta do banco de dados, o nome do banco e o usuário do banco.
Essa string de conexão é absolutamente necessária para o funcionamento do pgAgent.
Caso tenha mais de um banco em portas diferentes, por exemplo, um na porta 5432 e um na porta 5433, deve sempre criar uma string para cada banco.
NÃO inclua qualquer tipo de senha na string do pgAgent, pois ela pode ser armazenada como texto plano (arquivo .txt) e ficar visível.
Tanto no rc.local quanto no pgagent.sh tem a linha "systemctl start pgagent" e pode parecer redundância, porém, o rc.local em /etc/rc.local faz a inicialização com o sistema chamando /usr/bin/pgagent e o pgagent.sh em /etc/init.d atua sobre o init.d em conjunto com o Systemd agindo no /usr/bin/pgagent, que é instalado com apt-get install pgagent.
Somente com o pgagent.sh o pgAgent não inicializava com o sistema, mas inicializava manualmente com systemctl start pgagent; foi necessário o rc.local para inicialização com o sistema.
O arquivo pgagent.service em /usr/lib/systemd/system foi criado para informar ao Systemd as condições de start, stop e restart; o systemctl status pgagent não é necessário colocar em pgagent.service, pois vem na instalação.
Description=Arquivo do PgAgent feito por eu mesmo # descrição do arquivo
ConditionFileIsExecutable=/usr/bin/pgagent # caminho do executável
After=network.target # indica que deve iniciar depois da rede
Type=simple # como "simple" o serviço é iniciado como processo principal
ExecStart=/usr/bin/pgagent start
ExecStop=/usr/bin/pgagent stop
ExecReload=/usr/bin/pgagent restart
Restart=always # sempre reiniciar após alguma falha
RestartSec=10 # reiniciar após 10 segundos parado
RemainAfterExit=yes # usado para serviços que de alguma forma mudam o estado do sistema, assim você pode interrompê-lo e iniciá-lo com mais facilidade; especifica se o serviço deve ser considerado ativo mesmo quando todos os seus processos forem encerrados.
WantedBy=multi-user.target # permite multi-usuários para o serviço junto ao sistema
Não foi abordado aqui como criar um job no pgAgent através do pgAdmin4, pois o processo é bastante fácil e auto-explicativo na interface gráfica do pgAdmin4.
Qualquer coisa olhem o primeiro link das referências abaixo, na seção "Creating a pgAgent Job" tem imagens e explicações.
Referências