Linux – Guia de Comandos Essenciais

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. Mesmo para aqueles que tentam fugir do terminal, hoje, com a ascensão do cloud computing, onde é comum contratar e administrar um servidor dedicado para a execução de sistemas, o contato com o terminal é 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 o 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.


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 (figura acima).

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.

Na imagem acima temos o resultado de diversos comandos como o cd, mkdir, cp, tail, cat, grep e etc.

# 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

# 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.

Na imagem acima temos o resultado de diversos comandos como o traceroute, ping, nslookup e arp

# 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: Exibe o nome do host/servidor

# ftp: 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

Na imagem acima temos o resultado do comando netstat. É possível identificar que este sistema está oferecendo os serviços de HTTP Porta 80 (Apache), MySQL Porta 3306 e SSH Porta 22. Além disso, é possível identificar uma conexão via SSH, vinda do IP 192.168.25.51.

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 e Sistemas Operacionais. Caso encontre alguma informação, comando ou comentário incorreto ou desatualizado, por favor, entre em contato comigo! Ficarei muito grato. Daniel Scota, 2017.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.