Logo UFPR

Administração de Processos com Shell

Logo Curso

Este módulo cobre comandos essenciais do Linux para administração de processos e usuários.

Conceitos-chave: PID (Process ID), processos pais/filhos, sinais do sistema, foreground/background.

Índice do Módulo

  • Criando Script Shell
  • Execução com nohup
  • Controle com bg, fg
  • Prioridade com nice
  • Visualização pstree
  • Comandos Monitoramento
  • Quiz – Teste seus conhecimentos
Logo UFPR

Criando um Script Shell com sleep

Logo Curso

Script que imprime números de 1 a 60, com intervalo de 1 segundo. Use o comando tail -f saida.log para ver a saída ao vivo.

O comando sleep pausa a execução por um número especificado de segundos (ou minutos/horas com sufixos: 1m, 2h).

#!/bin/bash
for i in {1..60}
do
  echo "Contador: $i" >> saida.log
  sleep 1
done

Salve como contador.sh e execute com:

chmod +x contador.sh
./contador.sh

Exemplo com time: Medindo o tempo de execução do script

time ./contador.sh

Saída esperada:

real    1m0.123s  # Tempo total de execução
user    0m0.010s  # Tempo em modo usuário
sys     0m0.005s  # Tempo em modo kernel
Logo UFPR

Execução com nohup e Segundo Plano

Logo Curso

Para manter o script executando após logout:

nohup ./contador.sh &

Por padrão, o nohup redireciona saída para nohup.out. Você pode especificar um arquivo diferente:

nohup ./script.sh > meu_arquivo.log 2>&1 &

Você pode sair da sessão (logout) e, ao retornar:

tail -f saida.log

O conteúdo continuará sendo atualizado, pois o nohup ignora sinais de logout.

Logo UFPR

Controle com bg, fg, jobs

Logo Curso

Atividade:

sleep 60

Durante a execução, pressione Ctrl+Z para pausar.

bg    # retoma em segundo plano
jobs  # verifica os jobs em segundo plano
fg    # traz de volta ao primeiro plano

Exemplo com múltiplos jobs:

sleep 100 &
sleep 200 &
jobs -l   # lista com PIDs
fg %1     # traz o job 1 para foreground
Logo UFPR

Prioridade com nice e renice

Logo Curso

Execute com prioridade mais baixa:

nice -n 10 ./contador.sh &

Valores de nice: -20 (mais prioridade) a 19 (menos prioridade). Somente root pode definir valores negativos.

Encontre o PID e altere sua prioridade com:

ps aux | grep contador
renice -n 5 -p PID

Espera-se que o processo receba mais prioridade na CPU, reduzindo sua espera em relação a outros.

Logo UFPR

Visualização com pstree e time

Logo Curso
pstree -p
pstree -u usuário
time ./tarefa.sh

Exemplo de saída do time:

real    0m1.003s  # tempo real decorrido
user    0m0.002s  # tempo em modo usuário
sys     0m0.001s  # tempo em modo kernel

Exemplo prático com time:

# Medindo tempo de ordenação de um arquivo grande
time sort bigfile.txt > sorted.txt
Logo UFPR

Comandos de Monitoramento

Logo Curso
  • ps: Mostra processos em execução no momento.
  • top: Exibe uso de CPU em tempo real.
  • htop: Versão interativa e colorida do top.
  • atop: Monitoramento detalhado de todos os recursos do sistema.
  • vmstat: Estatísticas de memória virtual.
  • lsof: Mostra arquivos abertos e quais processos os utilizam.
  • netstat: Lista portas abertas e conexões de rede.
  • tcpdump: Captura pacotes da rede para análise.
  • iotop: Monitora uso de I/O em tempo real.
  • iftop: Monitora uso de banda de rede.

Atividades Práticas

lsof: Veja os arquivos abertos por um processo:

lsof -p PID

netstat: Veja conexões de rede:

netstat -tulnp

top: Monitoramento personalizado:

top -d 5 -p PID1,PID2  # atualiza a cada 5s e monitora apenas PIDs específicos
Logo UFPR

Comandos Básicos do Terminal

Logo Curso
ls        # Lista arquivos
cd        # Navega entre diretórios
mkdir     # Cria pasta
rm        # Remove arquivos
cp        # Copia arquivos
mv        # Move arquivos
touch     # Cria arquivo vazio
chmod     # Permissões
pwd       # Caminho atual
cat       # Conteúdo de arquivos
sudo      # Permissão administrativa
find      # Busca arquivos
grep      # Filtra conteúdo
tar       # Compactação
df        # Espaço em disco
du        # Uso de espaço
Logo UFPR

Visualizar logs com tail e head

Logo Curso
tail -f /var/log/syslog
head -n 10 /etc/passwd

Exemplo avançado com tail:

# Mostrar últimas 50 linhas e continuar acompanhando
tail -n 50 -f /var/log/nginx/error.log

# Mostrar linhas a partir da linha 100
tail -n +100 arquivo.log
Logo UFPR

Comandos SSH e Cópias com SCP

Logo Curso
ssh usuario@host
ssh -X usuario@host
xclock  # Roda remotamente (com X11)
scp arquivo.txt usuario@host:/caminho/
scp -r pasta/ usuario@host:/destino/
scp usuario@host:/arquivo ./

Dica: Use chaves SSH para autenticação sem senha:

ssh-keygen -t rsa
ssh-copy-id usuario@host
Logo UFPR

Permissões e Gerenciamento de Acesso

Logo Curso

Exercício Prático

touch arquivo.txt
sudo groupadd analistas
sudo useradd -m usuario2
sudo chown usuario2:analistas arquivo.txt
chmod 640 arquivo.txt

Agora, entre com outro usuário e tente abrir o arquivo:

su - usuario2
cat arquivo.txt

Adicione este usuário ao grupo analistas e tente novamente:

sudo usermod -aG analistas usuario2

echo e Redirecionadores

echo "Linha inicial" > arquivo.txt   # cria e escreve
echo "Outra linha" >> arquivo.txt    # adiciona ao final
cat arquivo.txt
Logo UFPR

Analisando Pacotes com tcpdump

Logo Curso

O tcpdump permite capturar e analisar pacotes de rede:

sudo tcpdump -i any

Exemplos:

sudo tcpdump -i eth0 port 80          # tráfego HTTP
sudo tcpdump -n host 192.168.0.1      # IP específico
sudo tcpdump -w captura.pcap          # salvar para Wireshark
sudo tcpdump -A port 21               # mostrar conteúdo ASCII

Quiz – Processos e Shell

Responda as seguintes questões:

1. O que o comando nohup faz?

2. Como verificar quais processos estão em segundo plano?

3. Para alterar a prioridade de um processo em execução usamos:

4. O que faz echo "abc" >> file.txt?

5. Qual comando mostra conexões de rede?

6. Qual sinal é enviado com kill -9?

7. Como listar processos em formato de árvore?

8. Qual comando mostra uso de I/O em tempo real?

9. O que faz o comando disown?

10. Como matar todos os processos de um usuário?