Série RHCSA: Gerenciamento de Pacotes Yum, Automatização de Tarefas com Cron e Monitoramento de Logs do Sistema – Parte 10

Neste artigo, iremos rever como instalar, atualizar e remover pacotes no Red Hat Enterprise Linux 7. Também abordaremos como automatizar tarefas usando cron, e finalizaremos este guia explicando como localizar e interpretar arquivos de logs do sistema com o foco de ensinar por que todas essas são habilidades essenciais para todo administrador de sistema.

RHCSA: Yum Package Management, Cron Job Scheduling and Log Monitoring – Part 10

Gerenciando Pacotes Via Yum

Para instalar um pacote juntamente com todas as suas dependências que ainda não estão instaladas, você usará:

# yum -y install package_name(s)

Onde nome_do_pacote(s) representam pelo menos um nome de pacote real.

Por exemplo, para instalar httpd e mlocate (nessa ordem), digite.

# yum -y install httpd mlocate

Nota: Que a letra y no exemplo acima ignora as solicitações de confirmação que o yum apresenta antes de realizar o download e instalação real dos programas solicitados. Você pode deixá-la de fora se desejar.

Por padrão, o yum instalará o pacote com a arquitetura que corresponde à arquitetura do sistema operacional, a menos que seja substituído anexando a arquitetura do pacote ao seu nome.

Por exemplo, em um sistema 64 bits, yum install pacote instalará a versão x86_64 do pacote, enquanto yum install pacote.x86 (se disponível) instalará a versão 32 bits.

Haverá momentos em que você desejará instalar um pacote, mas não conhece seu nome exato. As opções de pesquisa total ou pesquisa podem pesquisar os repositórios atualmente ativados por uma determinada palavra-chave no nome do pacote e/ou em sua descrição, respectivamente.

Por exemplo,

# yum search log

irá procurar nos repositórios instalados por pacotes com a palavra log em seus nomes e resumos, enquanto

# yum search all log

irá procurar pela mesma palavra-chave na descrição do pacote e nos campos url também.

Assim que a pesquisa retornar uma lista de pacotes, você pode querer exibir mais informações sobre alguns deles antes de instalar. É aí que a opção info será útil:

# yum info logwatch
Search Package Information

Você pode verificar regularmente as atualizações com o seguinte comando:

# yum check-update

O comando acima retornará todos os pacotes instalados para os quais uma atualização está disponível. No exemplo mostrado na imagem abaixo, apenas rhel-7-server-rpms tem uma atualização disponível:

Check For Package Updates

Você pode então atualizar apenas esse pacote com,

# yum update rhel-7-server-rpms

Se houver vários pacotes que podem ser atualizados, yum update irá atualizar todos de uma vez.

Agora, o que acontece quando você conhece o nome de um executável, como ps2pdf, mas não sabe qual pacote o fornece? Você pode descobrir com yum whatprovides “*/[executable]”:

# yum whatprovides “*/ps2pdf”
Find Package Belongs to Which Package

Agora, quando se trata de remover um pacote, você pode fazer isso com yum remove package. Fácil, né? Isso mostra que yum é um gerenciador de pacotes completo e poderoso.

# yum remove httpd

Leia também: 20 Comandos Yum para Gerenciar o Gerenciamento de Pacotes RHEL 7

Bom e Velho RPM Simples

RPM (também conhecido como Gerenciador de Pacotes RPM, ou originalmente RedHat Package Manager) também pode ser usado para instalar ou atualizar pacotes quando eles vêm na forma de pacotes .rpm autônomos.

É frequentemente utilizado com as flags -Uvh para indicar que deve instalar o pacote se ele ainda não estiver presente ou tentar atualizá-lo se estiver instalado (-U), produzindo uma saída detalhada (-v) e uma barra de progresso com marcas de hash (-h) enquanto a operação está sendo realizada. Por exemplo,

# rpm -Uvh package.rpm

Outro uso típico do rpm é produzir uma lista de pacotes atualmente instalados com o comando rpm -qa (abreviação de query all):

# rpm -qa
Query All RPM Packages

Leia também: 20 Comandos RPM para Instalar Pacotes no RHEL 7

Agendamento de Tarefas usando Cron

Sistemas operacionais Linux e outros semelhantes ao Unix incluem uma ferramenta chamada cron que permite agendar tarefas (ou seja, comandos ou scripts de shell) para serem executados periodicamente. O Cron verifica a cada minuto o diretório /var/spool/cron em busca de arquivos nomeados de acordo com as contas em /etc/passwd.

Quando executar comandos, qualquer saída é enviada por e-mail para o proprietário do crontab (ou para o usuário especificado na variável de ambiente MAILTO no arquivo /etc/crontab, se existir).

Os arquivos crontab (que são criados digitando crontab -e e pressionando Enter) têm o seguinte formato:

Crontab Entries

Assim, se quisermos atualizar o banco de dados de arquivos local (que é usado pelo locate para encontrar arquivos por nome ou padrão) a cada segundo dia do mês às 2:15 da manhã, precisamos adicionar a seguinte entrada de crontab:

15 02 2 * * /bin/updatedb

A entrada de crontab acima lê, “Execute /bin/updatedb no segundo dia do mês, todo mês do ano, independentemente do dia da semana, às 2:15 da manhã”. Como tenho certeza de que você já adivinhou, o símbolo de estrela é usado como um caractere curinga.

Depois de adicionar um trabalho cron, você pode ver que um arquivo chamado root foi adicionado dentro de /var/spool/cron, como mencionamos anteriormente. Esse arquivo lista todas as tarefas que o daemon crond deve executar:

# ls -l /var/spool/cron
Check All Cron Jobs

Na imagem acima, o crontab do usuário atual pode ser exibido usando cat /var/spool/cron/root ou,

# crontab -l

Se você precisar executar uma tarefa de forma mais detalhada (por exemplo, duas vezes por dia ou três vezes por mês), o cron também pode ajudá-lo a fazer isso.

Por exemplo, para executar /meu/script no 1º e 15º de cada mês e enviar qualquer saída para /dev/null, você pode adicionar duas entradas de crontab da seguinte forma:

01 00 1 * * /myscript > /dev/null 2>&1
01 00 15 * * /my/script > /dev/null 2>&1

01 00 1,15 * *  /my/script > /dev/null 2>&1

Seguindo o exemplo anterior, podemos executar /meu/outro/script às 1:30 da manhã no primeiro dia do mês a cada três meses:

30 01 1 1,4,7,10 * /my/other/script > /dev/null 2>&1

Mas quando você precisa repetir uma determinada tarefa a cada “x” minutos, horas, dias ou meses, você pode dividir a posição correta pela frequência desejada. A seguinte entrada de crontab tem exatamente o mesmo significado que a anterior:

30 01 1 */3 * /my/other/script > /dev/null 2>&1

Ou talvez você precise executar um determinado trabalho em uma frequência fixa ou após a inicialização do sistema, por exemplo. Você pode usar uma das seguintes strings em vez dos cinco campos para indicar o momento exato em que deseja que seu trabalho seja executado:

@reboot    	Run when the system boots.
@yearly    	Run once a year, same as 00 00 1 1 *.
@monthly   	Run once a month, same as 00 00 1 * *.
@weekly    	Run once a week, same as 00 00 * * 0.
@daily     	Run once a day, same as 00 00 * * *.
@hourly    	Run once an hour, same as 00 * * * *.

Leia também: 11 Comandos para Agendar Tarefas Cron no RHEL 7

Localizando e Verificando Logs

Os logs do sistema estão localizados (e rotacionados) dentro do diretório /var/log. De acordo com o Padrão de Hierarquia do Sistema de Arquivos do Linux, este diretório contém arquivos de log diversos, que são gravados nele ou em um subdiretório apropriado (como audit, httpd ou samba na imagem abaixo) pelos respectivos daemons durante a operação do sistema:

# ls /var/log
Linux Log Files Location

Outros logs interessantes são dmesg (contém todas as mensagens do buffer de anel do kernel), secure (registra tentativas de conexão que requerem autenticação do usuário), messages (mensagens em todo o sistema) e wtmp (registros de todos os logins e logouts de usuários).

Logs são muito importantes, pois permitem ter uma visão do que está acontecendo o tempo todo em seu sistema e o que aconteceu no passado. Eles representam uma ferramenta inestimável para solucionar problemas e monitorar um servidor Linux e, portanto, são frequentemente usados com o comando tail -f para exibir eventos, em tempo real, à medida que acontecem e são registrados em um log.

Por exemplo, se você deseja exibir eventos relacionados ao kernel, digite o seguinte comando:

# tail -f /var/log/dmesg

O mesmo se você quiser visualizar o acesso ao seu servidor web:

# tail -f /var/log/httpd/access.log

Resumo

Se você souber como gerenciar eficientemente pacotes, agendar tarefas e onde procurar informações sobre a operação atual e passada do seu sistema, pode ter certeza de que não terá surpresas com muita frequência. Espero que este artigo tenha ajudado você a aprender ou atualizar seus conhecimentos sobre essas habilidades básicas.

Não hesite em nos enviar uma mensagem usando o formulário de contato abaixo se tiver alguma dúvida ou comentário.

Source:
https://www.tecmint.com/yum-package-management-cron-job-scheduling-monitoring-linux-logs/