Guia Prático de Comandos Linux Fundamentais

Gerenciamento de Processos

Acompanhar e controlar os processos em execução é uma tarefa essencial na administração de sistemas Linux. Ferramentas como ps e top oferecem visibilidade detalhada.

Listagem de Processos

O comando ps (process status) exibe informações sobre os processos ativos. A combinação de opções permite diferentes visualizações:

# Exibe todos os processos em execução no sistema, com formato detalhado (BSD-style)
ps aux

# Exibe todos os processos (e de outros usuários), com formato de lista completa (System V-style)
ps -ef

Entendendo a Saída de ps aux

  • USER: Nome do usuário proprietário do processo.
  • PID: Identificador único do processo.
  • %CPU: Porcenatgem de uso da CPU pelo processo desde a última atualização.
  • %MEM: Porcentagem de uso da memória física pelo processo.
  • VSZ: Tamanho da memória virtual utilizada pelo processo (em KB).
  • RSS: Tamanho da memória física residente (RAM) utilizada pelo processo (em KB).
  • TTY: O terminal de controle associado ao processo (? indica que não há um terminal).
  • STAT: Estado atual do processo (ex: S para dormir, R para em execução, Z para zumbi, T para parado/rastreado).
  • START: Hora de início do processo.
  • TIME: Tempo total de CPU consumido pelo processo.
  • COMMAND: O comando que iniciou o processo e seus argumentos.

Monitoramento de Conexões de Rede

O comando netstat (network sttaistics) é útil para verificar conexões de rede ativas, portas de escuta e rotas.

# Lista todas as portas TCP e UDP abertas e os programas associados, em formato numérico
netstat -ntpl

Finalizando Procesoss

Em certas situações, é necessário encerrar processos. O comando kill é a ferramenta principal para isso.

Encerrar um Processo pelo PID

Para finalizar um processo específico, use kill seguido do seu PID.

# Encerra um processo de forma "gentil" (permite que o processo se encerre adequadamente)
kill PID_DO_PROCESSO

# Encerra um processo de forma "forçada" (sinal SIGKILL, o processo não pode ignorar)
kill -9 PID_DO_PROCESSO

# Exemplo: Finalizar o processo com PID 2710 de forma forçada
kill -9 2710

Encerrar Processos por Nome

Quando múltiplos processos com o mesmo nome precisam ser encerrados, killall ou pkill são mais eficientes.

# Encerra todos os processos com um nome específico
killall -9 NOME_DO_PROCESSO

# Exemplo: Encerrar todas as instâncias do Docker
killall -9 docker

# Busca processos pelo nome e os encerra
pkill -f NOME_DO_PROCESSO

# Exemplo: Encerrar processos relacionados ao Docker de forma flexível
pkill -f docker

Gestão de Usuários

Administrar usuários é fundamental para a segurança e organização do sistema.

Alterar Usuário

O comando su (substitute user) permite mudar para outro usuário no terminal atual.

# Mudar para outro usuário (mantém o ambiente do usuário atual)
su nome_do_usuario

# Mudar para outro usuário e carregar o ambiente completo desse usuário (como se fosse um novo login)
su - nome_do_usuario

# Mudar para o usuário root e carregar seu ambiente
su -

Gerenciar Senhas

O comando passwd é usado para alterar senhas de usuários.

# Alterar a senha do usuário root
sudo passwd root

# Alterar a senha de um usuário específico
sudo passwd nome_do_usuario

Criar e Modificar Usuários

useradd cria novos usuários e usermod modifica as propriedades de usuários existentes.

# Criar um novo usuário chamado 'devuser', com diretório home
useradd -m devuser

# Adicionar o usuário 'devuser' ao grupo 'sudo' para conceder privilégios administrativos
usermod -aG sudo devuser
# -a: adicionar ao grupo
# -G: especificar o(s) grupo(s)

Alterar o Shell Padrão

O shell padrão de um usuário pode ser alterado com chsh (change shell).

# Alterar o shell padrão do usuário 'devuser' para Bash
chsh -s /bin/bash devuser

Permissões de Arquivos

O gerenciamento de permissões é crucial para a segurança dos arquivos e diretórios.

Comando chmod

chmod (change mode) modifica as permissões de acesso a arquivos e diretórios. As permissões podem ser definidas simbolicamente ou por números octais.

# Sintaxe: chmod [referências][operador][permissões] arquivo
# Referências: u (usuário), g (grupo), o (outros), a (todos)
# Operador: + (adicionar), - (remover), = (definir exatamente)
# Permissões: r (leitura), w (escrita), x (execução)

# Exemplo: Conceder permissão de leitura, escrita e execução para o usuário, grupo e outros no arquivo 'script.sh'
chmod ugo+rwx script.sh
# Ou, de forma equivalente em modo octal:
chmod 777 script.sh

Modo Octal: Cada permissão (rwx) tem um valor numérico:

  • r (read) = 4
  • w (write) = 2
  • x (execute) = 1

A soma desses valores para cada categoria (usuário, grupo, outros) forma o número octal.

  • 7 (rwx): leitura, escrita e execução
  • 6 (rw-): leitura e escrita
  • 5 (r-x): leitura e execução
  • 4 (r--): somente leitura

Aplicações Comuns de chmod

# Conceder permissão máxima (leitura, escrita, execução) a todos para o arquivo 'meuarquivo.txt'
chmod 777 meuarquivo.txt

# Conceder permissão máxima recursivamente (incluindo subdiretórios e arquivos) para 'minhapasta'
chmod -R 777 minhapasta

Monitoramento de Recursos do Sistema

Para entender como o sistema está utilizando seus recursos, comandos como top, free e df são indispensáveis.

Visão Dinâmica com top

O comando top oferece uma visão em tempo real dos processos em execução, uso da CPU, memória e outras estatísticas.

# Iniciar o monitoramento dinâmico do sistema
top

Interagindo com top (Teclas de Atalho)

  • s: Alterar o intervalo de atualização da tela.
  • l: Alternar a exibição da média de carga.
  • t: Alternar a exibição das informações de tarefas e CPU.
  • m: Alternar a exibição das informações de memória e swap.
  • N: Organizar a lista de processos por PID.
  • P: Organizar a lista de processos por uso de CPU (padrão).
  • M: Organizar a lista de processos por uso de memória.
  • h: Exibir ajuda.
  • n: Definir o número de processos a serem exibidos.
  • q: Sair do top.

Colunas Principais em top

  • PID: Identificador do processo.
  • USER: Nome do usuário proprietário.
  • PR: Prioridade de agendamento (real-time ou nice).
  • NI: Valor de "nice" do processo (influencia a prioridade). Valores menores indicam maior prioridade.
  • VIRT: Memória virtual total utilizada (em KB).
  • RES: Memória física residente (não trocada para swap) utilizada (em KB).
  • SHR: Memória compartilhada utilizada (em KB).
  • S: Estado do processo (D: sono ininterrupto, R: executando, S: dormindo, T: parado, Z: zumbi).
  • %CPU: Percentual de uso da CPU desde a última atualização.
  • %MEM: Percentual de uso da memória física disponível.
  • TIME+: Tempo total de CPU utilizado pelo processo (com precisão de centésimos de segundo).
  • COMMAND: O comando que iniciou o processo.

Informações da CPU

# Exibir informações detalhadas da CPU
grep "model name" /proc/cpuinfo | cut -d: -f2

# Verificar a arquitetura da CPU (32 ou 64 bits)
getconf LONG_BIT

Informações da Memória

# Exibir o total de memória física instalada
grep MemTotal /proc/meminfo

# Exibir uso de memória e swap de forma amigável (human-readable)
free -h

# Apenas o total de memória RAM em megabytes
free -m | grep "Mem" | awk '{print $2}'

Informações de Armazenamento

# Exibir o uso do disco rígido dos sistemas de arquivos montados (human-readable)
df -h

# Listar as partições do disco rígido
sudo fdisk -l

# Exibir o espaço ocupado pelo diretório atual (human-readable)
du -sh .

# Exibir o espaço ocupado por um diretório específico (ex: /home)
du -sh /home

Informações do Sistema Linux

Para identificar a distribuição, versão do kernel e outros detalhes do sistema.

Versão da Distribuição

# Exibir informações da versão da distribuição (comum em sistemas baseados em Red Hat)
cat /etc/redhat-release
# Ou para sistemas mais modernos e genéricos:
cat /etc/os-release

Versão do Kernel

# Exibir a versão do kernel Linux
uname -r

# Exibir todas as informações do sistema (nome do kernel, nome do host, versão do kernel, arquitetura, etc.)
uname -a

Operações de Data e Hora

Gerenciar a data e hora do sistema é importante para logs, agendamento e sincronização.

# Exibir a data e hora atuais
date

# Definir a data para 6 de setembro de 2021
date -s 20210906

# Definir a hora para 18:30:00
date -s 18:30:00

# Definir a data e hora simultaneamente
date -s "2021-09-06 18:30:00"

# Sincronizar o relógio do sistema com o hardware clock (BIOS)
hwclock --systohc

# Exibir o fuso horário atual
date -R

# Remover o link simbólico do fuso horário padrão
sudo rm -rf /etc/localtime

# Definir o fuso horário para São Paulo
sudo ln -s /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime

Gerenciamento de Pacotes

Visualizar pacotes instalados no sistema.

# Listar todos os pacotes RPM instalados
rpm -qa

# Contar o número de pacotes RPM instalados
rpm -qa | wc -l

# Contar o número de pacotes instalados usando YUM (comum em CentOS/RHEL)
yum list installed | wc -l

Controle de Energia

Comandos para reiniciar e desligar o sistema.

# Reiniciar o sistema
reboot
# Alternativas:
# init 6
# Ctrl+Alt+Del (em alguns ambientes)

# Desligar o sistema imediatamente
shutdown -h now
# Alternativas:
# init 0
# poweroff

Serviços com Systemctl

systemctl é a ferramenta padrão para gerenciar serviços no sistema systemd.

Exemplos utilizando um serviço genérico (e.g., um servidor web ou banco de dados):

# Iniciar um serviço
systemctl start meu_servico

# Parar um serviço
systemctl stop meu_servico

# Reiniciar um serviço
systemctl restart meu_servico

# Verificar o status de um serviço
systemctl status meu_servico

# Habilitar um serviço para iniciar automaticamente na inicialização do sistema
systemctl enable meu_servico

# Desabilitar um serviço de iniciar automaticamente
systemctl disable meu_servico

# Verificar se um serviço está habilitado para iniciar automaticamente
systemctl is-enabled meu_servico

# Listar todos os serviços habilitados
systemctl list-unit-files | grep enabled

# Listar serviços que falharam ao iniciar
systemctl --failed

Conexão Remota e Transferência de Arquivos

SSH (Secure Shell)

Para acessar um servidor remotamente de forma segura.

# Conectar como 'root' ao servidor com o endereço IP especificado
ssh root@seu_endereco_ip

SCP (Secure Copy Protocol)

Para copiar arquivos e diretórios entre máquinas de forma segura.

# Copiar o conteúdo do diretório local '/home/meus_arquivos/' para o diretório '/dados_servidor/' no servidor remoto
scp -r /home/meus_arquivos/* usuario_remoto@seu_endereco_ip:/dados_servidor/

Edição de Texto na Linha de Comando

Editores de texto baseados em terminal como vi (ou vim) e nano são indispensáveis.

Editor Vi/Vim

vim é uma versão aprimorada do vi, com mais recursos e melhor destaque de sintaxe.

# Criar ou abrir um arquivo chamado 'configuracao.txt'
vi configuracao.txt

Operações básicas no Vi/Vim:

  • Pressione i para entrar no modo de inserção e começar a editar o texto.
  • Após editar, pressione Esc para sair do modo de inserção e voltar ao modo de comando.
  • No modo de comando:
    • Digite :q! e pressione Enter para sair sem salvar as alterações.
    • Digite :wq! e pressione Enter para salvar as alterações e sair.
    • Digite :w para apenas salvar as alterações.

Editor Nano

nano é um editor de texto mais simples e intuitivo para iniciantes.

# Criar ou abrir um arquivo chamado 'meu_roteiro.sh'
nano meu_roteiro.sh

# Abrir um arquivo desativando a quebra automática de linha
nano -w /etc/fstab

Operações básicas no Nano (comandos são geralmente Ctrl + letra):

  • Ctrl+K: Cortar a linha atual.
  • Ctrl+U: Colar o texto cortado.
  • Para cortar um bloco de texto:
    1. Mova o cursor para o início do texto a ser cortado.
    2. Pressione Ctrl+^ (ou Alt+A) para marcar o início do bloco.
    3. Mova o cursor para o final do bloco. O texto será destacado.
    4. Pressione Ctrl+K para cortar o bloco selecionado.
  • Ctrl+W: Procurar por uma string de texto. Digite o texto e pressione Enter.
  • Alt+W: Repetir a última pesquisa.
  • Ctrl+O: Salvar o arquivo (será pedido para confirmar o nome do arquivo, pressione Enter). Se você pressionar Ctrl+C aqui, a operação de salvamento será cancelada.
  • Ctrl+X: Sair do editor. Se houver alterações não salvas, será perguntado se deseja salvá-las.

Tags: Linux Bash shell systemctl ps

Publicado em 6-14 04:07 por Thomas