Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Projeto] Hora da prática

  1. Crie um script que utiliza comandos como ps e grep para monitorar os processos que estão utilizando uma porcentagem significativa da CPU.
#!/bin/bash
echo "=== Top 5 processos por uso de CPU ==="
ps aux --sort=-%cpu | head -n 6

Executando

jezebel@Linux:~$ chmod +x /home/jezebel/top_cpu.sh
jezebel@Linux:~$ ./top_cpu.sh
=== Top 5 processos por uso de CPU ===
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       22720  0.2  0.0      0     0 ?        I    Nov16   2:26 [kworker/1:3-events]
root       24996  0.2  0.0      0     0 ?        I    00:58   0:02 [kworker/1:0-events]
root         229  0.1  0.0      0     0 ?        S    Nov15   2:16 [irq/18-vmwgfx]
root       24995  0.1  0.0      0     0 ?        I    00:58   0:01 [kworker/0:0-mm_percpu_wq]
root           1  0.0  0.2 166448 11900 ?        Ss   Nov15   1:35 /lib/systemd/systemd --system --deserialize 37 splash noprompt noshell automatic-ubiquity
jezebel@Linux:~$
  1. Desenvolva um script que utiliza comandos como ps e sort para exibir os processos que estão consumindo mais memória.
#!/bin/bash
echo "=== Top 5 processos por uso de memória ==="
ps aux --sort=-%mem | head -n 6

Executando

jezebel@Linux:~$ jezebel@Linux:~$ chmod +x /home/jezebel/top_memoria.sh
jezebel@Linux:~$ ./top_memoria.sh
=== Top 5 processos por uso de memória ===
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       10579  0.0  0.9 1325528 36480 ?       Ssl  Nov16   0:29 /usr/lib/snapd/snapd
root       22731  0.0  0.6 223816 27100 ?        SLsl Nov16   0:28 /sbin/multipathd -d -s
root         813  0.0  0.5 107156 21304 ?        Ssl  Nov15   0:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
root       11434  0.0  0.5 295616 20944 ?        Ssl  Nov16   0:13 /usr/libexec/packagekitd
root         747  0.0  0.4  30092 18808 ?        Ss   Nov15   0:07 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
jezebel@Linux:~$
  1. Crie um script que verifica se um processo específico está em execução e exibe seu status.
#!/bin/bash

processo="nginx"

if pgrep "$processo" > /dev/null; then
    echo "O processo $processo está em execução."
else
    echo "O processo $processo NÃO está em execução."
fi

Executando

jezebel@Linux:~$ chmod +x /home/jezebel/verifica_processo.sh
jezebel@Linux:~$ ./verifica_processo.sh
O processo nginx está em execução.
  1. Elabore um script para analisar os logs do sistema em busca de mensagens de erro relacionadas a processos.
#!/bin/bash

echo "=== Últimas mensagens de erro (error, crit, alert, emerg) ==="

ERROS=$(grep -Ei "error|crit|alert|emerg" /var/log/syslog | tail -n 20)

if [ -z "$ERROS" ]; then
    echo "Nenhum erro encontrado no syslog."
else
    echo "$ERROS"
fi

Executando

jezebel@Linux:~$ chmod +x /home/jezebel/erros_logs.sh
jezebel@Linux:~$ sudo ./erros_logs.sh
=== Últimas mensagens de erro (error, crit, alert, emerg) ===
Nenhum erro encontrado no syslog.
  1. Crie um script para monitorar as mensagens de erro no log do sistema em intervalos regulares usando cron jobs. O script deve registrar em um arquivo as últimas 5 linhas de mensagens de erro, possibilitando uma visão periódica da atividade do sistema.
#!/bin/bash

LOG="/home/jezebel/monitor_logs/erros_periodicos.log"

echo "===== Erros em $(date '+%d/%m/%Y %H:%M:%S') =====" >> "$LOG"
tail -n 5 /var/log/syslog | grep -i "error" >> "$LOG"
echo "" >> "$LOG"

Adicionando no crontab -e

# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command

0 */2 * * * /home/jezebel/monitor_logs/monitor_erros.sh

Executando

jezebel@Linux:~$ chmod +x ~/monitor_logs/monitor_erros.sh
jezebel@Linux:~$ sudo /home/jezebel/monitor_logs/monitor_erros.sh
[sudo] password for jezebel:
jezebel@Linux:~$ cd monitor_logs
jezebel@Linux:~/monitor_logs$ ls
erros_periodicos.log  monitor_erros.sh

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
4 respostas
solução!

Olá, Jezebel! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de comandos do terminal para monitoramento de processos, utilizou muito bem scripts Bash para automatizar tarefas administrativas e ainda compreendeu a importância do agendamento com cron para garantir análises periódicas dos logs do sistema.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Olá Daniel!

Muito obrigada pelo retorno e pelas palavras de incentivo!
Fico muito feliz em saber que minha solução pôde contribuir de alguma forma. Vou continuar compartilhando minhas atividades no fórum, é ótimo poder aprender e ajudar outros estudantes ao mesmo tempo.

Agradeço também pelas sugestões de conteúdo, vou dar uma olhada no material indicado para me aprofundar ainda mais no assunto.

Abraço e bons estudos!

Esses exercícios foram ótimos para reforçar os comandos de monitoramento de processos e análise de logs no Linux. Consegui executar todos os scripts direitinho e aprendi bastante com cada etapa.

Valeu mesmo pela força e pela explicação detalhada — ajudou muito no meu aprendizado!

Pessoal, estou passando aqui para compartilhar os scripts que desenvolvi para monitoramento de processos e logs no Linux. Talvez ajude alguém que esteja estudando também:

Top processos por CPU:
ps aux --sort=-%cpu | head -n 6

Top processos por memória:
ps aux --sort=-%mem | head -n 6

Verificar se um processo está rodando:
Usando pgrep para checar serviços como nginx.

Buscar erros no syslog:
grep -Ei "error|crit|alert|emerg" /var/log/syslog

Monitoramento periódico com cron:
Um script salva automaticamente as últimas mensagens de erro em um arquivo de log.

obrigado por postar