Uma analista elaborou o Shell Script abaixo para apoiar a equipe administrativa, que precisava de uma rotina automática para monitorar informações de processos armazenados no banco de dados PostgreSQL.
Ao ser executado em condições ideais e com as devidas permissões, esse script
Acria automaticamente uma tabela processos_diarios dentro do banco de dados e insere nela a data e o número de processos existentes.
Bconecta ao banco de dados e remove todos os registros da tabela processo, registrando o total excluído em um arquivo de log chamado processos_diarios.log.
Clista todos os processos da tabela processo e exporta os resultados em formato CSV para a pasta de logs.
Drealiza um backup completo do banco ministpub e anota no log o tamanho do arquivo gerado, junto com a data.
Erecupera a contagem de registros da tabela processo, adiciona a data atual e grava essas informações em um arquivo de log localizado em /var/log/processos_diarios.log.
Revelar gabarito e comentário▾
GabaritoE — recupera a contagem de registros da tabela processo, adiciona a data atual e grava essas informações em um arquivo de log localizado em /var/log/processos_diarios.log.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Shell Script com PostgreSQL: monitoramento de processos
Gabarito: letra E. O script executa uma consulta SQL de contagem (SELECT COUNT(*)) na tabela processo do banco ministpub, armazena o resultado na variável QTD, obtém a data atual na variável DATA e, por fim, grava a linha "$DATA - $QTD" no arquivo de log /var/log/processos_diarios.log usando o redirecionador >>. Nenhuma das outras alternativas descreve corretamente essas ações.
O script apresentado é um exemplo clássico de automação de tarefas administrativas em ambientes Linux/Unix. Vamos decompor cada linha para entender exatamente o que ele faz:
DATA=$(date +"%Y-%m-%d"): executa o comando date com o formato %Y-%m-%d (ano-mês-dia, ex.: 2026-05-20) e atribui o resultado à variável DATA. É uma forma de capturar a data atual do sistema.
QTD=$(psql -U usuario -d ministpub -t -c "SELECT COUNT(*) FROM processo;"): aqui está o coração da questão. O comando psql é o cliente de linha de comando do PostgreSQL. Os parâmetros são:
-U usuario: especifica o usuário do banco de dados.
-d ministpub: seleciona o banco de dados ministpub.
-t: modo tuples only (ou tuplas apenas), que faz o psql imprimir apenas as linhas de resultado, sem cabeçalhos ou rodapés — essencial para capturar o valor limpo na variável.
-c "SELECT COUNT(*) FROM processo;": executa a consulta SQL que conta quantos registros existem na tabela processo.
O resultado (um número inteiro) é armazenado na variável QTD.
echo "$DATA - $QTD" >> /var/log/processos_diarios.log: o comando echo imprime a string "$DATA - $QTD" (por exemplo, 2026-05-20 - 150). O redirecionador >>adiciona (append) essa linha ao final do arquivo /var/log/processos_diarios.log. Se o arquivo não existir, ele é criado; se existir, a linha é acrescentada sem apagar o conteúdo anterior.
Portanto, o script não cria tabelas, não remove registros, não exporta CSV, não faz backup. Ele simplesmente consulta a contagem de registros e registra essa informação em um arquivo de log, junto com a data.
A pegadinha da questão está em confundir o propósito do comando psql com outras operações de banco de dados. Muitos candidatos podem associar psql a backup (pg_dump), a exportação de dados (COPY ou \copy), ou a manipulação de estrutura (CREATE TABLE, DROP TABLE). No entanto, o comando -c com SELECT COUNT(*) é uma consulta de leitura simples, e o redirecionador >> é uma operação de escrita em arquivo de texto, não no banco.
Guarde esta distinção: psql -c executa uma instrução SQL arbitrária; pg_dump faz backup; COPY exporta/importa dados. E >> sempre adiciona a um arquivo, enquanto > sobrescreve. É exatamente nesses detalhes que as alternativas se separam.
1DATA=$(date)
2QTD=$(psql SELECT COUNT(*))
3echo >> log
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Afirma que o script cria uma tabela processos_diarios no banco e insere dados nela. O script não executa nenhum comando DDL (CREATE TABLE) nem DML (INSERT). A única interação com o banco é um SELECT COUNT(*), que apenas lê dados. O arquivo /var/log/processos_diarios.log é um arquivo de texto do sistema operacional, não uma tabela do PostgreSQL.
Alternativa B — ❌ Incorreta
Diz que o script remove todos os registros da tabela processo e registra o total excluído. Não há nenhum comando DELETE ou TRUNCATE no script. A consulta SELECT COUNT(*) apenas conta registros; não altera o estado da tabela. Além disso, o log registra a contagem, não um total de registros excluídos.
Alternativa C — ❌ Incorreta
Alega que o script lista todos os processos e exporta em CSV. O comando SELECT COUNT(*) retorna um único valor (o número total de registros), não uma lista de linhas. Não há uso de COPY, \copy ou qualquer formatação CSV. O resultado é apenas um número, que é concatenado com a data e gravado no log.
Alternativa D — ❌ Incorreta
Sugere que o script realiza um backup completo do banco ministpub. Backup no PostgreSQL é feito com a ferramenta pg_dump (ou pg_basebackup), não com psql -c. O script não gera nenhum arquivo de backup; ele apenas consulta a contagem de registros e escreve uma linha de texto em um log. O tamanho do arquivo de backup também não é mencionado em nenhum lugar.
Alternativa E — ✅ Correta ⟵ GABARITO
Esta alternativa descreve com precisão o que o script faz: recupera a contagem de registros da tabela processo (via SELECT COUNT(*)), adiciona a data atual (via date) e grava essas informações no arquivo /var/log/processos_diarios.log (via echo com redirecionamento >>). Todos os elementos do script estão corretamente representados.
NÃO CAIA NESSA!
A banca explora a confusão entre psql (cliente SQL) e outras ferramentas do PostgreSQL. psql -c executa qualquer comando SQL; pg_dump faz backup; COPY exporta dados. Além disso, o redirecionador >> adiciona ao arquivo, enquanto > sobrescreveria. Fique atento a essas distinções — elas são o alvo clássico de questões sobre scripts de banco.
PEGA ESSA DICA!
Para resolver questões de Shell Script com banco de dados, identifique primeiro o que cada comando faz: psql é o cliente, pg_dump é backup, COPY é transferência de dados. Depois, analise o redirecionador (> sobrescreve, >> adiciona) e o que é gravado no arquivo. Com essa análise, você elimina as alternativas erradas rapidamente.