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:
Spara dormir,Rpara em execução,Zpara zumbi,Tpara 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ção6 (rw-): leitura e escrita5 (r-x): leitura e execução4 (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 dotop.
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
ipara entrar no modo de inserção e começar a editar o texto. - Após editar, pressione
Escpara sair do modo de inserção e voltar ao modo de comando. - No modo de comando:
- Digite
:q!e pressioneEnterpara sair sem salvar as alterações. - Digite
:wq!e pressioneEnterpara salvar as alterações e sair. - Digite
:wpara apenas salvar as alterações.
- Digite
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:
- Mova o cursor para o início do texto a ser cortado.
- Pressione
Ctrl+^(ouAlt+A) para marcar o início do bloco. - Mova o cursor para o final do bloco. O texto será destacado.
- Pressione
Ctrl+Kpara cortar o bloco selecionado.
Ctrl+W: Procurar por uma string de texto. Digite o texto e pressioneEnter.Alt+W: Repetir a última pesquisa.Ctrl+O: Salvar o arquivo (será pedido para confirmar o nome do arquivo, pressioneEnter). Se você pressionarCtrl+Caqui, 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.