Pesquisa de site

Série RHCSA: Gerenciamento de pacotes Yum, automatização de tarefas com Cron e monitoramento de logs do sistema - Parte 10


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

Gerenciando Pacotes Via Yum

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


yum -y install package_name(s)

Onde package_name(s) representa pelo menos um nome de pacote real.

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


yum -y install httpd mlocate

Nota: A letra y no exemplo acima ignora os prompts de confirmação que o yum apresenta antes de realizar o download e a instalação propriamente ditos dos programas solicitados. Você pode deixá-lo de fora se quiser.

Por padrã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 package instalará a versão x86_64 do pacote, enquanto yum install package.x86 (se disponível) instalará o de 32 bits.

Haverá momentos em que você desejará instalar um pacote, mas não saberá seu nome exato. As opções pesquisar tudo ou pesquisar podem pesquisar nos repositórios atualmente habilitados por uma determinada palavra-chave no nome do pacote e/ou em sua descrição também, 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

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

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


yum info logwatch

Você pode verificar regularmente se há 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 possui atualização disponível:

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


yum update rhel-7-server-rpms

Se houver vários pacotes que possam ser atualizados, o yum update atualizará todos eles de uma vez.

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


yum whatprovides “*/ps2pdf”

Agora, quando se trata de remover um pacote, você pode fazer isso com yum remove package. Fácil, hein? 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

O bom e velho RPM simples

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

É frequentemente utilizado com os sinalizadores -Uvh para indicar que ele deve instalar o pacote se 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 executada. Por exemplo,


rpm -Uvh package.rpm

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


rpm -qa

Leia também: Comandos de 20 RPM para instalar pacotes no RHEL 7

Agendando tarefas usando Cron

O Linux e outros sistemas operacionais do tipo Unix incluem uma ferramenta chamada cron que permite agendar tarefas (ou seja, comandos ou scripts de shell) para execução periódica. O Cron verifica a cada minuto o diretório /var/spool/cron em busca de arquivos com nomes de contas em /etc/passwd.

Ao executar comandos, qualquer saída é enviada ao proprietário do crontab (ou ao usuário especificado na variável de ambiente MAILTO no /etc/crontab, se existir).

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

Assim, se quisermos atualizar o banco de dados de arquivos local (que é usado pelo local para localizar arquivos por nome ou padrão) todo segundo dia do mês às 2h15, precisamos adicionar o seguinte Entrada crontab:


15 02 2 * * /bin/updatedb

A entrada do crontab acima diz: “Execute /bin/updatedb no segundo dia do mês, todos os meses do ano, independentemente do dia da semana, às 2h15”. Como tenho certeza que você já adivinhou, o símbolo da estrela é usado como caractere curinga.

Depois de adicionar um cron job, 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

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 maneira mais detalhada (por exemplo, duas vezes por dia ou três vezes por mês), o cron também poderá ajudá-lo a fazer isso.

Por exemplo, para executar /my/script no primeiro e no 15 dia de cada mês e enviar qualquer saída para /dev/null, você pode adicione duas entradas crontab da seguinte maneira:


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

Mas para tornar a tarefa mais fácil de manter, você pode combinar as duas entradas em uma:


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

Seguindo o exemplo anterior, podemos executar /my/other/script à 1h30 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 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 a hora exata 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 registros

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


ls /var/log

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 de todo o sistema) e wtmp (registros de todos os logins e logouts de usuários).

Os logs são muito importantes porque permitem que você tenha uma ideia do que está acontecendo o tempo todo no seu sistema e do 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ê quiser 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ê sabe como gerenciar pacotes com eficiência, agendar tarefas e onde procurar informações sobre a operação atual e passada do seu sistema, você 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.