- Crie um script que utiliza comandos como
psegreppara 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:~$
- Desenvolva um script que utiliza comandos como
psesortpara 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:~$
- 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.
- 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.
- 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