Ter fluência no uso da linha de comando é um pré-requisito para qualquer bom administrador (de redes ou sistemas). Morimoto, Carlos E. Servidores Linux – Guia Prático. Sul Editores, 2008
A frase acima resume a importância de ter conhecimento no famoso terminal de comandos (ou CLI, de Command-Line Interface), ferramenta essencial de sistemas operacioanais baseados em Linux e também de outras diversas aplicações, como equipamentos de rede e outros sistemas operacionais, como o Mac e o Windows. Mesmo para aqueles que tentam fugir do terminal, hoje, com a ascensão da cloud computing, onde é comum contratar e administrar um servidor dedicado para a execução de sistemas, o contato com o terminal (de comandos) é quase inevitável.
No início o terminal é realmente algo meio assustador. É difícil o “marinheiro de primeira viagem” que não tenta resolver alguma coisa com o mouse, que não funciona no terminal. Assim, é normal ter muitas dúvidas e frequentemente ter de pesquisar anotações e páginas de manuais para se lembrar dos comandos, mesmo os mais simples, mas, com o tempo, usar o terminal acaba sendo natural e muito prático.
Se você é, ou está estudando para ser, um profissional de TI, você precisa aprender a usar o terminal pois, acredite ou não, um dia você precisará dele (ou descobrirá que com ele, muitas coisas são bem mais práticas, eficientes e até mais simples).
Você sabia que o Mac OS é um sistema baseado em Unix assim como o Linux? Isso quer dizer que o Mac também possui um terminal e muitos dos comandos são idênticos ao do Linux. O Windows, por sua vez, também tem seu terminal, o PowerShell (além do clássico Command Prompt).
Confira abaixo um Guia de Comandos do Linux, uma referência simples para o uso da linha de comando e dos principais utilitários de administração de sistemas Linux (principalmente baseados no Linux Debian e Ubuntu).
Guia de Comandos do Linux
Introdução e observações do Linux
O Linux é um sistema operacional criado por Linus Torvalds, baseado no Mimix, um pequeno sistema UNIX desenvolvido por Andrew S. Tanenbaum, um guru do mundo da tecnologia, especialmente em Sistemas Operacionais e Redes de Computadores.
Comandos e variáveis no Linux são ditos como case sensitive, ou seja, diferenciam letras maiúsculas de minúsculas. Atente-se com esta questão pois “A” e “a” são caracteres distintos!
O shell (terminal / console) é uma Interface de comandos do sistema Linux, mais precisamente um “interpretador de comandos”. O bash (Bourne Again Shell), é o interpretador utilizado normalmente. No Linux com interface gráfica, como o Ubuntu versão Desktop por exemplo, você pode procurar pelo Terminal em seu menu principal. Nas versões Server, o terminal é a interface principal do sistema.
A tecla tab é um poderoso recurso de autocompletar e auto listar do bash. Basta digitar parte de algum comando ou arquivo/diretório e teclar tab que ele auto-completará seu nome. Se ele encontrar mais de uma entrada com o que já foi digitado ele não trará resultados até que você tecle tab novamente, mostrando então as opções encontradas.
No Linux com interface gráfica (geralmente na versão desktop), é possível trabalhar com diversos terminais de comando ao mesmo tempo. Abra um terminal (shell) e tecle CTRL + ALT + Fx para alterar os terminais do sistema. O ALT + F7 volta ao ambiente gráfico ou ao primeiro terminal (principal) o tty1.
*Para localizar um comando, neste manual, tecle CTRL + F (localizar) e digite # nome do comando.
SSH (Secure Shell)
O protocolo SSH permite uma conexão remota ao terminal do Linux, facilitando seu acesso de qualquer localização. Para se conectar remotamente (SSH) ao Linux através do Windows recomenda-se o uso do software Putty, já através do Linux, pode-se conectar diretamente pelo terminal (shell) usando o comando # ssh user@endereço-ip-do-servidor.
Alguns comandos, como aqueles que possuem funções importantes e/ou críticas para o sistema, são de uso exclusivo do usuário root (o usuário administrador do Linux). Isso quer dizer que você não terá privilégios para executá-lo a partir de um usuário comum. Usuários comuns também não possuem permissões para editar arquivos do sistema. Em casos como este, você precisa se conectar ao servidor com o usuário root. Veja os comandos # su ou # sudo abaixo, neste guia.
O caractere “$”, exibido ao final do terminal indica que você está conectado com um usuário comum, exemplo: daniel@server:/$. Quando você está conectado com um super usuário, como o root, o caractere exibido é o “#”, como: root@server:/#.
Estrutura de diretórios do Linux
No Linux, diferente do Windows, da Microsoft, que nomeia as partições com letras, como C:\ e D:\ por exemplo, tudo faz parte de um único diretório, chamado de diretório raiz, o famoso “/” (barra). Até mesmo dispositivos como Pen Drives e CD-Roms são tratados como diretórios (veja detalhes abaixo). Outro sistema que segue este mesmo padrão de hierarquia é o OS X (Macintosh), da Apple, que também é uma vertente do UNIX. Por esta razão, a grande maioria dos comandos listados neste manual são compatíveis com o OS X. Para utilizar a linha de comando em sistemas OS X, procure pelo aplicativo “Terminal”, no Finder / Aplicativos / Utilitários / Terminal.
Para o Linux, tudo é um arquivo ou um processo, independente do dispositivo, por esta razão, não é possível criar um arquivo e um diretório com o mesmo nome em um mesmo diretório.
Vejamos uma explicação sobre os principais diretórios que compõem o sistema de arquivos:
/ – Raíz. Identificada pelo código hexadecimal 83 (0x83)
/bin: Diretório de programas (binários) essenciais para o sistema.
Ex: cat, cp, mv, ls, more e etc.
/boot: Arquivos necessários para a inicialização do sistema (boot loader), inclusive o Kernel.
Ex: Grub, Lilo
/dev: Arquivos usados para acessar os dispositivos de “bloco” (devices) do computador, como os discos.
Ex: /dev/sda1
/etc: Arquivos de configuração de vários aspectos do sistema e configurações gerais (.conf) de programas.
Ex: /etc/crontab
/home: Diretório onde são armazenados os arquivos de cada usuário.
Ex: /home/daniel/
/lib: Diretório com as bibliotecas (library) essenciais para os arquivos binários (como /bin/ e /sbin/)
/media: Ponto de “montagem” para mídia removível, como pendrives, câmeras digitais, HD’s usb, cd-roms.
/mnt: Sistemas de arquivos “montados” para uso temporário.
/opt: Diretório utilizado para aplicativos opcionais serem instalados.
/proc: Diretório de sistema de arquivos virtual, que possui o estado do Kernel e processos do sistema.
Ex: /proc/cpuinfo
/root: Diretório ‘home’ do super usuário, o root.
/sbin: Diretório de programas (binários) utilizados pelo superusuário (root) para administração do sistema.
Ex: fdisk, fsck, halt, ifconfig e etc.
/tmp: Arquivos temporários criados por programas.
/srv: Dados específicos que são servidos pelo sistema.
/usr: Diretório de instalação do S.O. que contém aplicativos compartilhados, com acesso somente leitura.
Ex: /usr/bin, /usr/lib e etc. *USR: Unix System Resources
/var: Diretório de arquivos variáveis e manipulados, como logs, base de dados, emails, impressão, cache.
Ex: /var/lib/mysql, /var/lib/dhcp
Observações:
- O / e o swap (área de troca, memória ram virtual) são particões essencias para funcionamento do Linux.
- No Linux, os discos (HDs) são identificados a partir do diretório /dev e é nomeado de acordo com seu tipo de arquitetura, como IDE (hdx) e SATA / SCSI (sdx).
Exemplo de 2 discos SATA na interface 1 (a) e 2 (b):
/dev/sda – Disco SCSI / SATA conectado a interface número 1 (SATA 1)
/dev/sdb – Disco SCSI / SATA conectado a interface número 2 (SATA 2)
As partições criados nestes discos são representadas por números:
/dev/sda1 – Particão Física 1 do Disco SCSI / SATA conectado a interface 1
/dev/sda2 – Partição Lógica 2 do Disco SCSI / SATA conectado a interface 1
/dev/sdb1 – Particão Física 1 do Disco SCSI / SATA conectado a interface 2
/dev/sdb2 – Partição Física 2 do Disco SCSI / SATA conectado a interface 2
Comandos essenciais do Linux
Documentação e ajuda
# man: (manual) Exibe o manual oficial do comando, com informações detalhadas.
Exemplos:
man find: Abre o manual do comando find
man top: Abre o manual do utilitário top
*Para sair do man tecle “q”
*O diretório /usr/share/doc/ armazena manuais dos comandos, pacotes e aplicações instaladas
# help: (ajuda) Alguns comandos possui um arquivo de ajuda com informações e principais parâmetros. Para acessá-lo, basta passar o parâmetro –help.
Exemplos:
ls –help: Mostra o arquivo de ajuda do comando ls
find –help: Mostra o arquivo de ajuda do comando find
mkdir –help: Mostra o arquivo de ajuda do comando mkdir
# history: (histórico) O history armazena todos os comandos digitados no terminal no arquivo \home\userX\.bash_history. Ao acioná-lo, é exibida uma lista numerada de todos os comandos previamente digitados, em ordem de entrada. É uma facilidade muito interessante no uso do terminal.
Exemplos:
history | grep find: Busca comandos inseridos anteriormente no terminal que utilizaram o comando “find”;
history > /home/user/history.txt: Salva todos os comandos utilizados no arquivo “history.txt”.
history -c: Apaga todo o conteúdo do history
*Dica: Para navegar entre os comandos já utilizados, basta teclar seta cima e/ou seta baixo.
*É possível navegar (visualizar) no terminal usando Shift + PG Up e/ou Shift + PG Down.
# Ctrl + r: (histórico reverso) Pesquisa os comandos inseridos anteriormente no terminal. Ao digitar partes do comando o reverso efetua a busca nos comandos previamente digitados. Continue a teclar o Ctrl + r até encontrar o comando desejado. Ao encontrar, basta teclar “enter”. Para sair da pesquisa, tecle ESC.
# clear: (limpa) Simplesmente limpa a tela do terminal. O conteúdo, na verdade, é jogado para cima. (Atalho Ctrl + l)
# reset: (reinicia) Reseta as configurações de fonte do terminal (ALT + GR, digite reset, enter).
*Usado para casos em que as configurações de caracteres ficam “bagunçadas” no terminal. Não confunda este comando com o # reboot.
# grep: O grep analisa uma saída, linha por linha, procurando pelos argumentos especificados na sintaxe do comando. Utilizado para a localização de entradas em arquivos e concatenado com outros comandos.
Exemplos:
ps -aux | grep apache: Procura pela palavra Apache em todos os processos do sistema
# Ctrl + c: Termina a execução de qualquer comando/aplicativo
# Ctrl + z: Coloca um processo / programa em background (segundo plano). Tecle fg para retornar
# sudo ou # su: (superuser do) Altera/Executa o programa em modo root (superusuário).
Exemplos:
sudo bash: Altera o bash para o usuário root (Ubuntu) *Note a mudança de $ por #
sudo shutdown -h now: Solicita o desligamento (sem intervenções) doema
sudo nano /etc/resolv.conf: Edita o arquivo resolv.conf em modo root.
su –: Altera o bash para o usuário root (Debian)
# which # whereis # whatis: exibem informações sobre comandos com a sua localização no disco e seus manuais.
Data, hora e outros utilitários
# date: (data) Exibe a data e hora do sistema operacional
# hwclock: (hardware clock) Exibe o horário da BIOS
# cal: (calendar) mostra o calendário do mês atual
cal 2016: Mostra o calendário completo de 2016
# bc: Abre a calculadora do Linux
*Digite quit para sair
# > (ou 1>): Para redirecionar um resultado de uma saída (stdout “0”) para uma outra saída, ou seja, não para a tela, utiliza-se o sinal maior (>).
Exemplos:
ls -l > diretorio.txt: guarda o resultado do comando ls -l no arquivo diretorio.txt;
lspci > hardware.txt: guarda o resultado do comando lspci no arquivo hardware.txt;
lshw > computer.txt: guarda a listagem de hardware (lshw) no arquivo computer.txt
*Caso já exista, o arquivo é sobrescrito quando usado o >
*Dica: Para criar um arquivo rapidamente, simplesmente digite # > nome-do-arquivo.
# <: Para redirecionar uma entrada (stdin “1”), como um arquivo ou argumento, para outra entrada, como um programa, utiliza-se o menor (<). A entrada deixa de ser o teclado.
Exemplos:
tr ‘a-z’ ‘A-Z’ < alunos.txt: Envia o arquivo alunos para o comando ts, que troca minúsculas por MAIÚSCULAS e exibe em tela
mail contato@brasil.gov.br < mail.txt: programa mail recebe como argumento o endereço de e-mail e ao invés de utilizar o teclado como entrada padrão, o arquivo | mail.txt é redirecionado como entrada.
# 2>: Redireciona somente os erros recebidos
find / -name example.txt 2> erro.txt: Cria um arquivo erro.txt somente com erros
abc 2 > abc.error: Envia os erros da aplicação abc para o arquivo abc.error
# >>: Adiciona o conteúdo ao final de um arquivo existente. Não sobscreve!
# |: O “pipe” , ou condutor, redireciona uma saída para entrada, permitindo a concatenação de vários comandos.
Exemplos:
cat /etc/passwd | nl
cat /etc/passwd | head
ls -l | more: Lista o conteúdo, paginando o resultado.
ps aux | grep apache: Lista os processos (ps aux) com nome “apache”
lspci | grep Ethernet: Lista o hardware do computador, do tipo “Ethernet”.
# ;: permite executar comandos em sequência.
Exemplo:
date ; uptime ; cal: Executará os 3 comandos em sequência
Caracteres coringas
# *: Vale qualquer coisa e pode substituir um ou mais caracteres de um nome. Exemplo:
ls -l *.txt
ls -l foto.*
ls -l *daniel*
# ?: Substitui um caractere somente de um nome. Exemplo:
ls ?este: Listará arquivos/diretórios que termine com o nome “este”, como teste ou Teste.
ls teste??: Listará arquivos/diretórios que termine com teste e “dois” caracteres qualquer
ls 100$: Listará arquivos/diretórios que a linhas terminam com 100
ls ^100: Listará arquivos/diretórios que a linhas iniciam com 100
# $ {texto1,texto2…}: Substitui a parte de dentro das chaves pelo texto1, depois pelo texto2.
# . : (ponto) Refere-se ao diretório atual, exemplo: cp /etc/passwd .
# .. : (ponto ponto) Refere-se ao diretório pai (acima)
# ~: (til) Refere-se ao diretório home do usuário, exemplo: ls -lh ~ (Lista o conteúdo do diretório home do usuario)
# ./ – Executa um arquivo/script (que tenha permissão de execução)
./script.sh – Executa o arquivo script.sh
Trabalhando com arquivos e diretórios
# pwd: (print working directory) Informa o caminho completo do diretório atual.
pwd: Exemplo: /home/daniel/documentos
# cd: (change directory) Navega entre diretórios.
Exemplos:
cd /home/daniel: Vai ao diretório home do user daniel
cd documentos: Vai ao diretório documentos, que fica dentro do diretório atual
cd ~/documentos: Vai ao diretório Documentos do user atual (~)
cd ..: Sobe um nível (volta ao diretório anterior)
cd ../..: Sobe dois níveis
cd /: Volta ao diretório root (raiz)
cd –: Volta ao diretório utilizado anteriormente (histórico)
# ls: (list) Lista arquivos e diretórios.
Exemplos:
ls /: Lista o conteúdo da raíz do Linux
ls -h: Lista os arquivos, em forma de lista longa, exibindo informações amigáveis (tente o ls -lah)
ls -la: Lista os arquivos, incluindo ocultos (a), em forma de lista (l)
ls -l *.jpg: Lista os arquivos com extensão “jpg”
ls -l | more: O more efetua a “paginação” do resultado obtido pelo comando anterior, facilitando a leitura
ls ????c: Lista arquivos com 5 letras que terminam com a letra “c”
ls -i: Lista o inode dos arquivos (identificação no disco)
ls -lR: Lista todo o conteúdo, incluindo diretórios e subdiretórios. *Tente o ls -lR / e veja o que acontece 😉
*No Linux, todo arquivo ou diretório que começa com “.” é oculto.
# cp: (copy) Cópia de arquivos e diretórios.
Exemplos:
cp teste.txt teste2.txt: Efetua uma cópia do arquivo teste.txt
cp teste.txt /home/daniel/documentos
cp -v *.jpg /home/daniel/imagens: Copia todos os arquivos JPG e mostra o nome da cada arquivo copiado
cp /home/daniel/arquivo.zip /tmp/arquivo.zip
cp /etc/resolv.conf . : Copia o arquivo para o diretório atual (.)
cp /etc/network/interfaces{,.bkp}: Faz uma copia do arquivo informado com a ”extensao” .bkp
cp -Rfav /var/* /tmp/var/: Move todos os arquivos do diretório /var para o diretório /tmp/var.
*Opções úteis do comando cp:
-d – preserva links (atalhos);
-p – preserva permissões;
-R – cópia recursiva (dir/sub-dir);
-a – todas as opções anteriores (dpR);
-i – questiona sobre arquivos existentes no destino;
-v – verbose (exibe ações em tempo real)
*Um grupo de opções interessantes para a cópia de um lote de arquivos é o cp -via.
# mkdir: (make directory) Cria diretórios.
Exemplos:
mkdir daniel
mkdir -p documentos/cartas: Cria o diretório cartas abaixo de documentos (-p)
mkdir -p alunos/{daniel,paola,boris}: Cria o diretório alunos e 3 sub-diretórios dentro de alunos.
mkdir -p alunos/{daniel/{notas,faltas},paola,boris}
mkdir meu\ diretorio: Cria o diretorio chamado “meu diretorio”, com espaço no nome.
*Use # cd meu\ diretorio para acessar.
# rmdir: (remove directory) Remove um diretório vazio.
Exemplo:
rmdir daniel/documentos
# rm: (remove) Deleta arquivos e diretórios.
Exemplos:
rm daniel.txt
rm -f *.mp3
rm -f pagode*
rm -r teste: Apaga o diretório teste
rm -rf daniel: Apaga o diretório, mesmo contendo arquivos, sem questionar.
*Obs.: O rm -r apaga diretórios, mesmo não estando vazio. É um comando perigoso e deve ser usado com muita cautela. A execução de um “rm -rf /” pode causar a exclusão de todo o sistema de arquivos, sem solicitar confirmação (parâmetro -f) incluindo compartilhamentos de rede montados. Portanto CUIDADO!
# ln: (link) Cria link (atalhos) para arquivos/diretórios.
Exemplos:
ln -s /etc/passwd usuarios: Cria um link (soft) para o arquivo /etc/passwd
ls -s /etc/passwd: Cria um link (soft) para o arquivo passwd no diretório atual mantendo o nome original
ln -s /opt/app /home/app: Cria um link (soft) chamado app em home para o diretório /opt/app
ln -s /backup/dhcp dhcp: Cria um link (soft) para o diretorio /backup/dhcp
*Se nenhum nome for definido para o link ele preserva o nome do arquivo/diretório de destino.
# unlink: Desfaz o link criado
# mv: (move) Move / Renomeia arquivos e diretórios.
Exemplos:
mv teste.txt daniel.txt: Renomeia o arquivo teste para daniel
mv daniel.txt /home/daniel/docs: Move o arquivo daniel para o diretório docs
mv -vi *.txt /home/daniel/docs: Move todos os arquivos TXT e mostra o nome da cada arquivo copiado
# cat: (concatenate) Exibe o conteúdo de um arquivo ou direciona-o para outro.
Exemplos:
cat teste.txt: Exibe o conteúdo de teste.txt
cat /etc/network/interfaces: Exibe o conteúdo do arquivo interfaces de rede
cat > novo.txt: Cria um arquivo novo. Digite o conteúdo e tecle Ctrl + d para fechar.
# tac: Exibe o conteúdo de um arquivo de trás para frente (oposto do comando cat).
# rev (reverse lines): Exibe o conteúdo de um arquivo em forma de espelho
# less: (menos) Visualiza um arquivo em forma de lista, com pausa. Permite “subir” e “descer” a leitura
less /var/log/syslog
cat /home/daniel.txt | less
# more: (mais) Lista o arquivo com pausa de linha em linha (paginação)
more /var/log/syslog
cat /var/log/syslog | more
# cut: (cortar) Exibe o conteúdo de um arquivo em forma de coluna vertical.
Exemplos:
cut -b 1 teste.txt: Imprime cada caracter da coluna 1 do arquivo
cut -b 4 teste.txt: Imprime cada caracter da coluna 4 do arquivo
cat teste.txt | cut -f 2: Imprime a coluna 2 do arquivo (considerando que esteja separado por tabs)
# head: (cabeça) Mostra as 10 primeiras linhas de um arquivo.
Exemplos:
head /etc/passwd: Exibe as 10 primeiras linhas do arquivo passwd
head -n 15 teste.txt: Exibe as 15 primeiras linhas do arquivo passwd
# tail: (cauda) Mostra as 10 últimas linhas de um arquivo:
Exemplos:
tail /etc/passwd: Exibe as 10 últimas linhas do arquivo passwd
tail -n 2 teste.txt: Exibe as 2 últimas linhas do arquivo passwd
tail -f /var/log/messages: A opção “f” é recomendada para visualização em tempo real dos últimos logs
# nl: (number line) Utilizado para numerar linhas de um arquivo.
Exemplos:
nl /etc/passwd: Numera cada linha do arquivo passwd
nl teste: Numera cada linha do arquivo
# od: (octal dump) Visualiza o conteúdo de um arquivo em formato hexadecimal, octal ou ASCII.
Exemplos:
od -a /etc/passwd: nome dos caracteres
od -c /etc/passwd: visualiza em ASCII
od -o /etc/passwd: visualiza em Octal
od -x /etc/passwd: visualiza em Hexadecimal
# paste: Concatena linhas de diversos arquivos em colunas verticais.
# file: (arquivo) Descreve informações um determinado arquivo.
Exemplos:
file /bin/bash: Bourne Again shell
file /etc/passwd: Tipo ASCII text
file /tmp/texte.txt: Tipo ASCII text
file /bin/ls: 64-bit LSB Executable
# touch: O touch muda a data e a hora de acesso e/ou modificação dos arquivos. Ele também pode criar um arquivo vazio.
Exemplos:
touch teste.txt: Se não existir, cria o arquivo teste.txt;
touch daniel.txt: Atualiza data/hora do arquivo para a data/hora atual
touch -t 201108182300 daniel.txt: Atualiza o arquivo para 18/08/2011 – 23:00h
# pr: Formata a saída um arquivo com paginação, cabeçalho, margens e largura definidos.
Exemplos:
pr -l 25 -o 5 -d teste.txt: Formata o arquivo com largura 25, 5 espaços na margem esquerda e espaçamento duplo.
# tr: Faz a troca de um texto por outro especificado. Ele não trabalha diretamente no arquivo e deve ser usado como saída padrão de outro comando, como o cat.
Exemplos:
cat teste2.txt | tr a-z A-Z: troca todas as letras por maiúsculas
cat teste2.txt | tr -d es: apaga as letras es (em qualquer parte do texto)
cat /etc/passwd | tr “:” “;”: troca o : por ;
# wc (word count): Conta linhas, palavras e caracteres de um (ou mais) arquivo.
Exemplos:
wc /etc/passwd: Exibe o número de linhas, palavras e caracteres do arquivo passwd
wc -c teste2.txt: Quantidade de caracteres
wc -w teste2.txt: Conta as palavras de um ou mais arquivos
wc -l teste2.txt: Quantidade de linhas
wc -L teste2.txt: Numero de caracteres da maior linha
wc teste2.txt teste.txt: Estatísticas sobre os 2 arquivos
# sort: ordena o conteúdo do arquivo em ordem alfabética.
Exemplo:
sort /etc/passwd: Ordena o conteúdo do arquivo por ordem alfabética (a partir do primeiro caractere de cada linha)
# find: (localizar) O comando find localiza expressões diretamente no sistema de arquivos. Possui diversos parâmetros e expressões, exemplos:
find /home -name bash: localiza arquivos pelo nome (name)
find / -name resolv.conf
find /home -iname daniel: localiza arquivos pelo nome, desconsiderando maiúsculas/minúsculas (iname)
find /etc -name res*.conf
find /home -iname *.exe: localiza arquivos com a extensão “.exe”
find /home -iname fotos*: localiza arquivos que contenham “fotos” em seu nome
find / -name ‘*.exe’ -o -name ‘*.mp3’: localiza, em todo o sistema, arquivos do tipo .exe e .mp3
find /home -ctime 30: localiza arquivos alterados nos ultimos 30 dias
find . -mtime 2 -print: localiza arquivos, no diretório atual, modificados a 2 dias (mtime = modification time)
find . -atime +10 -print | head: localiza arquivos, no diretório atual, não acessados há mais de 10 dias
find / -used 10: localiza arquivos acessados nos ultimos 10 dias
find . -size +2048 -print: localiza arquivos, no diretório atual, maiores que 2 MB
Arquivos compactados
# tar: Utilitário para criar arquivos de backup (compactado). Principais parâmetros:
-c: cria
-x: restaura / extrai
-v: lista cada arquivo (verbose)
-t: lista os arquivos contidos no arquivo tar;
-p: preserva as permissões padrões dos arquivos
Exemplos:
tar -cvf nome.tar /etc: Cria um arquivo “nome.tar” do diretorio /etc
tar -xvf nome.tar: Descompacta um arquivo tar
tar -tvf nome.tar: Lista o conteúdo do arquivo
tar -xzvf nome.tar.gz: Executa um arquivo .tar.gz (compactado) e cria uma pasta no diretório com o nome do arquivo
tar -jxvf nome.tar.bz2: Descompactar um arquivo tar.bz2
# gzip: Utilitário para criar arquivos em formato gzip
# gzip file
# gzip -d file.gz
# zip: Utilitário para criar arquivos em formato gzip
# gunzip nomedoarquivo.zip ou
# unzip nomedoarquivo.zip
# rar: Utilitário para criar arquivos em formato rar
# unrar x nomedoarquivo.rar
# bz2: Utilitário para criar arquivos em formato bz2
# bunzip2 nomedoarquivo.bz2 (ou apenas bunzip)
*Apenas o tar é nativo no Linux. Para usar outros formatos de arquivo compactado use o apt-get install e instale o utilitário desejado.
Gerenciamento do sistema
# ps (process snapshot): Relata os processos em execução.
Exemplos:
ps -aux
ps -aux | grep mysqld
ps -f | grep apache2
ps -ef | grep apache2
# top: Permite o gerenciamento dos processos do sistema em tempo de execução. Algumas de suas opções são: k: finaliza um processo; M: ordena os processos pelo uso da memória; N: ordena os processos pelos seus PID; P: ordena os processos pelo uso da CPU (padrão); q: sai do top.
# kill: Encerra um ou mais processos em andamento pelo seu PID (process identification)
Exemplos:
kill -15 19330
kill -9 19330
# killall: Encerra um ou mais processos em andamento através do seu nome.
Exemplo: killall apache
# free: Mostra a memória do computador
Exemplo: free -m
# df: (disk free) Mostra informações de partições (sistema de arquivos).
Exemplos:
df -h: Mostra informações de forma mais amigável (h = human).
df -i: Mostra o número de inodes restante no disco ao invés do espaço disponível.
# du: (disk usage) Fornece uma lista detalhada sobre a utilização do disco. Exemplos:
du -c: Mostra um total no final da listagem
du -h: Informações amigáveis
du -ch /tmp: Informações sobre o diretório tmp
du -sh /tmp: Sumário do diretório especificado e não o total de cada subdiretório.
# lspci (list PCI devices): Lista informações e dispositivos conectados ao barramento PCI e PCI Express
lspci: Lista todos os dispositivos
lspci | grep Ethernet: Lista todos os dispositivos tipo Ethernet
# lsusb (list USB devices): Lista informações e dispositivos conectados às portas USB
# lshw (list hardware): Cria um tipo de inventário do hardware da máquina
lshw
lshw > /home/daniel/hardware.txt
# shutdown: Desliga ou Reinicia o computador (somente root)
shutdown -h now: Desliga o computador
shutdown -r now: Reinicia o computador
shutdown -r +10: Reinicia o computador em 10 minutos
# reboot: reinicia o sistema (somente root)
# uname: (unix name) Exibe informações do sistema, tais como a versão do kernel e do sistema operacional. Principais argumentos: -s, -r, -m, -n ou -a, para todas as opções anteriores.
Veja também:
cat /etc/issue (Ubuntu / Debian)
cat /etc/motd (Ubuntu / Debian)
arch (equivalente ao uname -m)
# uptime: (tempo online) Exibe o tempo de atividade do servidor, usuários logados e “load” do processador (1,5,15 minutos)
# lsof (List Open files): Lista todos arquivos abertos (em uso) no sistema, incluindo informações de processos, usuários, localização, etc.
lsof /var/log/messages: arquivos abertos por um determinado processo
lsof -u “user”: arquivos abertos identificado pelo nome de usuário
lsof -g “grupo”: arquivos abertos por um determinado grupo
lsof -p “PID”: arquivos abertos por um determinado número de processo (PID)
lsof | grep apache2: arquivos abertos pelo Apache
# fuser: Lista o processo/usuário que está executando um arquivo no sistema
fuser /var/log/messages: exibe o processo (PID) que está executando o arquivo
Gerenciamento de usuários e permissões
# w: Retorna informações gerais sobre usuários logados e seus processos (process.:: 1, 5, 15 minutos)
# who: Retorna com informações gerais sobre usuários logados
who -H: Retorna as mesmas informações mas com cabeçalho
who -a: Informa todas as conexões ao sistema incluindo ID e modo de conexão.
# whoami: (whom am I) Retorna o nome do usuário conectado.
# useradd: Cria uma nova conta usuário
useradd daniel: Cria a conta daniel
useradd -m daniel: Cria a conta daniel e o diretório padrão em /home
# userdel: Apaga uma conta de usuário
userdel usuario: apaga um usuário
userdel -r usuario: Apaga a conta e o diretorio home do usuario
# last: listagem do histórico de logins (/var/log/wtmp)
# lastb: retorna informações sobre as últimas falhas de logins no sistema
# lastlog: retorna informações sobre últimos logins de cada usuário cadastrado no sistema (/var/log/lastlog)
# id nome_do_usuario: Exibe as informações do usuário
# passwd nome_do_usuário: cria ou modifica a senha do usuário;
passwd root: Altera a senha do usuário root
# chown: (change owner) altera o dono de um diretório / arquivo
chown senna arquivo.txt -altera o dono do arquivo.txt para o usuário senna
chown senna /var/www/meusite – altera o dono do diretorio meusite para o usuário senna
# chmod: (change mode) modifica permissões de arquivos e diretórios.
chmod 755 config.php – Muda as permissões do arquivo (rwx) para: Usuario = rwx, Grupo = r-x, Outros = r-x
chmod 777 config.php – Atribui todas as permissões (rwx) a todos os Usuários, Grupos e Outros
chmod 777 diretorio – Atribui todas as permissões (rwx) ao diretório
chmod u=rwx,go=rx teste.html – A mesma permissão citada acima mas de forma diferente
chmod u=rwx,g=r-x,o=r-x teste.html – A mesma permissão citada acima mas de forma diferente
Gerenciamento de rede
# ifconfig: (interface config) Retorna com informações sobre as interfaces de rede (NIC). Também permite configurar as interfaces.
Exemplos:
ifconfig: Retorna informações de todas as interfaces de rede
ifconfig eth0: Retorna informações da interfaces eth0
ifconfig eth0 192.168.0.15 netmask 255.255.255.0 up: Configura a interface eth0 com o endereço informado
# ip: (internet protocol) Retorna com informações sobre as interfaces de rede.
Exemplos
ip a: retorna com as informações completas das interfaces de rede
ip route: retona com as informações de gateway / router
# route: gerencia as rotas de acesso do sistema
route -n
# arp: (address resolution protocol) Checa a(s) placa(s) de rede e mostra endereços de IP e MAC em cache
# ping: Efetua testes de conectividade e mostra os resultados (protocolo ICMP)
ping 8.8.8.8
ping -c 5 192.168.0.1
ping uol.com.br
# traceroute: Ferramenta de diagnóstico que rastreia a rota de um pacote através da rede/internet
*Não vem instalado em algumas distribuições do Linux. Neste caso, uso o comando # apt-get install traceroute para instalar.
# nslookup: Retorna com informações sobre os servidores DNS de um domínio
nslookup www.uol.com.br
# dig: Busca informações de DNS do domínio
dig www.uol.com.br
dig x host: Reverse lookup host
# host: Exibe informações de rede de um servidor
host www.uol.com.br
# hostname (nome do host): Exibe o nome do host/servidor
# ftp (file transfer protocol): Conecta-se a um servidor FTP
ftp meusite.com.br: Conecta-se ao servidor ftp especificado
*Digite bye ou exit para sair
# whois: Busca informações do domínio
whois uol.com.br
# netstat: Lista conexões de internet ativas, tabelas de roteamento, estatítiscas de rede e outras info.
netstat -tupan: Lista as conexões ativas (servers and established)
netstat -rn: Checa as rotas definidas
netstat | grep 192.168.0.132
netstat -an | grep ESTABLISHED | grep 192.168.0.132
Observações diversas
Arquivos referentes ao Hardware (localizados nos diretórios /proc e /sys):
cat /proc/cpuinfo: Informações do(s) processador(es)
cat /proc/dma: Informações sobre os canais de acesso a memória;
cat /proc/ioports: Informações sobre endereços de memória usados
cat /proc/interrupts: Informações sobre as IRQs (requisições de interrupção) nos processadores.
cat /proc/meminfo: Informações da memória
Arquivos referentes aos Usuários:
cat /etc/passwd: Armazena informações sobre todos os usuários do sistema
cat /etc/shadow: Armazena as senhas criptografadas dos usuários
cat /etc/group: Armazena informações sobre todos os grupos do sistema
ls /etc/skel: Estrutura de diretórios do “home”, para criação de novas contas
Arquivos referentes a Rede:
cat /etc/network/interfaces: Armazena as configurações das interfaces de rede (Linux Server)
cat /etc/resolv.conf: Armazena os endereços de DNS
cat /etc/hostname: Armazena o nome do host
/etc/init.d/networking restart: Script para reiniciar as interfaces de rede
Referências
MORIMOTO, Carlos E. Guia do Hardware – Dominando a Linha de Comando, parte 1. Disponível em: http://www.hardware.com.br/tutoriais/linha-comando
MORIMOTO, Carlos E. Guia do Hardware – Entendendo os diretórios do Linux. Disponível em: http://www.gdhpress.com.br/kurumin7/leia/index.php?p=cap1-09
MORIMOTO, Carlos E. Linux – Guia Prático (ebook). Disponível em: http://www.hardware.com.br/livros/linux/
SHOTTS, William. The Linux Command Line. Disponível em: http://ufpr.dl.sourceforge.net/project/linuxcommand/TLCL/16.07/TLCL-16.07.pdf
SAIVE, Ravi. 13 Linux Network Configuration and Troubleshooting Commands. Disponível em: https://www.tecmint.com/linux-network-configuration-and-troubleshooting-commands
GUIA FOCA – Guia de Comandos do GNU/Linux. Disponível em: http://www.guiafoca.org/?page_id=14
WIKI UBUNTU-BR – Comandos Básicos. Disponível em: http://wiki.ubuntu-br.org/ComandosBasicos
WIKIPEDIA – The Linux File System Hierarchy Standard. Disponível em: http://pt.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
WIKIPEDIA – UNIX Operating System. Disponível em: https://pt.wikipedia.org/wiki/Unix
*Obs.: este guia começou a ser escrito em meados de 2010, para utilização em aulas de Redes de Computadores e Sistemas Operacionais. Além disso, como citado, os comandos e configurações descritos neste guia são baseados, principalmente, no Linux Debian e Ubuntu e podem ser diferentes em outras distribuições. Caso encontre alguma informação, comando ou comentário incorreto ou desatualizado, por favor, entre em contato comigo! Ficarei muito grato 😉