Ubuntu Server • Guia de aula

Comandos essenciais para trabalhar no terminal Linux

Material de referência para alunos iniciantes: navegação, arquivos, leitura de logs, rede, pacotes, serviços, usuários, permissões e um mini servidor web para prática.

Como pensar no terminal

O terminal funciona como uma conversa direta com o sistema. Cada comando é uma ordem: alguns comandos apenas mostram informações, outros alteram arquivos, serviços, permissões ou o próprio funcionamento do servidor.

Seguro para praticar

Comandos de leitura

São comandos que apenas mostram informações, como arquivos, memória, disco, rede e processos.

pwd
ls
free -h
df -h
hostname -I
Exige atenção

Comandos que modificam o sistema

Alteram arquivos, pacotes, permissões, usuários ou serviços. Use com atenção, principalmente com sudo.

sudo apt install nginx
chmod +x script.sh
sudo systemctl restart ssh
Regra prática para os alunos Antes de executar um comando com sudo, entenda o que ele muda. sudo é como pegar a chave da sala do servidor: você consegue resolver problemas, mas também consegue quebrar coisas importantes.

Leitura de arquivos

Comandos para abrir arquivos de texto, ler partes específicas e acompanhar arquivos sendo atualizados em tempo real.

cat

Mostra o conteúdo inteiro de um arquivo no terminal.

cat /etc/os-release

less

Abre um arquivo para leitura com rolagem. Use q para sair.

less /etc/os-release

Pesquisa dentro do less

Dentro do less, use barra para pesquisar texto.

/erro
q

head

Mostra o começo de um arquivo.

head /etc/os-release
head -n 20 /etc/os-release

tail

Mostra o final de um arquivo.

tail /etc/os-release
tail -n 20 /etc/os-release

tail -f

Acompanha um arquivo em tempo real. Para logs do sistema, prefira journalctl -f.

journalctl -f
Observação sobre /var/log/syslog Algumas instalações do Ubuntu Server podem não ter o arquivo /var/log/syslog. Para aula, journalctl costuma ser mais confiável.

Sistema e informações da máquina

Comandos para descobrir informações do servidor: kernel, nome da máquina, tempo ligado, usuário atual, memória, disco, processador e rede.

Comando Função Exemplo
uname Mostra informações do kernel do Linux. uname -a
hostname Mostra o nome da máquina. hostname
hostnamectl Mostra informações do nome da máquina e do sistema. hostnamectl
uptime Mostra há quanto tempo o servidor está ligado. uptime
whoami Mostra qual usuário está usando o terminal. whoami
id Mostra UID, GID e grupos do usuário atual. id
date Mostra data e hora. date
timedatectl Mostra data, hora, fuso horário e sincronização de tempo. timedatectl
free Mostra uso de memória RAM. free -h
df Mostra espaço usado em discos e partições montadas. df -h
du Mostra o tamanho de arquivos e pastas. du -sh /home
du -sh *
lsblk Lista discos, partições e pontos de montagem. lsblk
lscpu Mostra informações do processador. lscpu
ip Mostra interfaces de rede, endereços IP e rotas. ip a
ip route

Processos e desempenho

Processos são programas em execução. Esses comandos ajudam a visualizar, filtrar e encerrar processos.

top

Mostra processos em tempo real.

top

htop

Versão mais visual e prática do top. Pode não vir instalada por padrão.

sudo apt install htop
htop

ps

Lista processos em execução.

ps aux

grep

Filtra texto. Com processos, ajuda a encontrar um programa específico.

ps aux | grep '[s]sh'

pgrep

Procura processos pelo nome e mostra o PID.

pgrep -a ssh
Cuidado

kill

Encerra um processo pelo PID. kill -9 força o encerramento.

kill 1234
kill -9 1234
Analogia para kill -9 Encerrar normalmente é como desligar um aparelho pelo botão. Usar kill -9 é como puxar o cabo da tomada.

Rede

Comandos para testar conexão, ver IP, acessar páginas pelo terminal, baixar arquivos, consultar DNS, rotas e portas abertas.

ping

Testa conexão com outro endereço. Use -c para limitar a quantidade de testes.

ping -c 4 google.com
ping -c 4 8.8.8.8

curl

Acessa URLs pelo terminal e mostra a resposta.

curl ifconfig.me
curl https://example.com

wget

Baixa arquivos a partir de uma URL.

wget https://example.com/arquivo.zip

ss

Mostra portas abertas e conexões. Com sudo, exibe mais detalhes dos processos.

sudo ss -tulnp

dig

Consulta DNS, ou seja, traduz nomes de sites para endereços IP.

sudo apt install dnsutils
dig google.com

traceroute

Mostra o caminho aproximado dos pacotes até um servidor.

sudo apt install traceroute
traceroute google.com

ssh

Acessa outro servidor remotamente.

ssh usuario@ip-do-servidor
ssh aluno@192.168.0.25

hostname -I

Mostra rapidamente o IP da máquina na rede.

hostname -I
Sobre portas Uma porta é como uma recepção específica dentro do servidor. O serviço web pode atender na porta 80, o SSH geralmente na 22, e um servidor Python simples pode usar a 8000.

Pacotes e atualizações

No Ubuntu Server, o apt é usado para atualizar a lista de programas, instalar, remover e consultar pacotes.

apt update

Atualiza a lista de pacotes disponíveis nos repositórios.

sudo apt update

apt upgrade

Atualiza os pacotes instalados no sistema.

sudo apt upgrade

apt install

Instala programas e ferramentas.

sudo apt install nginx

apt remove

Remove programas instalados.

sudo apt remove nginx

apt search

Pesquisa pacotes disponíveis.

apt search apache

apt show

Mostra informações detalhadas sobre um pacote.

apt show nginx
Pacotes úteis para a aula
sudo apt update
sudo apt install tree htop curl wget dnsutils traceroute zip unzip fastfetch

Serviços do sistema

Serviços são programas que ficam rodando em segundo plano, como SSH, Nginx, banco de dados ou firewall.

systemctl status

Mostra o estado de um serviço.

systemctl status ssh
systemctl status nginx

systemctl start

Inicia um serviço.

sudo systemctl start ssh

systemctl stop

Para um serviço.

sudo systemctl stop ssh

systemctl restart

Reinicia um serviço.

sudo systemctl restart ssh

systemctl enable

Faz o serviço iniciar automaticamente junto com o sistema.

sudo systemctl enable ssh

systemctl disable

Remove o início automático do serviço.

sudo systemctl disable ssh
SSH pode não vir instalado Se systemctl status ssh não encontrar o serviço, instale o servidor SSH:
sudo apt install openssh-server
systemctl status ssh

Logs

Logs são registros do que aconteceu no sistema. Eles ajudam a encontrar erros, acessos, falhas e eventos importantes.

journalctl

Mostra logs do sistema registrados pelo systemd.

journalctl

journalctl -xe

Mostra logs recentes com detalhes extras de erro e contexto.

journalctl -xe

journalctl -u

Mostra logs de um serviço específico.

journalctl -u ssh
journalctl -u nginx

journalctl -f

Acompanha logs em tempo real.

journalctl -f
journalctl -u ssh -f

dmesg

Mostra mensagens do kernel, úteis para entender boot, hardware, drivers e erros de dispositivo.

dmesg
dmesg | less

Logs do Nginx

Acompanha acessos ao servidor Nginx em tempo real.

sudo tail -f /var/log/nginx/access.log

Usuários e permissões

Comandos para criar usuários, trocar senha, consultar grupos, alterar permissões e alterar dono de arquivos.

adduser

Cria um novo usuário no sistema.

sudo adduser aluno

passwd

Altera a senha de um usuário.

sudo passwd aluno

usermod

Altera dados do usuário. Exemplo: adicionar o usuário ao grupo sudo.

sudo usermod -aG sudo aluno

groups

Mostra os grupos de um usuário.

groups aluno

chmod

Altera permissões de leitura, escrita e execução.

chmod +x script.sh
chmod 755 script.sh

chown

Altera o dono e o grupo de um arquivo ou pasta.

sudo chown aluno:aluno arquivo.txt

sudo -iu

Entra como outro usuário usando permissão administrativa.

sudo -iu aluno
whoami
pwd

Analogia

chmod define quem pode abrir, escrever ou executar. chown define quem é o dono.

Compactação e arquivos

Comandos para compactar e extrair arquivos nos formatos comuns em Linux e em ambientes compartilhados.

zip

Compacta arquivos no formato ZIP.

sudo apt install zip unzip
zip arquivos.zip aula.txt resumo.txt

unzip

Extrai arquivos ZIP.

unzip arquivos.zip

tar criando arquivo

Compacta uma pasta no formato .tar.gz.

tar -czvf backup.tar.gz projetos/

tar extraindo arquivo

Extrai um arquivo .tar.gz.

tar -xzvf backup.tar.gz

tar vendo conteúdo

Lista o conteúdo de um arquivo compactado sem extrair.

tar -tzf backup.tar.gz

Comandos bons para demonstrar em aula

Pequenas práticas que mostram organização de projeto, servidor web, rede, logs e automação com script.

Criar uma estrutura de projeto web

Mostra organização básica de pastas em um projeto HTML, CSS e JavaScript.

mkdir -p site/{css,js,img}
touch site/index.html site/css/style.css site/js/script.js
tree site

Criar um mini servidor web com Python

Cria uma página simples e publica a pasta atual na porta 8000.

mkdir servidor-aula
cd servidor-aula
echo "<h1>Servidor funcionando</h1>" > index.html
python3 -m http.server 8000
Atenção Esse comando publica a pasta atual na rede. Não execute dentro de uma pasta com arquivos pessoais.

Acessar o mini servidor pelo navegador

Descubra o IP do servidor e acesse pela porta 8000.

hostname -I
http://IP-DO-SERVIDOR:8000

Ver portas abertas

Mostra serviços escutando conexões no servidor.

sudo ss -tulnp

Instalar e testar Nginx

Instala um servidor web real e testa localmente.

sudo apt update
sudo apt install nginx
systemctl status nginx
curl localhost

Abrir Nginx pela rede

Use o IP do servidor no navegador de outra máquina da mesma rede.

hostname -I
http://IP-DO-SERVIDOR
sudo ufw status
sudo ufw allow 'Nginx HTTP'

Monitorar logs do Nginx

Enquanto alguém acessa o servidor, o log aparece em tempo real.

sudo tail -f /var/log/nginx/access.log

Criar um usuário de teste

Cria o usuário e entra nele usando permissão administrativa.

sudo adduser aluno
sudo -iu aluno
whoami
pwd

Criar um script simples de status

Script para mostrar usuário atual, nome da máquina, tempo ligado, memória e disco.

nano status.sh
#!/bin/bash

echo "Usuário atual: $(whoami)"
echo "Nome da máquina: $(hostname)"
echo "Tempo ligado:"
uptime
echo "Memória:"
free -h
echo "Disco:"
df -h
chmod +x status.sh
./status.sh

Procurar texto dentro de arquivos

Filtra linhas que contêm uma palavra específica.

grep "erro" arquivo.txt
grep -i "error" arquivo.txt

Contar linhas, palavras e caracteres

Bom para mostrar processamento de texto pelo terminal.

wc aula.txt
wc -l aula.txt

Comandos com efeito visual interessante

Comandos simples para deixar a aula mais visual. Eles não são essenciais para administração do servidor, mas ajudam a chamar atenção.

cmatrix

Mostra um efeito visual estilo Matrix no terminal.

sudo apt install cmatrix
cmatrix

sl

Mostra um trem passando no terminal. É uma brincadeira com quem digita sl em vez de ls.

sudo apt install sl
sl

figlet

Cria textos grandes em ASCII.

sudo apt install figlet
figlet Ubuntu Server

toilet

Parecido com figlet, com estilos diferentes.

sudo apt install toilet
toilet Linux

fastfetch

Mostra informações do sistema com visual organizado.

sudo apt install fastfetch
fastfetch

Comandos perigosos para mostrar apenas como alerta

Esta parte deve ser explicada teoricamente. Não é recomendado entregar comandos destrutivos prontos para copiar.

Não execute comandos destrutivos em máquinas reais Use exemplos conceituais, prints ou máquinas virtuais descartáveis. Aluno iniciante pode copiar por curiosidade e travar ou apagar o sistema.
Não executar

Apagar o sistema

Comandos recursivos com rm e sudo podem apagar arquivos essenciais. Versões modernas têm algumas proteções, mas variações continuam perigosas.

Exemplo conceitual: remover tudo a partir da raiz do sistema
Não executar

Fork bomb

Comando malicioso que cria processos infinitos até travar a máquina. É como uma impressora fazendo cópias de si mesma sem parar.

Exemplo conceitual: processo que se multiplica infinitamente
Não executar

Permissão total no sistema inteiro

Dar permissão total recursiva para todos pode destruir a segurança do sistema e quebrar serviços.

Exemplo conceitual: chmod recursivo na raiz do sistema
Não executar

Alterar dono do sistema inteiro

Mudar o dono de arquivos críticos pode impedir serviços, login, atualizações e inicialização correta.

Exemplo conceitual: chown recursivo na raiz do sistema
Não executar

Formatar disco

Comandos como mkfs criam um novo sistema de arquivos e podem apagar dados permanentemente.

Exemplo conceitual: mkfs em uma partição ou disco real

Sequência de aula prática curta

Atividade sugerida: montar e monitorar um mini servidor web no Ubuntu Server.

Atividade: montando e monitorando um mini servidor

hostname
hostname -I
uptime
free -h
df -h
mkdir servidor-aula
cd servidor-aula
echo "<h1>Aula de Ubuntu Server</h1>" > index.html
python3 -m http.server 8000
http://IP-DO-SERVIDOR:8000
sudo ss -tulnp
Ctrl + C
Problemas comuns Se o servidor não abrir no navegador, normalmente é IP errado, firewall ativo, porta bloqueada ou computadores em redes diferentes.

Problemas principais para explicar aos alunos

Pontos importantes para evitar erro em laboratório e em máquina real.

Segurança

Comandos destrutivos

Evite executar comandos com sudo, rm -rf, chmod -R, chown -R e mkfs sem entender exatamente o alvo.

Usabilidade

Aluno se perde nas pastas

Use pwd, ls e tree com frequência. O caminho da pasta funciona como o endereço de uma casa dentro do sistema.

Rede

Servidor não abre no navegador

Verifique IP, firewall, porta usada e se as máquinas estão na mesma rede.

Dependências

Comando não encontrado

Ferramentas como tree, htop, figlet, cmatrix, dig, traceroute, zip e fastfetch podem não vir instaladas por padrão.

Performance

Comandos lentos

Comandos que analisam muitos arquivos, como du em pastas grandes ou leitura de logs enormes, podem ficar lentos em servidores fracos.

Boa prática

Comece por comandos de leitura

Antes de alterar algo, use comandos que apenas mostram informações. É como olhar o painel do carro antes de mexer no motor.