Comandos úteis do Linux

Existem basicamente dois modos de utilizar um sistema Linux: modo gráfico (com janelas e botões para clicar com o mouse) e modo texto (todos os comandos devem ser digitados). O modo de atuação mais rápido e abrangente em muitos casos é através do modo texto, o que pode assustar alguns usuários de primeira viagem. Veja como abrir e utilizar o modo texto do Linux com alguns comandos básicos.

Exemplos de uso do terminal Linux: usuário comum executando comando como "sudo" (parte superior) e mudando para super usuário "root" (parte inferior) para executar o comando "apt-get update".

Exemplos de uso do terminal Linux: usuário comum executando comando como "sudo" (parte superior) e mudando para super usuário "root" (parte inferior) para executar o comando "apt-get update".

O terminal de texto é o programa a ser utilizado para entrar no modo texto. No gnome 3, vá em atividades e procure o programa "terminal" na lista de aplicativos. Aparecerá uma janela com o nome do usuário acompanhado de arroba (@) e o nome do seu computador. Depois dos dois pontos (:), pode vir um til, que indica que você está no diretório "home" do usuário, ou seja, a pasta onde estão seus arquivos pessoais. Por último, tem um cifrão, que indica o início da área para digitação dos comandos e também que esses comandos serão executados por um usuário comum.

Basicamente, existe o usuário comum e o super usuário. O usuário comum possui acessos e atividades restritas em alguns casos (por exemplo, para instalar programas), tornando o computador mais seguro (não corre o risco de instalar um vírus sem saber). Já o super usuário é chamado "root" e pode fazer qualquer coisa. Para o usuário comum fazer algo que só o super usuário pode fazer, ele tem duas opções:

1) Utilizar o comando "sudo" antes do comando; depois tecle "enter". Será pedida a senha do próprio usuário comum. Digite a senha do usuário e tecle "enter". Se esse usuário constar da lista de "sudoers", o comando será executado.

2) Entrar como super usuário e então executar o comando. Para isso, primeiramente digite "su" para alterar do seu usuário para o super usuário. Será pedida a senha de super usuário. Digite a senha de super usuário e tecle "enter". Note que o cifrão deu lugar a uma cerquilha (#). Agora digite o comando e tecle "enter" (sem o "sudo" antes, só o comando).

Todo comando é seguido de parâmetros para especificar o que deve ser feito. Por exemplo, para atualizar o sistema deverá ser usado o comando "apt-get" seguido do parâmetro "update". Veja alguns exemplos de uso dos comandos mais importantes no Linux - sempre utilizando "sudo" quando for o caso; para dar ao usuário comum a habilidade "sudo", deve-se primeiramente entrar como root (comando "su" acompanhado da senha de root), instalar o programa sudo (comando "apt-get install sudo") e editar o arquivo /etc/sudoers para incluir o nome do usuário seguido de "ALL = (ALL) ALL" logo abaixo das especificações de privilégios do root. Para interromper a execução de qualquer comando, use a mesma combinação de teclas utilizada para copiar um texto: CTRL + C.

1) Atualizar o sistema

Digite, como super usuário ou usando sudo, o comando "apt-get update" para atualizar todos os repositórios disponíveis e baixar a lista com os pacotes disponíveis em cada um. Terminada a listagem, execute o comando "apt-get upgrade" para atualizar o sistema e seus programas.

$ sudo apt-get update
$ sudo apt-get upgrade

Caso o Java (ou qualquer outro programa) tenha sido instalado utilizando repositório PPA, ele será atualizado junto com as outras atualizações caso seja necessário. Os sistemas operacionais trabalham com lista de repositórios que contém todos os programas disponíveis para a instalação. Cada distribuição Linux tem uma, sendo possível editá-la para acrescentar novos repositórios.

Para mudar de versão do Linux (Wheezy para Jessie, por exemplo), siga os passos:

$ sudo apt-get update # atualizar "sources list" ainda na versão atualmente instalada
$ sudo apt-get upgrade  # atualizar programas ainda na versão atualmente instalada
$ sudo nano /etc/apt/sources.list # alterar o nome da versão para a nova em todo o lugar que aparecer o nome da atual
$ sudo apt-get update # atualizar "sources list" já na versão mais nova
$ sudo apt-get upgrade # atualizar programas já na versão mais nova
$ sudo aptitude dist-upgrade

Existem outras sequências, mas essa é a que funcionou melhor para mim.

2) Listar arquivos

O comando "ls" lista todos os arquivos de uma pasta (ou diretório). Por exemplo, o comando abaixo diz que, a partir do diretório raiz "/" temos o diretório "var" e dentro temos o diretório "log", e lá dentro deverá listar todos os arquivos.

$ ls -lt /var/log

O parâmetro "-lt" indica que devem ser listados detalhes dos arquivos como permissões de acesso (letra l) e apresentar na ordem cronológica (do mais recente em cima ao mais antigo embaixo). A opção --time-style="long-iso" permite mostrar a data/horário dos arquivos de uma maneira mais completa e "full-iso" mostra segundos com grande precisão mais fuso horário. Para mais opções, consulte o manual através do comando "man" (isso serve para qualquer comando):

$ man ls

Os wildcards (também chamados de coringas ou meta-caracteres) podem auxiliar na listagem de arquivos. O asterisco (*) substitui qualquer quantidade de caracteres. Por exemplo, para listar todos os arquivos TXT que começam com a letra a, o comando fica "ls a*.txt". A interrogação (?) tem a finalidade de substituir um ou mais caracteres, porém os mesmos devem existir, senão a busca retornará um valor nulo - comparando com o exemplo anterior, se existir o arquivo "a.txt", ele não seria listado ao usar interrogação, mas seria se utilizasse asterisco.

Para listar todos os arquivos de um INTERVALO, por exemplo iniciados por a até c ou 1 até 3, pode-se utilizar colchetes com a seguinte sintaxe: [inicio-fim]. Assim, o primeiro caso seria "ls [a-c]*" - para considerar letras maiúsculas também, usar "[a-cA-C]*". Se quiser listar todos os arquivos EXCETO esses, coloque um acento circunflexo (^) logo depois de abrir os colchetes - o comando "ls *[!x]txt" (usando exclamação para negar) lista todos os arquivos que terminam com txt , mas exclui os que terminam em xtxt. Já as chaves permitem especificar uma combinação de ELEMENTOS (caracteres, números ou trechos). Por exemplo, para criar três arquivos começando iguais com diferentes terminações: "touch teste{.txt,.dat,.csv}".

3) Monitorar processos

Saber o que o computador está executando é essencial para entender seu funcionamento. O comando "ps" realiza essa tarefa adicionado do parâmetro "aux" para mostrar todos os processos do sistema.

$ ps aux

Para entender o que aparecer na tela:

  • "User" indica o usuário que iniciou o processo
  • "PID" é o número único do processo (Process IDentification)
  • "%CPU" indica o consumo de processamento utilizado pelo processo
  • "Start" é a hora de início do processo.

Para ter as informações de um processo específico, use o "pipe" (|) seguido de "grep" e o nome do comando. Exemplo: "ps aux | grep iceweasel" para ter informações do processo "iceweasel". O programa pgrep procura por todos os processos com determinado nome e retorna o seu ID.

Para ter informações em tempo real, use o comando "top" ou o "htop". A triagem padrão baseia se na quantidade atual de utilização do processador e pode ser obtida com a tecla P. Outras ordens de classificação incluem uma espécie de memória ocupada (tecla M), tempo total do processador (tecla T) e identificador de processo (tecla N). A tecla k permite matar um processo, digitando seu identificador de processo, enquanto que r permite mudar a prioridade do preocesso (renicing).

Em ambos, é apresentado o "load average", um conjunto de três números que dão a média de utilização de CPU em intervalos de tempo (no último minuto, 5 minutos e 15 minutos, respectivamente). Um valor de 1.00 significa que o processador está 100% utilizado, e não tem nenhuma sobrecarga. Já um valor de 1.50 significa que o processador está com 100% de uso, e 50% de sobrecarga. Se o computador possui apenas um núcleo, o ideal é que o load average esteja em 1.00; se tiver 2 processadores (núcleos), o valor ideal é 2.00; e assim por diante.

4) Finalizando processo

Caso algum programa "dê pau", é possível encerrá-lo utilizando o comando "kill" seguido de seu PID ou "killall" seguido do nome do processo. Em ambos os casos, o "kill signal" enviado é "-15", ou seja, o sistema pede para o programa "se fechar" - já com o sinal "-9" é o kernel que fecha o programa, é mais "violento".

5) Exibir em tempo real o que acontece no sistema

O log é um arquivo de registro temporal de ações executadas, geralmente armazenado no diretório "/var/log". O daemon rsyslogd é responsável por coletar mensagens de serviço vindas de aplicações e do núcleo, e então despachá-las para arquivos de log. Ele obedece o arquivo de configuração /etc/rsyslog.conf. Cada mensagem de log é associada com um subsistema de aplicação (ou "facility") e com um nível de prioridade (veja mais na documentação do Debian).

Para exibir somente as últimas linhas de um arquivo de texto, é usado o comando "tail", cuja opção "-f" permite a exibição das últimas 10 linhas em tempo real.

$ sudo tail -f /var/log/syslog

Outro comando muito utilizado com esses fins é o "dmesg", que mostra o log do ultimo boot (arquivo "/var/log/dmesg"). Muito útil para acompanhar se o pen drive recém conectado foi identificado pelo PC (e caso não tenha sido, verificar alguma possível mensagem de erro).

O comando watch é usado para executar e mostrar a saída de um comando periodicamente na tela. Pode ser usado para monitorar o conteúdo de uma pasta, por exemplo:

$ watch 'ls -lh /home/user/downloads'

A opção "-n 5" é opcional e indica o número de segundos em que a informação é atualizada na tela (no caso, cinco segundos).

6) Informações e monitoramento de hardware

O sistema de arquivos /proc é um diretório especial onde fica todas as informações de depuração do kernel, sendo muito útil para o diagnóstico do hardware. Por exemplo, o arquivo "/proc/ioports" serve para identificar o intervalo de endereço I/O que está sendo usado pela placa de rede. Já o arquivo "/proc/interrupts" tem as informações das IRQs dos dispositivos. Os endereços de IRQ (Interrupt Request Line) são interrupções de hardware, canais que os dispositivos podem utilizar para chamar a atenção do processador. Os processadores são capazes de fazer apenas uma coisa de cada vez -a multitarefa surge de um chaveamento muito rápido entre os aplicativos abertos, dando a impressão de que todos realmente estão sendo executados ao mesmo tempo.

O comando dmidecode exibe várias informações de hardware. Veja algumas opções (a lista completa de parâmetros está disponível no link):

# dmidecode -t baseboard # Mostra dispositivos (placas)
# dmidecode -t 16 # Mostra capacidade máxima de RAM
# dmidecode -t 17 # Mostra detalhes dos slots de memória
# dmidecode -t bios
# dmidecode -t system # Mostra fabricante, número de série (serial number)

Para ter informações sobre o processador, existe o seguinte arquivo:

$ cat /proc/cpuinfo

Para informações de versão do kernel, arquitetura, etc. É útil para verificar se o sistema instalado é 32-bit ("i686" ou "i386") ou 64-bit ("x86_64"), assim como processador e hardware (a opção "-m" mostra somente para o sistema). A segunda opção mostra a versão e outras informações do sistema operacional:

$ uname -a
$ lsb_release -a

Para ver informações sobre dispositivos PCI e USB, esecute respectivamente os seguintes comandos:

$ lspci
$ lsusb

O comando "free" pode informar a utilização de memória RAM e SWAP:

$ free -m -t

O parâmetro "-m" mostra a quantidade de memória em MB e o "-t" faz um cálculo de RAM+SWAP.

Para monitorar uso de disco, existe o comando "iostat", que pode ser instalado usando "sudo apt-get install sysstat". É muito útil para verificar se o i/o em disco está sendo um gargalo na performance do sistema. O "iowait" é a porcentagem de tempo que a CPU está ociosa (idle) e há pelo menos um I/O em progresso - valores de "%iowait" acima de 10 indicam stress para o disco, por exemplo. Uma alta taxa de "iowait" depende de quantos núcleos o processador tem: 50% iowait em um núcleo duplo é equivalente a 12,5% em um sistema de oito núcleos. Se tem um array RAID, por vezes pode ser um pouco enganador. Para executá-lo e atualizar as informações a cada x segundos, use a seguinte sintaxe:

iostat x

A linha "avg-cpu" mostra utilização média (avg) da cpu por processos a nível de usuário (%user), com o nível de prioridade modificado (%nice) e por processos do sistema (%system). Também exibe o porcentual de tempo em que a cpu ficou em espera ociosa pelas respostas de entrada e/ou saída do disco (%iowait) e em espera involuntária aguardando em quanto o hypervisor servia outra cpu (%steal), assim como sem aguardar entrada ou saída de disco (%idle). Os dispositivos ficam listados abaixo, sendo as colunas de quantidade de transferência por segundo (tps), blocos lidos (KB_read/s) e escritos (KB_wrtn/s) por segundo, assim como o total lido (KB_read) e escrito (KB_wrtn).

ps: "nice" é um número inteiro de -19 a 19 que indica a "gentileza" do processo, ou seja, quanto maior o número, mais ele "oferece a gentileza" de permitir que um processo com prioridade maior que a sua seja executado antes dele.

O comando uptime mostra o tempo que o computador está em atividade e o comando who mostra quem está conectado.

7) Monitorar espaço em disco

Para saber informações de espaço em disco, como o tamanho, "quanto está sendo usado" e "quanto está livre", pode-se usar o comando df - o parâmetro "-h" lista em formato "human":

$ df -h

Para mostrar espaço em disco usado por diretórios, utilize o comando du. A opção "--max-depth=1" define o nível máximo de listagem igual a 1 abaixo de onde o comando é executa, mas outros valores são permitidos. O parâmetro "-h" lista todos os diretórios e seus totais em formato "human", enquanto que "-sh" diz o somatório do diretório:

$ du -h # lista tamanho de todos os subdiretórios
$ du -sh # imprime o tamanho total do diretório

O comando "fdisk -l" lista e dá informações sobre as partições, enquanto que "hdparm -i /dev/sdX" diz as configurações específicas do HD do dispositivo sdX.

8) Verificar funcionamento da rede/internet

Você pode utilizar o comando "ping" seguido de endereço para testar a conexão entre o seu computador e o endereço digitado. Se houver tráfego de bits, os dois estão funcionando. Para interromper o teste, use CTRL + C. Por exemplo:

$ ping www.monolitonimbus.com.br

Para saber seu IP e outras informações (interface, gateway, DNS, etc) use o comando "sudo ifconfig". Veja mais comandos de rede Linux clicando no link.

9) Consultar comandos já utilizados

O comando history nos permite visualizar os últimos comandos executados pelo bash. Para consultar um comando em específico, utilize o pipe para redirecionar a saída para o comando "grep" seguido da palavra a ser pesquisada. Por exemplo:

$ history | grep dmesg

Também é possível ver os comandos utilizados anteriormente apertando as teclas com as setas "para cima" e "para baixo" para consultar comando utilizados antes e depois, respectivamente. Para apagar o histórico de comandos do usuário que está operando, basta utilizar a opção "-c".

É possível exibir data e hora para cada comando executado. Para isso, deve-se executar o seguinte comando (somente depois disso é que as datas serão gravadas):
export HISTTIMEFORMAT="%y-%m-%d %H:%M:%S "

Para tornar isso permanente (mesmo após reiniciar o computador), edite o arquivo oculto "~/.bashrc" localizado na home do usuário e inclua essa linha, de preferência logo abaixo das linhas onde já existem definições de variáveis do HIST.

10) Copiar arquivos

Faça através do gerenciador gráfico de arquivos ou utilize o comando "scp" se for uma quantidade pequena de arquivos (caso tenha diretórios, utilize a opção "-r" para copiar recursivamente). Para copiar grandes quantidades de arquivos de uma maneira mais segura (inclusive permitindo retomar a cópia de onde parou) é bom usar o comando "rsync". Veja o exemplo:

$ rsync -azv --delete --progress /media/pendrive/* /media/HDext/arquivos/ 2> /home/user/arquivodeerros

No exemplo, as opções "-azv" permitem a recursividade, mantém atributos e permissões e exibe informações na tela; "--progress" mostra o progresso de envio dos arquivos; na sequência, vem a origem e o destino dos dados. Para tirar a recursividade, deve-se trocar "-a" pelo resto de suas opções equivalentes (veja mais no manual rsync). A opção "--delete" diz para apagar arquivos movidos ou deletados (ele não diferencia: apaga no destino se não existir na origem). Já a opção "--remove-source-files" remove os arquivos de origem após a transferência (o equivalente a mover os arquivos). Adicionar "--update" no comando força a copiar somente arquivos novos, atualizando os antigos somente se tiver data ou tamanho diferentes. Para especificar a porta, use --rsh='ssh -p2022'.

Opcionalmente, pode encaminhar a saída de erros (2>) para o arquivo /home/user/arquivodeerros para ver se copiou tudo bem ou quais foram os erros que ocorreram.

11) Descompactar arquivos

Faça através do gerenciador gráfico de arquivos ou utilize o comando "tar", "unrar" (instalado através de "apt-get install unrar-free") ou "gunzip" conforme a compactação indicada pela extensão do arquivo:

$ unzip nomedoarquivo.zip
$ gunzip nomedoarquivo.gz
$ unrar x nomedoarquivo.rar
$ tar -xvf nomedoarquivo.tar
$ tar -xf nomedoarquivo.tar.xz
$ tar -vzxf nomedoarquivo.tar.gz # ou ".tgz"
$ gzip -d nomedoarquivo.gz
$ bzip2 -d nomedoarquivo.bz2 # ou bunzip nomedoarquivo.bz2
$ tar -jxvf nomedoarquivo.tar.bz2
$ uncompress nome_arquivo.Z # Comprimido pelo algoritmo LZMA

Para agrupar os arquivos em um só (".tar") e comprimir (".gz"), utilize "tar -zcf nome_arq.tar nome_dir_ou_arq_a_ser_compactado". Caso queira especificar o diretório de destino dos arquivos extraídos, utilize a opção "-d" (utilizando unzip) ou "-C" (usando tar) seguido de espaço e o caminho para o diretório de destino.

12) Localizar arquivos

O comando "find" varre todo o caminho indicado em busca do(s) arquivo(s) com as condições indicadas, podendo assim ser uma busca por nome, usuário, data, etc. Por exemplo, para procurar no diretório "/home/usuario" todos os arquivos que começam com "arq", temos:

$ find /home/usuario -name arq*

Note que foi utilizado o parâmetro "-name" para busca por nome e o asterisco para indicar que pode ser qualquer caracter em qualquer quantidade após iniciar por "arq". Caso queira procurar em todo o HD, utilize somente "/" no caminho do arquivo.

O comando "locate" é mais rápido, pois consulta o nome do arquivo em um banco de dados. Para utilizá-lo, atualize esse banco de dados e depois faça a pesquisa:

$ sudo updatedb
$ locate Música\ do\ Fulano.mp3

13) Buscar palavras dentro de arquivo(s)

O comando grep também permite busca uma palavra ou expressão dentro de vários arquivos. Para buscar nos arquivos dentro do diretório onde está e recursivamente, basta usar a opção "-R. A opção "-n" exibe também a linha da ocorrência e "-i" ignora se as letras estão em maiúscula ou minúscula.

grep -Rni '/home/user/exemplo' -e "PALAVRA OU EXPRESSÃO A SER PROCURADA"

O exemplo acima também permite especificar o caminho de outro diretório para iniciar a busca (recursivamente), precisando aí do parâmetro "-e" para indicar o termo de busca. Para procurar somente no diretório (sem recursividade), usar: grep -d skip "palavra" ./*

14) Instalar programas

A forma mais direta é utilizar o sistema de gestão de pacotes de software APT-GET (veja o exemplo para instalar o programa "geany" - para remover, basta trocar "install" por "remove"):

# apt-get install geany

Um outro meio para instalar programas no Linux é baixar os programas com extensão .DEB e executar o seguinte comando:

# dpkg -i PACOTE.deb

Existem programas que não “genéricos”, ou seja, não são compilado para nenhuma distribuição específica. Geralmente esses arquivos utilizam a terminação .tar.gz. Para instalá-los, execute os seguintes comandos:

$ tar -vzxf nomedoarquivo.tar.gz # Descompacte o arquivo .tar.gz
$ cd nomedoarquivo; ./configure # Dentro da pasta do programa que foi criada, execute o comando ./configure, que compila o programa para sua distribuição do Linux
$ make # cria o instalador do programa para a distribuição Linux
$ make install # instala o programa no computador

O apt é uma ferramenta da Debian para gerenciamento de pacotes de forma simples, amigável e rápida, contando inclusive com a instalação automática de dependências necessárias para a finalização do processo. O apt utiliza um arquivo que lista as "fontes" de onde ele obterá os pacotes, o "/etc/apt/sources.list". Existe um site onde essas listas podem ser geradas conforme a distribuição, caso perca, o Debian Sources List Generator.

Outro frontend para o dpkg (o sistema de gerenciamento de pacotes do Debian) é o aptitude. Caso haja pacotes quebrados (ou seja, com dependências não satisfeitas), o aptitude se prontifica a consertá-los, enquanto que com o apt-get deve-se executar o comando "apt-get install -f" antes de tentar instalar o pacote. Se algum pacote se tornar desnecessário ou obsoleto, o aptitude o removerá automaticamente em sua próxima execução, sem sequer questionar o usuário. Já o apt-get somente informa que é preciso executar "apt-get autoremove" para realizar essas alterações. Por último, existe o synaptic, que é o modo gráfico de gerenciar pacotes.

Para instalar pacotes rpm no debian, ubuntu, etc, ou convertê-lo para ".deb", pode-se usar o comando "alien". Veja mais sobre RPM e YUM clicando no link.

Para desinstalar um programa, use o comando "dpkg -l | grep NOME" para ver se encontra o nome exato do programa que foi instalado. Depois, rode o comando "sudo apt-get purge NOME_CERTO" para removê-lo.

15) Desligar/Reiniciar o computador

O init é o pai de todos os processos no sistema, executado pelo kernel e responsável por iniciar todos os outros processos. O comando "init" ou "telinit" pode ser usado para mudar o nível de execução (runlevel) do sistema. O argumento do comando deve ser um dos níveis de execução multi-usuário 2-5, sendo que 0 desliga o sistema, 6 reinicia e 1 traz o sistema em modo single-user.

O comando shutdown organiza o sistema para ser desligado de uma forma segura, ou seja, os processos correntes são desligados (o sistema envia um comando para todos os processos encerrarem e só desliga a si mesmo quando todos estão encerrados) e todos os usuários logados são notificados. Sua opção default é o desligamento em cinco minutos, impedindo novos logins, mas usando "now", o desligamento começa logo após executar o comando. Usando a opção "-r" reinicia e "-h" desliga o computador:

$ sudo shutdown -r now
$ sudo shutdown -h now

Os comandos reboot, halt, poweroff (se não estiver no nível 0 ou 6) simplesmente invocam o shutdown com os argumentos apropriados. O reboot é o comando que roda quando você clica em reiniciar no menu, enquanto que "reboot -f" é o similar a apertar o botão de reiniciar na CPU (ou seja, chama a si msmo, sem fechar os processos correntes individualmente).

Existe um histórico de login e de horário de funcionamento do sistema. Basta usar algum dos seguintes comandos:

last
last -x reboot
last -x shutdown

O primeiro exibe a lista dos usuários que autenticaram no sistema; o segundo mostra a última vez que o sistema foi reiniciado (reboot) ou desligado (shutdown).

Caso tudo esteja travado, ainda existe uma combinação de quatro teclas para ativar algumas funções de depuração do sistema: CTRAL + ALT + SysRq (mesma tecla do Print Screen) + um caractere, que pode ser:

  • "b" - reiniciar
  • "o" - desligar
  • "e" - terminar todos os processos, exceto o init

No caso de desligar e reiniciar, é o equivalente a apertar o respectivo botão no gabinete. Outras opções podem ser vistas na Wikipedia.

Compartilhe o link desse texto, mas se for copiar algum trecho, cite a fonte. Valorize nosso trabalho.
Mais informações na licença de uso do site.

4 Pingbacks/Trackbacks