comandos e sintaxes

60
1 Comandos & Sintaxes LINUX Ronaldo da Paz Dourado Instruções teóricas para todas distribuições 1.ª Edição

Upload: ronaldo-da-paz

Post on 21-Mar-2016

223 views

Category:

Documents


0 download

DESCRIPTION

Comandos; terminal; linux

TRANSCRIPT

Page 1: Comandos e Sintaxes

1

Comandos & Sintaxes

LINUX

Ronaldo da Paz Dourado

Instruções teóricas para todas distribuições

1.ª Edição

Page 2: Comandos e Sintaxes

Notas Iniciais

Esta documentação relata sobre a utilidade do modo console com base no linux

Debian/ubuntu, ou seja, foi documentada sob demanda do terminal. Servirá teoricamente para

uma abrangência a todos os terminais, sendo que o treino no terminal é muito importante para

uso de todas distribuições linux. Este documento não relata nada sobre redes envolvendo

linux e windows, no momento é destinado a quem está começando no Linux.

Enfim, dedico está obra aos meus colegas de faculdade e amigos interessado no

mundo da liberdade linux.

Em breve será lançado uma edição documentando sobre redes.

Direitos autorais

As condições de uso está sob os termos da GPL- General Public License.

É permitido fazer cópias, enviar para amigos, colocar para download, fazer divulgação

deste trabalho, enfim, distribuí-lo sem interesse comercial. Portanto a modificação deste

documento somente deve acontecer sob os termos do GNU Free Documentation License.

Copyright © 2010

Ronaldo da Paz Dourado – Tecnólogo em Redes. Brazil.

Permission is granted to copy, distribute and/or modify this document under the terms of

the GNU Free Documentation License: Linux Comandos e Sintaxes.

e-mail's: [email protected]

[email protected]

2

Page 3: Comandos e Sintaxes

SumárioNotas Iniciais.............................................................................................................................................................2Direitos autorais .......................................................................................................................................................2Introdução..................................................................................................................................................................6

O que é Linux.................................................................................................................................................6Linux ou GNU/Linux?...................................................................................................................................6O kernel Linux...............................................................................................................................................6O sistema operacional Linux (ou GNU/Linux)..............................................................................................8

1 Estudo introdutório...............................................................................................................................................11Terminal Virtual (console).................................................................................................................................12Caracteres Curingas...........................................................................................................................................13Tipos de Execução de comandos/programas.....................................................................................................151.1 Manipulando arquivos e diretórios..............................................................................................................16

cd .................................................................................................................................................................16pwd ..............................................................................................................................................................16../..................................................................................................................................................................16./...................................................................................................................................................................16cp .................................................................................................................................................................17dir ................................................................................................................................................................17du .................................................................................................................................................................17ls ..................................................................................................................................................................17ls -l ..............................................................................................................................................................17ls -la .............................................................................................................................................................17ls -lha ...........................................................................................................................................................17mkdir -p .......................................................................................................................................................17touch.............................................................................................................................................................18mv ...............................................................................................................................................................18rm -rdf .........................................................................................................................................................18chmod +x ....................................................................................................................................................18chattr ............................................................................................................................................................18split ..............................................................................................................................................................18cat ................................................................................................................................................................18find ..............................................................................................................................................................19ln -s ..............................................................................................................................................................19who ..............................................................................................................................................................19whoami.........................................................................................................................................................19history .........................................................................................................................................................19

1.2 Compactando arquivos................................................................................................................................20zip ................................................................................................................................................................20unzip.............................................................................................................................................................20tar ................................................................................................................................................................207z .................................................................................................................................................................20

1.3 Editores do sistema......................................................................................................................................21nano..............................................................................................................................................................21vi..................................................................................................................................................................21Explicando melhor o editor vi......................................................................................................................21

2. Sistema................................................................................................................................................................232.1 Comandos do sistema..................................................................................................................................23

date -s ..........................................................................................................................................................23clear .............................................................................................................................................................23uname -a.......................................................................................................................................................23cal ................................................................................................................................................................23lshw..............................................................................................................................................................23fdisk..............................................................................................................................................................23

3

Page 4: Comandos e Sintaxes

Criando partições com o fdisk ....................................................................................................................24mount ..........................................................................................................................................................25Montando uma imagem de extensão .iso, ...................................................................................................25mkfs .............................................................................................................................................................26df -h..............................................................................................................................................................26Fazendo Backup da MBR utilizando o dd...................................................................................................26

2.2 Entendendo processos..................................................................................................................................27top................................................................................................................................................................27ps aux...........................................................................................................................................................27kill ...............................................................................................................................................................27pstree ...........................................................................................................................................................27

2.3 Memória RAM e administração da memória SWAP...................................................................................27free -m .........................................................................................................................................................27Administrando a swap..................................................................................................................................28

2.4 Usando os programas: genisoimage; dd; cdrecord; cdparanoia; lame.........................................................282.4.1 Criando imagens ISO apartir de dados no computador......................................................................282.4.2 Fazendo cópias de CD's e DVD's de dados........................................................................................292.4.3 Gravando um CD/DVD apartir de uma imagem ISO.........................................................................302.4.4 Gravando CD's de músicas tradicionais via linha de comando..........................................................312.4.5 Convertendo CD's em formato mp3...................................................................................................312.4.6 Gravando CD's de áudio e dados juntos.............................................................................................32

2.5 Entendendo o apt-get...................................................................................................................................322.5.1 Introdução ..........................................................................................................................................322.5.2 Comandos afins do apt-get..................................................................................................................322.5.4 Como utilizar o apt-get ?.....................................................................................................................332.5.5 Instalando pacotes...............................................................................................................................342.5.6 Removendo pacotes com o apt-get.....................................................................................................352.5.7 Atualizando pacotes com o apt-get ....................................................................................................352.5.8 Descobrindo nomes de pacotes...........................................................................................................362.5.9 Mostrando detalhes de um pacote ......................................................................................................372.5.10 Finalizando........................................................................................................................................38

2.6 Configurando RAID no Linux ....................................................................................................................382.6.1 Conhecimentos necessários.................................................................................................................392.6.2 Definindo RAID..................................................................................................................................392.6.3 Tipos de RAID ...................................................................................................................................402.6.4 Usando o mdadm para Configurar o Armazenamento Baseado no RAID e Multi-localidade...........412.6.4.1. Criando um Dispositivo RAID com mdadm...................................................................................412.6.4.2 Editando o FSTAB para automatizar o RAID e montá-lo no boot.................................................432.6.4.3 Criando um Dispositivo Multi-localidade com mdadm...................................................................442.6.4.4 Nota..................................................................................................................................................44

2.7 Trabalhando com usuários, grupos e permissões.........................................................................................462.7.1 Adicionado usuário ao sistema............................................................................................................462.7.2 Entendendo permissões.......................................................................................................................462.7.3 Grupos: adicionando, deletando e alterando o dono...........................................................................47

2.8 Determinando agendamento com o cron.....................................................................................................472.8.1 Introdução...........................................................................................................................................472.8.2 Configurando o cron por usuário........................................................................................................502.8.3 Resumo de aprendizagem do cron......................................................................................................53

2.9 Usando o gnupgp (GPG).............................................................................................................................542.10 Entendendo dispositivos de loop (loop0 a loop7)......................................................................................57

2.10.1 Criando um volume de dados............................................................................................................572.10.1 Criando um volume de dados com criptografia................................................................................60

Referências Bibliográficas......................................................................................................................................61

4

Page 5: Comandos e Sintaxes

Introdução

O que é Linux

Linux é ao mesmo tempo um kernel (ou núcleo) e o sistema operacional que roda sobre ele, dependendo do contexto em que você encontrar a referência. O kernel Linux foi criado em 1991 por Linus Torvalds, então um estudante finlandês, e hoje é mantido por uma comunidade mundial de desenvolvedores (que inclui programadores individuais e empresas como a IBM, a HP e a Hitachi), coordenada pelo mesmo Linus, agora um desenvolvedor reconhecido mundialmente e mais representativo integrante da Linux Foundation.

O Linux adota a GPL, uma licença de software livre – o que significa, entre outras coisas, que todos os interessados podem usá-lo e redistribuí-lo, nos termos da licença. Aliado a diversos outros softwares livres, como o KDE, o GNOME, o Apache, o Firefox, os softwares do sistema GNU e o OpenOffice.org, o Linux pode formar um ambiente moderno, seguro e estável para desktops, servidores e sistemas embarcados.

Linux ou GNU/Linux?

A Free Software Foundation advoga que o sistema operacional formado pelo núcleo Linux e o conjunto de utilitários e aplicativos que incluem aqueles desenvolvidos pelo seu projeto GNU deve ser chamado de GNU/Linux, e não simplesmente de Linux. A questão tem sido objeto de intensos debates há anos, sem que um posicionamento geral e definitivo seja alcançado.

Naturalmente a posição da FSF não é a única existente. São conhecidas as declarações de Linus Torvalds (que acharia interessante a existência de uma distribuição chamada GNU Linux e mantida pelo projeto GNU), de Eric Raymond e de John Dvorak, entre outros. Há ainda uma interessante citação da própria FSF afirmando que um nome como GNU/X11/Apache/Linux/TeX/Perl/Python/FreeCiv seria absurdo, portanto é necessário estabelecer um limite. Mas, diz ela, “Não pode ser justo dar todo o crédito para uma contribuição secundária (Linux) enquanto se omite a contribuição principal (GNU).” Outra citação digna de nota vem de um editorial do veterano Linux Journal: “Talvez Richard Stallman esteja frustrado porque Linus recebeu as glórias por ter feito aquilo que Stallman pretendia fazer.”

O kernel Linux

Inicialmente, o kernel Linux foi desenvolvido como um hobby por Linus Torvalds (então um estudante) com o objetivo de desenvolver seu próprio sistema operacional “Unix-

5

Page 6: Comandos e Sintaxes

like” que rodasse em processadores Intel 80386. Linus chegou a estudar o Minix, um sistema similar de autoria do famoso acadêmico Andrew Tanenbaum, mas não ficou satisfeito com a arquitetura deste (que não era um software livre, inclusive) e resolveu criar o seu próprio sistema. O projeto Linux foi publicamente lançado em 1991 em uma famosa mensagem para a Usenet.

Tux, o logo e mascote do Linux

Hoje o Linux é um kernel híbrido monolítico. Drivers de dispositivo e extensões do kernel tipicamente rodam com acesso total ao hardware, embora alguns rodem em espaço de usuário. Ao contrário dos kernels monolíticos padrão, os drivers de dispositivo são facilmente configurados como módulos, e carregados e descarregados enquanto o sistema está rodando. Também ao contrário de kernels monolíticos padrão, drivers de dispositivo podem ser pré-inseridos sob certas condições. Essa última característica foi adicionada para corrigir o acesso a interrupções de hardware, e para melhorar o suporte a multiprocessamento simétrico.

Embora Linus Torvalds não tenha tido como objetivo inicial tornar o Linux um sistema portável, ele evoluiu nessa direção. Linux é hoje, na verdade, um dos kernels de sistema operacional mais portados, rodando em sistemas desde o iPaq (um computador portátil) até o IBM S/390 (um volumoso e altamente custoso mainframe), passando por várias arquiteturas: Intel, StrongARM, PowerPC, Alpha etc., com grande penetração também em dispositivos embarcados, como handhelds, PVR, vídeogames e centrais de entretenimento.

De qualquer modo, é importante notar que os esforços de Linus foram também dirigidos a um outro tipo de portabilidade. Portabilidade, de acordo com Linus, era a habilidade de facilmente compilar aplicativos de uma variedade de origens no seu sistema; portanto o Linux originalmente se tornou popular em parte devido ao esforço para que fosse fácil fazer com que códigos de aplicativos disponíveis para outros sistemas (inclusive no Unix e no sistema GNU) rodassem no Linux.

Hoje, Linus Torvalds continua a dirigir o desenvolvimento do kernel, enquanto outros subsistemas (como ferramentas de desenvolvimento, ambientes gráficos e aplicativos) são desenvolvidos independentemente. A tarefa de integrar todos estes componentes para formar um sistema completo é desempenhada pelas empresas e organizações que mantêm distribuições de Linux.

6

Page 7: Comandos e Sintaxes

O sistema operacional Linux (ou GNU/Linux)

Logo que Linus Torvalds passou a disponibilizar o Linux, ele apenas disponibilizava o kernel (núcleo) de sua autoria juntamente com alguns utilitários básicos. O próprio usuário devia encontrar os outros programas, compilá-los e configurá-los e, talvez por isso, o Linux tenha começado a ter a fama de sistema operacional apenas para técnicos. Foi neste ambiente que surgiu a MCC (Manchester Computer Centre), a primeira distribuição Linux, feita pela Universidade de Manchester, na tentativa de poupar algum esforço na instalação do Linux.

Hoje em dia, um sistema operacional Linux completo (ou uma “distribuição de Linux”) é uma coleção de softwares (livres ou não) criados por indivíduos, grupos e organizações ao redor do mundo, tendo o Linux como seu núcleo. Companhias como a Red Hat, a Novell/SUSE, a Mandriva (união da Mandrake com a Conectiva), bem como projetos de comunidades como o Debian, o Ubuntu, o Gentoo e o Slackware, compilam o software e fornecem um sistema completo, pronto para instalação e uso.

As distribuições de GNU/Linux começaram a ter maior popularidade a partir da segunda metade da década de 1990, como uma alternativa livre para os sistemas operacionais Microsoft Windows e Mac OS, principalmente por parte de pessoas acostumadas com o Unix na escola e no trabalho. O sistema tornou-se popular no mercado de servidores, principalmente para a Web e servidores de bancos de dados, inclusive no ambiente corporativo – onde também começou a ser adotado em desktops especializados.

No decorrer do tempo várias distribuições surgiram e desapareceram, cada qual com sua característica. Algumas distribuições são maiores outras menores, dependendo do número de aplicativos e sua finalidade. Algumas distribuições de tamanhos menores cabem em um disquete com 1,44 MB, outras precisam de vários CDs, existem até algumas que tem versões em DVD. Cada uma tem seu público e sua finalidade.

Descrição das principais distribuições linux no dia a dia:

1.Mandriva, o saudosista do Conectiva - garanto que muitos entusiastas de Linux que você conheça já usou o Conectiva alguma vez, pois eles mudaram a história do open source no Brasil. É uma robusta distribuição, tanto para desktop como para servidores.

2.Fedora, o saudosista do Red Hat - antes do Conectiva existir, a distribuição que era mais usada na época era o Red Hat ( que hoje é pago e está mais voltado para servidores ) criou um projeto para a comunidade de codinome Fedora ( que significa chapéu de feltro, aquele que o Indiana Jones usa ).

3.openSUSE, o administrador preciso - a distribuição alemã SuSE apesar de ser paga, sempre se mostrou com excelente documentação e suportada por empresas grandes para usa-la como servidor. O projeto opensuse oferece uma versão open source com a mesma qualidade da paga.

7

Page 8: Comandos e Sintaxes

4.Slackware, o simplista KISS - para que usar um milhão se scripts se com meia dúzia de arquivos é possível configurar quase tudo no sistema? Essa é a filosofia Slackware, ser bem aberto para poder configurar a máquina, compilar e instalar as coisas do jeito que quiser, sem ficar muito preso à programas gerenciadores de pacotes. Essa distribuicão é sugerida para quem já conhece um pouco de Unix e deseja algo mais parecido com os outros tipos de Unix existentes.

5.Gentoo, o louco por performance - além de ser bem simples também, o Gentoo oferece um esquema de compilação de pacotes baseado no Ports do FreeBSD, que permite uma configuração específica para cada arquitetura .

6.Xandros, o Linux ala XP - essa distribuição veio do descontinuado Corel Linux, uma distribuição que visava trazer muitos usuários do Windows para o seu sistema operacional. O Xandros segue essa mesma linha e por no mínimo 99 dólares você compra uma versão para seu desktop.

7.Debian, o devoto do GNU - essa é a distribuição preferida do criador do Linux, que preza sempre a adoção de software livre para os seus aplicativos.

8.Knoppix, o gamer - essa distribuição é baseada no Debian, mas ela foi uma das primeiras a ser um LiveCD, que permite o seu uso em qualquer computador sem a necessidade de instalar nada,apenas bootar a máquina com um CD. Muitos LiveCDs de jogos e emuladores usam essa distribuição.

9.Kurumin NG, o brasileiro orgulhoso - essa distribuição é uma das coisas mais notáveis a quantidade de scripts criado para os diversos tipos de hardware e diversos provedores de acesso a Internet que temos aqui no Brasil. Baseada no Debian com interface KDE, uma excelente opção sem dúvida!

10.Ubuntu, o cara da moda - hoje a mais famosa distribuição e muito difundida pelo mundo, apesar de levar a fama por estar na moda ela tem características que outras distribuições tem há anos, ela simplesmente foi criada focando a usabilidade. Se procura algo somente para uso em desktop, essa é uma excelente opção. Eu sugiro ainda o uso do Kubuntu, que utiliza a interface KDE ao invés do GNOME.

11.Linuxmint – Uma distribuição derivada do ubuntu, com objetivo de facilitar as coisas para o usuário.

Todos os sistemas GNU/Linux possui a seguinte estrutura básica de diretórios organizados segundo o FHS (Filesystem Hierarchy Standard):

/bin

Contém arquivos programas do sistema que são usados com freqüência pelos usuários.

/boot

Contém arquivos necessários para a inicialização do sistema.

/cdrom

Ponto de montagem da unidade de CD-ROM.

/media

Ponto de montagem de dispositivos diversos do sistema (rede, pen-drives, CD-ROM em distribuições mais novas).

8

Page 9: Comandos e Sintaxes

/dev

Contém arquivos usados para acessar dispositivos (periféricos) existentes no computador.

/etc

Arquivos de configuração de seu computador local.

/floppy

Ponto de montagem de unidade de disquetes

/home

Diretórios contendo os arquivos dos usuários.

/lib

Bibliotecas compartilhadas pelos programas do sistema e módulos do kernel.

/lost+found

Local para a gravação de arquivos/diretórios recuperados pelo utilitário fsck.ext2. Cada partição possui seu próprio diretório lost+found.

/mnt

Ponto de montagem temporário.

/proc

Sistema de arquivos do kernel. Este diretório não existe em seu disco rígido, ele é colocado lá pelo kernel e usado por diversos programas que fazem sua leitura, verificam configurações do sistema ou modificar o funcionamento de dispositivos do sistema através da alteração em seus arquivos.

/root

Diretório do usuário root.

/sbin

Diretório de programas usados pelo superusuário (root) para administração e controle do funcionamento do sistema.

/tmp

Diretório para armazenamento de arquivos temporários criados por programas.

/usr

Contém maior parte de seus programas. Normalmente acessível somente como leitura.

/var

Contém maior parte dos arquivos que são gravados com freqüência pelos programas do sistema, e-mails, spool de impressora, cache, etc.

9

Page 10: Comandos e Sintaxes

1 Estudo introdutório

Para entendermos melhor o linux, leia atentamente este tópico introdutório, com

atenção, então vejamos:

O que é o terminal? Nada mais é do que uma área de console, ou seja, é onde tenho

controle total do meu linux. Terminal é o meio onde posso configurar o meu linux para um

bom funcionamento através das linhas de comando e edição de scripts.

Comando é um pequeno programa, que tem por finalidade a intenção de provocar

algo, ou seja, quando executado retorna a um resultado.

Um sistema operacional é constituído por vários programas, sendo que um programa é

constituído por vários comandos.

O terminal também conhecido como "shell". Isto é, um programa responsável em

interpretar as instruções enviadas pelo usuário e seus programas ao sistema operacional (o

kernel). Ele que executa comandos lidos do dispositivo de entrada padrão (teclado) ou de um

arquivo executável. É a principal ligação entre o usuário, os programas e o kernel. O

GNU/Linux possui diversos tipos de interpretadores de comandos, entre eles podemos

destacar o bash, ash, csh, tcsh, sh, etc. Entre eles o mais usado é o bash. O interpretador de

comandos do DOS, por exemplo, é o command.com.

Os comandos podem ser enviados de duas maneiras para o interpretador: interativa e

não-interativa:

Interativa

Os comandos são digitados no aviso de comando e passados ao interpretador de

comandos um a um. Neste modo, o computador depende do usuário para executar uma tarefa,

ou próximo comando.

Não-interativa

São usados arquivos de comandos criados pelo usuário (scripts) para o computador

executar os comandos na ordem encontrada no arquivo. Neste modo, o computador executa os

comandos do arquivo um por um e dependendo do término do comando, o script pode checar

10

Page 11: Comandos e Sintaxes

qual será o próximo comando que será executado e dar continuidade ao processamento.

Este sistema é útil quando temos que digitar por várias vezes seguidas um mesmo

comando ou para compilar algum programa complexo.

O shell Bash possui ainda outra característica interessante: A completação dos nomes.

Isto é feito pressionando-se a tecla TAB. Por exemplo, se digitar "ls tes" e pressionar <tab>, o

Bash localizará todos os arquivos que iniciam com "tes" e completará o restante do nome.

Caso a completação de nomes encontre mais do que uma expressão que satisfaça a pesquisa,

ou nenhuma, é emitido um beep. Se você apertar novamente a tecla TAB imediatamente

depois do beep, o interpretador de comandos irá listar as diversas possibilidades que

satisfazem a pesquisa, para que você possa escolher a que lhe interessa. A completação de

nomes funciona sem problemas para comandos internos.

Exemplo: ech (pressione TAB). ls /vm(pressione TAB)

Terminal Virtual (console)

Terminal (ou console) é o teclado e tela conectados em seu computador. O GNU/Linux

faz uso de sua característica multi-usuária usando os "terminais virtuais". Um terminal virtual

é uma segunda seção de trabalho completamente independente de outras, que pode ser

acessada no computador local ou remotamente via telnet, rsh, rlogin, etc.

No GNU/Linux, em modo texto, você pode acessar outros terminais virtuais

segurando a tecla ALT e pressionando F1 a F6. Cada tecla de função corresponde a um

número de terminal do 1 ao 6 (o sétimo é usado por padrão pelo ambiente gráfico X). O

GNU/Linux possui mais de 63 terminais virtuais, mas apenas 6 estão disponíveis inicialmente

por motivos de economia de memória RAM .

Se estiver usando o modo gráfico, você deve segurar CTRL+ ALT enquanto pressiona

uma tela de <F1> a <F6>. Para voltar ao modo gráfico, pressione CTRL+ALT+ <F7>.

Um exemplo prático: Se você estiver usando o sistema no Terminal 1 com o nome

"joao" e desejar entrar como "root" para instalar algum programa, segure ALT enquanto

pressiona <F2> para abrir o segundo terminal virtual e faça o login como "root". Será aberta

uma nova seção para o usuário "root" e você poderá retornar a hora que quiser para o primeiro

terminal pressionando ALT+<F1>.

11

Page 12: Comandos e Sintaxes

Caracteres Curingas

Curingas (ou referência global) é um recurso usado para especificar um ou mais

arquivos ou diretórios do sistema de uma só vez. Este é um recurso permite que você faça a

filtragem do que será listado, copiado, apagado, etc. São usados 4 tipos de curingas no

GNU/Linux:

➢ "*" - Faz referência a um nome completo/restante de um arquivo/diretório.

➢ "?" - Faz referência a uma letra naquela posição.

➢ [padrão] - Faz referência a uma faixa de caracteres de um arquivo/diretório. Padrão

pode ser:

[a-z][0-9] - Faz referência a caracteres de a até z seguido de um

caracter de 0 até 9.

[a,z][1,0] - Faz a referência aos caracteres a e z seguido de um caracter

1 ou 0 naquela posição.

[a-z,1,0] - Faz referência a intervalo de caracteres de a até z ou 1 ou 0

naquela posição.

A procura de caracteres é "Case Sensitive" assim se você deseja que sejam

localizados todos os caracteres alfabéticos você deve usar [a-zA-Z].

Caso a expressão seja precedida por um ^, faz referência a qualquer caracter exceto

o da expressão. Por exemplo [^abc] faz referência a qualquer caracter exceto a, b e

c.

➢ {padrões} - Expande e gera strings para pesquisa de padrões de um

arquivo/diretório.

X{ab,01} - Faz referência a seqüencia de caracteres Xab ou X01

X{a-z,10} Faz referencia a seqüencia de caracteres Xa-z e X10.

O que diferencia este método de expansão dos demais é que a existência do

arquivo/diretório é opcional para geração do resultado. Isto é útil para a criação de diretórios.

Lembrando que os 4 tipos de curingas ("*", "?", "[]", "{}") podem ser usados juntos. Para

entender melhor vamos a prática:

12

Page 13: Comandos e Sintaxes

Vamos dizer que tenha 5 arquivo no diretório /usr/teste: teste1.txt, teste2.txt, teste3.txt,

teste4.new, teste5.new.

Caso deseje listar todos os arquivos do diretório /usr/teste você pode usar o coringa

"*" para especificar todos os arquivos do diretório:

cd /usr/teste e ls * ou ls /usr/teste/*.

Não tem muito sentido usar o comando ls com "*" porque todos os arquivos serão

listados se o ls for usado sem nenhum Coringa.

Agora para listar todos os arquivos teste1.txt, teste2.txt, teste3.txt com excessão de

teste4.new, teste5.new, podemos usar inicialmente 3 métodos:

➢ Usando o comando ls *.txt que pega todos os arquivos que começam com qualquer

nome e terminam com .txt.

➢ Usando o comando ls teste?.txt, que pega todos os arquivos que começam com o

nome teste, tenham qualquer caracter no lugar do coringa ? e terminem com .txt.

Com o exemplo acima teste*.txt também faria a mesma coisa, mas se também

tivéssemos um arquivo chamado teste10.txt este também seria listado.

➢ Usando o comando ls teste[1-3].txt, que pega todos os arquivos que começam com

o nome teste, tenham qualquer caracter entre o número 1-3 no lugar da 6a letra e

terminem com .txt. Neste caso se obtém uma filtragem mais exata, pois o coringa

? especifica qualquer caracter naquela posição e [] especifica números, letras ou

intervalo que será usado.

➢ Agora para listar somente teste4.new e teste5.new podemos usar os seguintes

métodos:

➢ ls *.new que lista todos os arquivos que terminam com .new

➢ ls teste?.new que lista todos os arquivos que começam com teste, contenham

qualquer caracter na posição do coringa ? e terminem com .new.

➢ ls teste[4,5].* que lista todos os arquivos que começam com teste contenham

números de 4 e 5 naquela posição e terminem com qualquer extensão.

Existem muitas outras formas de se fazer a mesma coisa, isto depende do gosto de

13

Page 14: Comandos e Sintaxes

cada um. O que pretendi fazer aqui foi mostrar como especificar mais de um arquivo de uma

só vez. O uso de curingas será útil ao copiar arquivos, apagar, mover, renomear, e nas mais

diversas partes do sistema. Alias esta é uma característica do GNU/Linux: permitir que a

mesma coisa possa ser feita com liberdade de várias maneiras diferentes.

Tipos de Execução de comandos/programas

No linux existe dois tipos de usuário, o comum identificado pelo símbolo $ e o

administrador identificado pelo símbolo #. Isto é, certos comandos são executados pelos

usuários comuns e o administrador pode executar todos os tipos de comandos. Aviso de

comando [Administrador # (root) ] ou [Usuário comum $(usuário simples)].

Um programa pode ser executado de duas formas:

➢ Primeiro Plano - Também chamado de foreground. Quando você deve esperar o

término da execução de um programa para executar um novo comando. Somente é

mostrado o aviso de comando após o término de execução do comando/programa.

➢ Segundo Plano - Também chamado de background. Quando você não precisa

esperar o término da execução de um programa para executar um novo comando.

Após iniciar um programa em background, é mostrado um número PID

(identificação do Processo) e o aviso de comando é novamente mostrado,

permitindo o uso normal do sistema.

O programa executado em background continua sendo executado internamente. Após

ser concluído, o sistema retorna uma mensagem de pronto acompanhado do número PID do

processo que terminou.

Para iniciar um programa em primeiro plano, basta digitar seu nome normalmente.

Para iniciar um programa em segundo plano, acrescente o caracter "&" após o final do

comando.

OBS: Mesmo que um usuário execute um programa em segundo plano e saia do

sistema, o programa continuará sendo executado até que seja concluído ou finalizado pelo

usuário que iniciou a execução (ou pelo usuário root).

Exemplo: find / -name boot.b &

O comando será executado em segundo plano e deixará o sistema livre para outras

14

Page 15: Comandos e Sintaxes

tarefas. Após o comando find terminar, será mostrada uma mensagem.

COMANDOS SINTÁXES (# =usuário root e $=usuário

comum)

; → O ponto e vírgula (;) não é um

comando, mas é usado para indicar a

finalização de comandos. Pois assim

podemos executar dois ou mais comandos ao

mesmo tempo na mesma linha no terminal.

$ ls -la; date; cal

nautilus → permissão total na janela

que se abre no modo gráfico, depois

fechada tudo normal.

# nautilus

sudo su → dar permissão de usuário

root ao usuário logado.

$ sudo su

man → Fundamental para visualizar

manual de determinado comando.

$ man ls

1.1 Manipulando arquivos e diretórios

cd

Acessa diretórios.

$ cd /home

pwd

Mostra caminho de diretório.

$ pwd

../

Retorna a um nível anterior.

root@linux:/home/usuario/exemplo # ls ../

obs.: listará os arquivos de usuário e não do

diretório exemplo.

./root@linux:/home/usuario/exemplo #

./configure

15

Page 16: Comandos e Sintaxes

Determina algo no local.obs.: ideal para ativar scripts

cp

Copia arquivos ou diretórios.

$ cp -r minhas-imagens /home/album

Obs.: todos os diretórios entre chaves estão

no / e separados por vírgula.

# cp --preserve -R /

{home/user/test,home/user/videos,/etc}

/home/user/backup

dir

Usado listar arquivos e diretórios.

$ dir -la

du

Lista diretórios e mostra tamanho de

arquivos ou diretórios.

$ du -h; du -h arquivo

ls

Lista arquivos.

$ ls

ls -l

Lista arquivos visualizando o dono

e o grupo e suas permissões.

$ ls -l

ls -la

Lista arquivos ocultos e motra o

dono, grupo e permissões.

$ ls -la

ls -lha

Todas as funções dos ls anteriores,

porém este mostra o tamanho dos arquivos.

$ ls -lha

mkdir -p

Cria árvore de diretórios, obdecendo

o fechamento das chaves.

# mkdir -p teste01/{teste02,teste03/

{teste04,teste05}}

16

Page 17: Comandos e Sintaxes

touch

Usado para criar arquivos vazios

#touch nome.txt

mv

Renomeia arquivos e também move

se necessário para outro diretório.

# mv arquivo.do file.doc

rm -rdf

Remove arquivos ou diretórios.

# rm -rdf diretório; arquivo.doc

chmod +x

Torna arquivos em executáveis.

# chmod +x <nome do arquivo>

chattr

Protege arquivos, usa argumento +i

para proteger e -i desfaz a proteção).

Depois de inserir a proteção nem mesmo o

usuário root pode alterar o arquivo, somente

quando desfeita.

#chattr +i arquivo; chattr +i -R diretório

split

Quebra arquivos veja o manual

digitando man split no terminal.

Sintáxe: quebrando um arquivo de vídeo de

30MB em três pedaços de 10MB:

# split -b 10m homem_aranha.avi aranha.x

cat

Este comando tem várias funções

como por exemplo de visualizar o contéudo

de arquivos, criar lista do resultados de

comandos e agrupar arquivos quebrados pelo

# cat aranha.x* > homem_aranha2.avi

17

Page 18: Comandos e Sintaxes

comando split. Na sintáxe está montando as

partes do arquivo de 30 M, quebrado antes

em partes de 10M.

find

Pesquisa arquivos no disco, use o

comando man e estude detalhadamente o

comando, para ver seus argumentos.

# find -name arquivo

ln -s

Usado para criar link's para

arquivos, scripts, diretórios.

Lembre da permissões, estude permissões de

arquivos.

# ln -s nome_do_script /bin/nome_do_script

who

Mostra usuário logado e o nome do

terminal que está logado. Informando

horários de inicialização. Veja man who. E

estude seus atributos.

$ who

whoami

Mostra usuário

$ whoami

history

Visualiza histórico de comandos

usados, ou seja, manipulados pelo usuário.

Para visualizar o histórico por pausa, use o

atributo |more. Para limpa o use history

acrescentando o atributo -c

$ history

$ history |more

$ history -c

18

Page 19: Comandos e Sintaxes

1.2 Compactando arquivos

zip

Zip é um compactador padrão, ou

seja, o mais conhecidos dos formatos de

compressão é zip.

-r caso for um diretorio para compressão,

-e significa que uma senha será solicitada,

caso não queira uma senha não use;

-v de verbose para ver o andamento;

#zip -r -e -v educativos.zip

/home/usuario/educativos

unzip

É usado para descompactar arquivos

zip's e visualizá-los o que possui em seu

interior.

#unzip educativos.zip

#unzip -v educativos.zip

tar

É um outro compactador muito

eficiente, porém não usa senha.

#tar -cvvf educativos.tar.gz

/home/usuario/educativos

Para descompactar os arquivos tar.gz use o

comando:

#tar -xvvf educativos.tar.gz

7z

É um compactador bastante

eficiente, com possibilidade de uso de senha.

Argumentos:

a → adicionada;

e → extrai somente arquivos;

x → extrai arquivos obedecendo árvore de

Compacatando o diretório educativos

#7z a educativos.7z ./educativos

Para descompactar os arquivos 7z use o

comando:

#7z x educativos.7z

19

Page 20: Comandos e Sintaxes

diretórios.

u → faz update;

d → deletar;

l → listar arquivos contidos;

t → testar;

-p → inserir senha.

1.3 Editores do sistema

nano

É um programa editor do sistema

utilizado para criar ou editar scripts para o

sistema.

#nano arquivo

#man nano

vi

É um programa editor do sistema

utilizado para criar ou editar scripts para o

sistema.

# vi arquivo

# man vi

Explicando melhor o editor vi

O editor de textos (modo caracter) vi é muito utilizado no mundo Linux para editar

arquivos de configuração, embora este é o mais conceituado quando se trata de estudos para

certificação linux. O vi apresenta 2 modos de uso:

a) Modo de edição quando pressionamos a tecla < i >.

b) Modo de comando quando “chamamos” o vi ou desabilitamos o modo de

edição pressionando a tecla <ESC>.

Operações básicas do modo de comando:

Obs.: Conceito de linha: Considerasse linha o texto digitado até o próximo enter.

x → apaga um caracter

yy → copia a linha corrente

nyy copia n linhas

20

Page 21: Comandos e Sintaxes

D remove a linha corrente para posterior “colagem”

nD remove n linhas para posterior “colagem”

Obs.: Notar que é necessário pressionar a tecla <shift> para obter D (maiúsculo)

p cola o texto copiado ou removido para a memória, após o cursor

P cola o texto copiado ou removido para a memória, após o cursor

Obs.: Notar que é necessário pressionar a tecla <shift> para obter P (maiúsculo)

dd remove a linha corrente

ndd remove n linhas

dDD apaga do cursor até o final da linha

Obs.: Notar que é necessário pressionar a tecla <shift> para obter DD (maiúsculo)

cc elimina a linha corrente, permitindo a inclusão imediata de uma nova linha

ncc elimina n linhas, permitindo a inclusão imediata de uma nova linha

o insere linha em branco abaixo da linha corrente e habilita edição

O insere linha em branco acima da linha corrente e habilita edição

Obs.: Notar que é necessário pressionar a tecla <shift> para obter O (maiúsculo)

u desfaz as últimas alterações

. refaz o que “u” desfez

/ procura palavra

n continua (next) a procura da palavra, para frente

N continua (next) a procura da palavra, para trás

Obs.: Notar que é necessário pressionar a tecla <shift> para obter N (maiúsculo)

e avança para a próxima palavra (final da palavra) após o cursor

b retrocede para a palavra (início da palavra) anterior ao cursor

<shift> :% s / termo-antigo / termo-novo substitui o termo-antigo pelo termo-novo

<shift> :e nome-do-arquivo edita outro arquivo (novo ou já existente)

<shift> :r nome-do-arquivo insere na posição do cursor o arquivo

especificado

<shift> :q! sai sem salvar

<shift> :wq (ou x) sai gravando

<shift> :wq! (ou x!) sai gravando, forçando

<shift> :w salva sem sair

<shift> :w! salva sem sair, forçando

21

Page 22: Comandos e Sintaxes

Obs.: Se digitarmos no prompt do Linux apenas vi, o editor entrará em operação com

um arquivo em branco e sem nome. Se digitarmos no prompt do Linux vi <nome-do-

arquivo>, o editor entrará em operação com um arquivo em branco e com nome. Se

digitarmos no prompt do Linux vi +8 <nome-do-arquivo>, abriremos o arquivo específico na

linha 8.

2. Sistema

2.1 Comandos do sistema

date -s

Ajusta a data e hora entre aspas. Porém mostra a data quando digitado somente date.

# date -s "12:00"; date -s "02/05/2009"

clear

Usado para limpar a tela, porém as combinações Ctrl + L, é bem mais prático.

$ clear

uname -a

Visualiza a versão do kernel.$ uname -a

cal

Visualiza calendário, se digitado só cal , mostra o mês com dias da semana, se expecíficado o ano, mostra o calendário daquela época.

$ cal $ cal 1990

lshw

Visualiza todos os dispositivos de hardware

no computador.# lshw

fdisk

22

Page 23: Comandos e Sintaxes

Este é um programa para criar e manipular partições, muito utilizado no linux.Para visualizar as partições correntes no disco e dispositivos extras. Use o comando: # fdisk -l

Estude seu manual use o comando:#man fdisk

Criando partições com o fdisk

Acesse o dispositivo usando o comando:# fdisk /dev/sdb

Onde /dev/sdb é o dispositivo.

Depois surge:

Comando (m para ajuda): m → digite para visualizar o menu.

Comando - ação a alterna a opção "inicializável" b edita rótulo BSD no disco c alterna a opção "compatibilidade" d exclui uma partição l lista os tipos de partição conhecidos m mostra este menu n cria uma nova partição o cria uma nova tabela de partições DOS vazia p mostra a tabela de partições q sai sem salvar as alterações s cria um novo rótulo de disco Sun vazio t altera a identificação da partição para o sistema u altera as unidades das entradas mostradas v verifica a tabela de partições w grava a tabela no disco e sai x funcionalidade adicional (somente para usuários avançados)

Comando (m para ajuda): n → digite para criar uma nova partição.Comando - ação e estendida p partição primária (1-4)

p → digite para primária.Número da partição (1-4): 1 → digite para primeira partição primária.

Primeiro cilindro (1-1016, padrão 1): 1 → digite para padrão

23

Page 24: Comandos e Sintaxes

Last cilindro, +cilindros or +size{K,M,G} (1-1016, padrão 1016): 1016 M → para determinar o tamanho da partição. Note que estou criando uma única partição. Se desejasse mais de uma no mesmo dispositivo, deveria escolher um valor menor onde a soma desses valores resultaria o tamanho total.

Exemplo: caso duas partições uma de 200M e outra de 815M no dispositivo que tenha 1016 cilindros, ficaria assim.a) Partição 1:

Número da partição (1-4): 1 Primeiro cilindro (1-1016, padrão 1): 1 Last cilindro, +cilindros or +size{K,M,G} (1-1016, padrão 1016): 200M

b)Partição 2:

Número da partição (1-4): 2 Primeiro cilindro (201-1016, padrão 201): 201 Last cilindro, +cilindros or +size{K,M,G} (201-1016, padrão 1016): 815M

Comando (m para ajuda): w → para gravar as alterações no dispositivo e sair.A tabela de partições foi alterada!

# mkfs.vfat /dev/sdb1 → Formatando a partição em fat32 para leitura em todos os SO's.mkfs.vfat 3.0.3 (18 May 2009)

mount

Monta dispositivos de armazenamento de dados:/dev/sda3 é o dispositivo;/mnt/disco é o ponto de montagem.

# mount /dev/sda3 /mnt/disco

Montando uma imagem de extensão .iso,

No linux podemos visualizar o conteúdo de uma imagem, sem a necessidade de queimar um CD, veja:

O “ mp3.iso” é a imagem, “/mnt” é o ponto de montagem.

Sintáxe: # mount -o loop mp3.iso /mnt

Para desmontá-la uso o comando “umount , que é usado para desmontar

24

Page 25: Comandos e Sintaxes

dispositivos.

Sintáxe: # umount /mnt/disco

mkfs

Formata partição ou dispositivos de dados.

# mkfs.ext3 /dev/sda3

df -h

Mostra o tamanho de partições ou dispositivos montados.

# df -h

Fazendo Backup da MBR utilizando o dd

# dd if=/dev/sda of=./backup.mbr bs=512 count=1

O “dd” é um programa capaz de acessar qualquer parte do disco até mesmo a MBR, o

“if” significa entrada de fluxo (input flow) e o “of” significa saída de fluxo (out flow), “bs”

determina a quantidade de bytes em bloco, no caso da MBR, o bs=512 porque ela contém 512

bytes com a tabela de partição, “count” é o contador, ou seja, determina quais blocos, a MBR

fica no primeiro bloco do HD então o “count=1”. Criando assim o arquivo backup.mbr.

Obs.: quando visualizo o meu disco com o “fdisk -l”, ele mostra /dev/sda e suas

partições. Pois meu disco é sata. Veja:

#sfdisk -d /dev/sda > sda.sfArquivo de Informações adicionais, na realidade dois arquivos serão

gerados o de backup da MBR já explicado e o sda.sf.

Restaurando a cópia de segurança da MBR, use as duas situações abaixo como root,

utilizando um live-cd, estes argumentos são necessários quando o grub está com erro, por

causa de uma atualização mal sucedida. Tenha cópia também do menu.list, bastando

simplesmente acessar a pasta do /boot/grub e fazer uma cópia deste arquivo.

#dd if=backup.mbr of=/dev/sda

25

Page 26: Comandos e Sintaxes

#sfdisk -force /dev/sda < sda.sf

2.2 Entendendo processos

Processo é um programa em execução. Aqui aprenderemos como gerenciar processos no sistema.

top

Visualiza processos, correntes no sistema. Para sair pressione Q.

$ top

ps aux

Mostra processos ativos.

$ ps aux

kill

Usado para mata processo com o número do processo. Utilize argumento -9.

# kill -9 1234

pstree

Usado para ver árvore de processos. #pstree

2.3 Memória RAM e administração da memória SWAP

free -m

Visualiza o tamanho da memória RAM e memória SWAP.

# free -m

26

Page 27: Comandos e Sintaxes

Administrando a swap

Você pode acompanhar o uso de memória do sistema através do comando"free" que

exibe um relatório de quanta memória (física e swap) está sendo usada e quanto ainda está

disponível.

Um recurso que vem a ser necessário é que você pode criar, a qualquer momento,

um arquivo de memória swap temporário, usando o espaço livre do HD. Para isso basta usar

os comandos (como root):

1. criando o arquivo:

# dd if=/dev/zero of=./swap bs=1M count=512

2. formatando como memória de troca:

# mkswap ./swap

3. ativando:

# swapon ./swap

4. use o comando free -m para visualizar.

Substitua o número 512 pela quantidade de memória swap desejada em MB.

São 512 MB, mas não é preciso usar um número exato, você pode usar "734" por exemplo).

O arquivo temporário é desativado automaticamente ao reiniciar o micro, mas você pode

fazê-lo a qualquer momento usando os comandos:

# swapoff ./swap

# rmdir ./swap

2.4 Usando os programas: genisoimage; dd; cdrecord; cdparanoia; lame

2.4.1 Criando imagens ISO apartir de dados no computador

27

Page 28: Comandos e Sintaxes

O “genisoimage” é usado para criar imagens com extensão iso apartir de dados

existentes no computador. Então veja:

• -r -J → são argumentos de compatibilidade com outros sistemas operacionais;

• -o → determina o nome do arquivo iso;

• -R → de recursivamente, ou seja, determinará que todos os diretórios e sub-

diretórios serão inclusos na imagem.iso;

• -v → de verbose;

• -V → para determinar o título da imagem.

Sintaxe:

# genisoimage -r -J -o backup.iso -R -v -V Meu_backup -L /{/etc,/usr,/home/usuario,/lib}

Abaixo estou fazendo uma cópia de segurança do meu sistema, não incluindo na

minha imagem alguns diretórios:

O argumento “-x” impedirá a cópia dos diretórios /mnt, /proc, /dev, /lost+found, /tmp.

Sintáxe:

# genisoimage -a -o backup.iso -R -v -V Meu_backup -L -x /mnt -x /proc -x /dev -x

/lost+found -x /tmp /

Isto criará sua imagem, para gravar em cd use o cdrecord como abaixo:

Sintáxe:

cdrecord -v -dao dev=1,0,0 backup.isocaso não saiba a identificação da sua gravadora de cd que é o dev e uns números use o

comando :

cdrecord -scanbus

2.4.2 Fazendo cópias de CD's e DVD's de dados

Note: isto não é válido para cd's de audio tradicional, pois estes exige uma correção na

transferência. Porém é válido para DVD's de filmes pois estes são puro dados . Para gravar

cd's tradicionais será explicado mais adiante.

28

Page 29: Comandos e Sintaxes

# dd if=/dev/cdrom of=./imagem.iso

Esta linha de comando acima criará uma imagem do CD no diretório corrente, o único

inconveniente deste comando é que ele não aceita o -v de verbose, e não existe nenhum outro

para visualizarmos o andamento.

2.4.3 Gravando um CD/DVD apartir de uma imagem ISO

Primeiro devemos ter a imagem que representa o CD, já explicado antes como criar a

imagem e então usamos os comandos cdrecord ou wodim via terminal.

Sintáxe:

# cdrecord -v -fs=16M speed=8 dev=0,0,0 -data trabalhos.iso

-v : Exibe informações durante a gravação.

-fs=16M : Especifica o tamanho do buffer na memória RAM em megabytes. Substitua o 16

por um tamanho maior se tiver uma quantidade de memória agradável.

Graças ao cache de memória e à multitarefa real, o Linux oferece umatolerância muito

maior durante a gravação. Quase sempre você conseguirá gravar a 8x ou mais, mesmo que

continue usando o PC normalmente.

speed=8 : A velocidade de gravação. Pode ser qualquer número suportado pelo gravador.

dev=0,0,0 : Especifica a localização do gravador. O 0,0,0 é o padrão para gravadores IDE na

maioria das distribuições. Se não funcionar, use o comando “cdrecord -scanbus” (como root)

para ver onde está instalado o seu gravador.

-data : Especifica o arquivo ISO que será gravado, no caso estamos

gravando trabalhos.iso

29

Page 30: Comandos e Sintaxes

2.4.4 Gravando CD's de músicas tradicionais via linha de comando.

Para extrai todas as faixas do CD no diretório corrente use o comando:

# cdparanoia -BPara extrai uma faixa específica use:

# cdparanoia 2 faixa.wavPara extrai um grupo de faixas use:

# cdparanoia 2-4O comando abaixo gravará o cd de audio tradicional com todas as faixas que foi

extraída.

# cdrecord -v -fs=16M speed=8 dev=0,0,0 -audio *Se você preferir especificar manualmente as faixas a serem gravadas, uma a uma,

basta substituir o asterisco pelos nomes das faixas, separadas por espaços:

# cdrecord -v -fs=16M speed=8 dev=0,0,0 -audio 01.wav 02.wav 03.wav

2.4.5 Convertendo CD's em formato mp3

Como já explicado extraia as músicas de um cd comum usando o comando:

cdparanoia -B , e em seguinda utilizaremos as faixas, convertendo-as em formato mp3 usando

programa lame, caso não esteja instalado dar um apt-get install lame.

O lame converte arquivos wav em mp3, veja o Manual do lame

Sintáxe: # man lame

Para utilizar o lame acesse o diretório que contém os arquivos wav e

converta todos em mp3 usando:

Sintáxe: # lame -V 6 *.wav *.mp3Obs.: o asterisco representa o nome do arquivo que será informado.

- V 6 é a qualidade da música que estou confirmando para o formato mp3. Se desejar maior

qualidade o arquivo de audio mp3 ocupará mais espaço e ficará melhor. Uso o V6, fica ótimo.

Porém varia de 1 a 9.

Obs.: Para gravar um cd de músicas MP3. Os passos são os mesmo utilizados para

30

Page 31: Comandos e Sintaxes

gravar um cd de dados, já explicados acima.

2.4.6 Gravando CD's de áudio e dados juntos

Você também pode gravar CDs mistos, com faixas de dados e de música, como em

alguns Cds de jogos, onde as músicas podem ser tocadas em CD-Players comuns. Para isto,

basta indicar as faixas de dados e de áudio a serem gravadas, colocando sempre a(s) faixa(s)

de áudio no final:

# cdrecord -v -fs=16M speed=8 dev=0,0,0 -data imagem.iso -audio track1.cdr

Outro que substitui o cdrecord é o

wodim porém usa os mesmos argumentos.

2.5 Entendendo o apt-get

2.5.1 Introdução

O apt-get é um recurso desenvolvido originalmente para a distribuição Debian que

permite a instalação e a atualização de pacotes (programas, bibliotecas de funções, etc) no

Linux de maneira fácil e precisa. Este artigo, dividido em duas partes, mostrará como utilizar

seus principais recursos.

2.5.2 Comandos afins do apt-get

• #apt-get update; → atualiza o sistema;

• #apt-get install <nome do programa>; → instala programas;

• #apt-get remove <nome do programa>; → remove programa;

• #apt-cache search <nome do pacote>; → pesquisa pacote;

• #apt-get --purge remove <nome do programa>; → remove o programa e todas as

• suas informações;

• #apt-cache show <nome do pacote>; → mostra detalhadamente informações do

31

Page 32: Comandos e Sintaxes

• pacote.

• #apt-get clean → libera o cache do apt-get

Vale frisar que o apt-get deve ser utilizado através de um usuário com privilégios de

administrador, ou seja, usuário root.

2.5.3 O que é apt-get ?

Em qualquer sistema operacional há a necessidade de se instalar programas para que o

uso do computador faça sentido. O problema é que, muitas vezes, o processo de instalação é

trabalhoso, forçando o usuário a procurar arquivos indispensáveis ao software (dependências)

ou a editar scripts, por exemplo.

Para poder lidar com esses e com problemas oriundos, desenvolvedores da distribuição

Debian Linux criaram o APT (Advanced Packaging Tool), uma ferramenta para instalar e

atualizar pacotes (e suas dependências) de maneira rápida e prática. Não demorou para que o

APT fosse utilizado em outras distribuições, sendo padrão no Debian e no Ubuntu (já que este

é baseado no Debian).

2.5.4 Como utilizar o apt-get ?

Atualizando a lista de pacotes.

Quando o apt-get é utilizado no Linux, o comando consulta um arquivo denominado

sources.list, geralmente disponível no diretório /etc/apt/. Esse arquivo informa onde estão os

locais (repositórios) nos quais ele obterá os pacotes requisitados pelo usuário.

Pelo arquivo /etc/apt/sources.list o APT sabe onde procurar os pacotes solicitados. O

problema é que ele precisa conhecer o que está instalado no sistema operacional para saber

exatamente o que procurar. Se não tiver essas informações, o APT não saberá que um

determinado pacote essencial a um programa não está instalado e não providenciará sua

instalação, por exemplo. Para lidar com essa situação, o APT utiliza um banco de dados

32

Page 33: Comandos e Sintaxes

próprio e o compara aos repositórios registrados no sources.list para saber quando um pacote

está atualizado ou quando há uma nova versão de um determinado aplicativo. Para fazer o

APT executar essa tarefa, basta digitar em um terminal o seguinte comando:

#apt-get update;

2.5.5 Instalando pacotes

Antes de instalar um programa, é necessário executar o comando mostrado no tópico

anterior para o APT saber o que está e o que não está instalado no computador. É por isso que

esse comando foi explicado primeiro.

Depois de ter executado o apt-get update, basta digitar o seguinte comando para

instalar os pacotes desejados:

#apt-get install <nomedoprograma>;

Por exemplo, suponha que você queira instalar o cliente de e-mail Mozilla

Thunderbird. Para isso, basta dar o comando:

#apt-get install mozilla-thunderbird;

Quando esse comando é executado, o APT procura nos repositórios os pacotes

correspondentes e os instala imediatamente após baixá-los.

Caso o programa necessite de um outro pacote, o APT o procurará e perguntará se você deseja

instalá-lo, no que você deverá responder com Y (sim) ou N (não), como mostra a situação

abaixo:

0 packages upgraded, 6 newly installed, 0 to remove and 2 not upgraded. Need to get 6329kB

of archives. After unpacking 14.1MB will be used.

Do you want to continue? [Y/n]

33

Page 34: Comandos e Sintaxes

2.5.6 Removendo pacotes com o apt-get

Se você não quer mais utilizar um determinado programa, pode desinstalá-lo através

do comando apt-get. Para isso, basta digitar:

#apt-get remove <nome do programa>;

Por exemplo, suponha que você queira desinstalar o Mozilla Thunderbird. O comando

ficará então da seguinte forma:

#apt-get remove mozilla-thunderbird;

É importante destacar que o comando acima remove o programa, mas mantém os

arquivos de configuração, caso estes existam. Para uma desinstalação total do programa,

incluindo arquivos extras, deve-se usar o comando:

#apt-get --purge remove <nomedoprograma>;

2.5.7 Atualizando pacotes com o apt-get

Versões novas de programas são lançadas periodicamente por conterem correções de

segurança, disponibilizarem novos recursos ou por executarem de forma melhor. Com o

comando apt-get é possível obter e instalar versões mais novas de pacotes. Para isso basta

digitar o comando:

#apt-get -u upgrade;

O parâmetro -u serve para o apt-get mostrar os pacotes que estão sendo atualizados,

portanto, seu uso é opcional.

Um detalhe importante: na atualização de pacotes, também é importante executar antes

34

Page 35: Comandos e Sintaxes

o comando apt-get update.

2.5.8 Descobrindo nomes de pacotes

Você viu que é necessário conhecer o nome de um pacote para poder instalá-lo. Em

muitos casos, o nome segue a mesma denominação do aplicativo. Por exemplo, se você quer

instalar o programa para bate-papo XChat, basta digitar:

#apt-get install xchat;

Entretanto, nem sempre o nome do pacote é trivial e muitas vezes não sabemos sequer

o nome do programa, apenas estamos à procura de um software que atenda a uma

determinada necessidade. O que fazer então?

No APT pode-se usar o seguinte comando:

#apt-cache search termo;

Por exemplo, suponha que você queira procurar jogos para o Linux. O comando a ser

usado é:

#apt-cache search games;

Ao fazer essa pesquisa, o APT mostrará uma lista dos pacotes encontrados exibindo

seus respectivos nomes seguidos de uma descrição.

Se você quer ter uma descrição mais detalhada de um dos pacotes listados, basta

digitar o seguinte comando:

#apt-cache show nomedopacote;

35

Page 36: Comandos e Sintaxes

2.5.9 Mostrando detalhes de um pacote

É importante frisar que existem outras formas para descobrir nomes de pacotes, porém

essa é uma das mais conhecidas. Uma alternativa interessante para quando você não sabe ao

certo a denominação do software, é digitar as primeiras letras do nome deste e pressionar a

tecla Tab duas vezes no teclado para ele auto-completar até a denominação desejada aparecer.

Arquivo sources.list

Você viu no início deste artigo que o arquivo sources.list indica os locais ou

repositórios onde o APT deve buscar pacotes. É possível indicar vários servidores, por isso é

importante entender como esse arquivo funciona para acrescentar, ou se necessário, retirar

repositórios.

Ao abrir o arquivo sources.list (no editor de textos de sua preferência, como o emacs

ou vi), você encontrará algo mais ou menos semelhante a:

deb http://us.archive.ubuntu.com/ubuntu breezy main restricted universe multiverse

deb-src http://us.archive.ubuntu.com/ubuntu breezy main restricted universe multiverse

O sources.list contém uma lista de repositórios, sendo cada um adicionado linha por

linha. O primeiro termo - deb - indica o tipo de pacote disponível naquele repositório. O

termo "deb" é indicado porque esse é o tipo de arquivo usado como pacote. A alternativa é a

extensão deb-src, que indica que o repositório oferece pacotes com código-fonte dos

programas (útil a programadores e desenvolvedores).

O termo seguinte é o endereço do servidor do repositório. Ele pode ser HTTP, FTP, file

(arquivos locais), entre outros.

No final da linha vem os atributos, que indicam, por exemplo, a que versão da

distribuição o repositório se refere.

36

Page 37: Comandos e Sintaxes

Note que você também encontrará várias linhas com o símbolo # em seu início. Neste

caso, a linha será ignorada pelo APT, tal como se não existisse, permitindo desativar

temporariamente repositórios ou a inclusão de comentários com orientações.

Você poderá obter em fóruns, em sites oficiais de distribuições que usam APT ou em

listas de discussão quais são os repositórios que valem a pena serem adicionados no

sources.list de seu Linux. Usuários do Debian, por exemplo, contam com o endereço

www.debian.org/distrib/packages para isso.

É importante não esquecer de executar o comando apt-get update após alterar esse

arquivo, do contrário, o sistema irá executar a versão antiga até ser encerrado e ligado

novamente.

2.5.10 Finalizando

Usuários acostumados com outros sistemas operacionais costumam dizer que instalar

programas no Linux é uma tarefa difícil, o que não é verdade. O APT mostra-se muito

intuitivo nessa tarefa e aprender a usá-lo requer pouco esforço, mesmo porque, com ele, não é

preciso visitar um determinado site, baixar os pacotes e depois instalá-los; o APT conta com

milhares de programas e, por isso, resume bastante o trabalho de instalação (dependendo do

caso, ela baixará o software e uma janela com botões Next/Avançar aparecerá para você

prosseguir com a instalação).

2.6 Configurando RAID no Linux

Ao final deste artigo, o leitor vai aprender como configurar o RAID no Linux de forma

prática. Este artigo funciona para qualquer distribuição que usa o mdadm. É importante

salientar que as partições/discos precisam ser de tamanhos semelhantes.

Se você deseja segurança a pedida é RAID1 ou RAID5 (este último precisa de 3 HD’s

37

Page 38: Comandos e Sintaxes

pelo menos), mas é possível utilizar RAID0 em casa para o ganho de performance: ele não lhe

dará segurança, mas diminui o tempo de acesso aos discos. Por fim, software RAID é uma

boa pedida tanto para pequenos servidores como para computadores caseiros, trazendo

segurança e performance a estas máquinas.

2.6.1 Conhecimentos necessários

É necessário um conhecimento intermediário no Linux ou saber como trabalhar com

partições, saber usar um editor do sistema como vi ou nano. É necessário um computador

com duas partições livres de pelo menos 1GB cada ou dois discos rígidos apenas para testes,

ou até mesmo usar o dispositivo de loop do próprio linux, para criar arquivos de bloco, onde

simulará as partições.

2.6.2 Definindo RAID

Você quer ter redundância de dados? Quer aumentar o desempenho de acesso aos

discos? Então, use RAID.

Redundant Array of Independent Disks. Traduzindo: Arranjo Redundante de Discos

Independentes. É uma forma de você fazer arranjos entre discos para obter maior

confiabilidade, maior capacidade de dados e também redução de tempo de acesso aos dados.

Então, três características do RAID:

1. Confiabilidade;

2. Desempenho;

3. Armazenamento.

38

Page 39: Comandos e Sintaxes

2.6.3 Tipos de RAID

Por Hardware - Através de controladoras especiais. O ideal é usar controladora e

discos SCSI, devido a performance e segurança. Na maioria das vezes, usamos esta opção,

pois, além de ser mais seguro, a performance é melhor. Claro que é bem mais caro, pois será

necessários placas especiais e discos scsi.

Por Software - Através de módulos do kernel do Linux. Aqui, quem vai fazer o RAID

é o kernel do Linux. Útil quando não temos discos scsi e nem controladoras especiais. Testei

RAID via software com HD IDE e funciona de forma consistente.

Vamos implementar Raid via Software, pois existem casos que é necessário fazer desta

forma.

Primeiro vamos aprender sobre os níveis de RAID existentes:

RAID LINEAR: é transformar vários discos em um único. Não tem redundância.

RAID-0: é igual ao linear. A grande diferença é que no RAID-0 o desempenho é

melhor. Ele usa o conceito de Data Stripping -> segmentação de dados. Não é considerado o

RAID verdadeiro.

RAID-1: mais conhecido como espelhamento (mirror). Este sim, tem tolerância a

falhas. Os dados são duplicados em outro HD. Aqui, existe perda de 50%. Caso um disco

falhe o outro estará com os dados duplicados.

RAID-2 e RAID-3: Este dois tipos raramente são utilizados. O Linux também não

oferece suporte a RAID-3 por software.

39

Page 40: Comandos e Sintaxes

RAID-4: Um disco guarda informações de paridade. Quando um disco falha os dados

podem ser recuperados usando a informação de paridade.

RAID-5: Este é o modelo ideal. Mas as informações de paridade são guardadas em

todos os discos. São necessários 5 discos.

2.6.4 Usando o mdadm para Configurar o Armazenamento Baseado no RAID e Multi-localidade

Similar a outras ferramentas contidas no pacote raidtools, o comando mdadm pode ser

usado para executar todas as funções necessárias relacionadas à administração de conjuntos

multi-dispositivos. Nesta seção mostramos como o mdadm pode ser usado para:

• Criar um dispositivo RAID

• Criar um dispositivo multi-localidade

2.6.4.1. Criando um Dispositivo RAID com mdadm

Para criar um dispositivo RAID, edite o arquivo /etc/mdadm/mdadm.conf para definir

valores DEVICE e ARRAY apropriados:

DEVICE /dev/sda1,/dev/sdb1,/dev/sdc1,/dev/sdd1

ARRAY /dev/md0 devices=/dev/sda1,/dev/sdb1,/dev/sdc1,/dev/sdd1

Neste exemplo, a linha DEVICE está definindo os dispositivos SCSI seguintes:

• /dev/sda1

• /dev/sdb1

• /dev/sdc1

• /dev/sdd1

A linha ARRAY define um dispositivo RAID (/dev/md0) composto pelos dispositivos

SCSI definidos na linha DEVICE.

40

Page 41: Comandos e Sintaxes

Antes de criar ou usar qualquer dispositivo RAID, o arquivo /proc/mdstat não exibe

nenhum dispositivo RAID ativo, visualize utilizando cat /proc/mdstat:

Personalities :read_ahead not setEvent: 0unused devices: none

Obs.: depois do RAID criado visualize este arquivo novamente.

Depois da edição do arquivo /etc/mdadm/mdadm.conf, explicado acima, use o comando mdadm da seguinte forma para criar um conjunto RAID 0:

mdadm -C /dev/md0 --level=raid0 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 \/dev/sdd1Continue creating array? yesmdadm: array /dev/md0 started.

Uma vez que tenha sido criado, o dispositivo RAID pode ser questionado a qualquer momento para o fornecimento de informações de estado. O exemplo seguinte exibe a saída do comando mdadm --detail /dev/md0:

/dev/md0:Version : 00.90.00Creation Time : Mon Mar 1 13:49:10 2004Raid Level : raid0Array Size : 15621632 (14.90 GiB 15.100 GB)Raid Devices : 4Total Devices : 4Preferred Minor : 0Persistence : Superblock is persistent

Update Time : Mon Mar 1 13:49:10 2004State : dirty, no-errorsActive Devices : 4Working Devices : 4Failed Devices : 0Spare Devices : 0

Chunk Size : 64K

Number Major Minor RaidDevice State 0 8 1 0 active sync /dev/sda1 1 8 17 1 active sync /dev/sdb1 2 8 33 2 active sync /dev/sdc1 3 8 49 3 active sync /dev/sdd1 UUID : 25c0f2a1:e882dfc0:c0fe135e:6940d932 Events : 0.1

41

Page 42: Comandos e Sintaxes

O comando usado para criar o sistema de arquivo com ext3 é este:

# mke2fs -j /dev/md0

Este comando verifica o número de verificações do sistema de arquivos:

# tune2fs -c 20 /dev/md0

Criando um diretório para montar o RAID

mkdir /mnt/raid1

mount -t ext3 /dev/md0 /mnt/raid1

cd /mnt/raid1

Neste momento, já é possível realizar testes no seu RAID, ou seja: copiar dados etc.

Faça os testes.

Este comando serve para dar um stop ao RAID, ou seja, pará-lo:

mdadm --stop /dev/md0

mdadm –run /dev/md0

2.6.4.2 Editando o FSTAB para automatizar o RAID e montá-lo no boot

Vamos colocar nosso Raid no fstab para caso, seja necessário fazer algum boot, ao

ligar o Linux tudo já funcione automaticamente. Veja como é simples:

vi /etc/fstab

/dev/md0 /mnt/raid1 ext3 defaults 0 0

42

Page 43: Comandos e Sintaxes

2.6.4.3 Criando um Dispositivo Multi-localidade com mdadm

Além de criar conjuntos RAID, o mdadm também pode ser usado para tirar proveito

do hardware suportando mais de uma localidade de E/S para LUNs (drives de disco) SCSI

individuais. O objetivo do armazenamento multi-localidade é a disponibilidade contínua de

dados no caso de falha de hardware ou saturação de uma localidade. Como essa configuração

contém diversas localidades (cada uma atuando como um controlador virtual independente)

acessando um LUN (drive de disco) SCSI comum, o kernel do Linux detecta cada drive

compartilhado uma vez "através" de cada localidade. Em outras palavras, o LUN (drive de

disco) SCSI conhecido como /dev/sda também pode estar acessível como /dev/sdb, /dev/sdc e

assim por diante, dependendo da configuração específica.

Para fornecer um único dispositivo que possa permanecer acessível se um caminho de

E/S falhar ou tornar-se saturado, o mdadm inclui um parêmetro adicional à opção level. Este

parêmetro multipath instrui a camada md do kernel do Linux para que faça o

redirecionamento de pedidos de E/S de um caminho para outro no evento de uma falha num

caminho de E/S.

Para criar um dispositivo multi-localidade, edite o arquivo /etc/mdadm.conf para

definir os valores das linhas DEVICE e ARRAY que refletem a configuração de seu hardware.

2.6.4.4 Nota

Ao contrário do exemplo RAID anterior (no qual cada dispositivo especificado em

/etc/mdadm.conf deve representar drives de disco físicos diferentes), cada dispositivo deste

arquivo refere ao mesmo drive de disco compartilhado.

O comando usado para a criação de um dispositivo multi-localidade é similar àquele

usado para criar um dispositivo RAID; a diferença é a substituição do parâmetro de um nível

do RAID pelo parâmetro multipath.

mdadm -C /dev/md0 --level=multipath --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1Continue creating array? yesmdadm: array /dev/md0 started.

Obs.:A linha de comando do mdadm comando foi dividida em duas linhas devido à sua extensão.

43

Page 44: Comandos e Sintaxes

Neste exemplo, o hardware consiste de um LUN SCSI apresentado como quatro

dispositivos SCSI separados, cada um acessando o mesmo armazenamento por uma

localidade diferente. Uma vez criado o dispositivo multi-localidade /dev/md0, todas as

operações de E/S que façam referência a /dev/md0 são direcionadas para /dev/sda1,

/dev/sdb1, /dev/sdc1 ou /dev/sdd1 (dependendo de qual localidade estiver ativa e operacional

no momento).

A configuração do /dev/md0 pode ser examinada em mais detalhes usando o comando

mdadm --detail /dev/md0 para verificar se é , de fato, um dispositivo multi-localidade:

/dev/md0:Version : 00.90.00Creation Time : Tue Mar 2 10:56:37 2004Raid Level : multipathArray Size : 3905408 (3.72 GiB 3.100 GB)Raid Devices : 1Total Devices : 4Preferred Minor : 0Persistence : Superblock is persistent

Update Time : Tue Mar 2 10:56:37 2004State : dirty, no-errorsActive Devices : 1Working Devices : 4Failed Devices : 0Spare Devices : 3

Number Major Minor RaidDevice State 0 8 49 0 active sync /dev/sdd1 1 8 17 1 spare /dev/sdb1 2 8 33 2 spare /dev/sdc1 3 8 1 3 spare /dev/sda1 UUID : 4b564608:fa01c716:550bd8ff:735d92dc Events : 0.1

Uma outra característica do mdadm é a habilidade em forçar um dispositivo (seja um membro de um conjunto RAID ou uma localidade numa configuração multi-localidade) a ser removido de uma configuração em operação. No exemplo seguinte, o /dev/sda1 é marcado como falho, então é removido e finalmente adicionado de volta à configuração. Numa configuração multi-localidade, estas ações não impactariam nenhuma atividade de E/S ocorrendo no momento:

# mdadm /dev/md0 -f /dev/sda1

mdadm: set /dev/sda1 faulty in /dev/md0

44

Page 45: Comandos e Sintaxes

# mdadm /dev/md0 -r /dev/sda1

mdadm: hot removed /dev/sda1

# mdadm /dev/md0 -a /dev/sda1

mdadm: hot added /dev/sda1

2.7 Trabalhando com usuários, grupos e permissões

2.7.1 Adicionado usuário ao sistema

adduser Adiciona usuário ao sistema.

# adduser Ronaldo

deluser Deleta usuário do sistema.

# deluser Ronaldo

chmod Usado para dar ou alterar permissões em arquivos e diretórios.

#chmod 777 arquivo.doc

2.7.2 Entendendo permissões

Obs.: Antes de dar permissões a arquivos ou diretóros entenda asmáscaras? Veja abaixo:

r=leitura w=escrita e x=execução:

Nesse caso é mais prático mudar permissões pois utilizo apenas as letras de permissões, pois sei o que significa cada letra, veja quando utilizo a+wrx significa adicionar permissões, a-wrx tirar permissões a letra (a+ ou a-) significa a todos os usuários sintáxe: ( # chmod a+wrx <nome do arq. ou dir. ) ( # chmod a-wrx <nome do arq. ou dir. ) ( # chmod a-rx <nome do arq. ou dir. ) ( # chmod a-x <nome do arq. ou dir. ) Para dar permissões somente para o dono use a letra u (u+ ou u-) sintáxe: ( # chmod u+wrx <nome do arq. ou dir. ) ( # chmod u-wrx <nome do arq. ou dir. ) r=4 ;w=2; x=1 .

Obs.: quando usa permissões para o dono é importante saber quem é o dono do arquivo ou diretório, estude melhor o comando que muda o dono: # chown a soma deles = 4+2+1= 7 que resulta na máscara = rwx (todas as permissões) é dividido de três em três nesse caso o primeiro 7 é dono, o segundo 7 é o grupo, o terceiro 7 é o usuário comum. 777=rwxrwxrwx a soma de 4+2=6 , no caso usar o chmod 666 = rw-rw-rw-(permissão de leitura e escrita).→ Se não quiser da nenhuma permissão a sintáxe é : # chmod 000 <nome do arquivo ou diretório>.

000 = --- <significa nenhuma permissão>

45

Page 46: Comandos e Sintaxes

→ Quando tiver á máscara com as iniciais (d,l, -) isto significa:

d = diretório ou pasta;

l = link simbólico;

- = arquivos comuns.

2.7.3 Grupos: adicionando, deletando e alterando o dono

groupadd Adiciona grupo

#groupadd paz

groupdel Deleta grupo

#groupdel paz

chown -R <nome do usuário.nome do grup /local> altera o dono

# chown - R root.tecnologia /projeto

gpasswd -a <nome de usuário> <nome do grupo> adiciona um usuário no grupo

→ Sintáxe: # gpasswd -a teste tecnologia

gpasswd -d <nome do usuário> <nome do grupo> deleta um usuário no grupo

→ Sintáxe: # gpasswd -d teste tecnologia

ls -l <ver arquivos diretórios> com suas máscaras de permissões, dono,

grupo e data.

ls -la <ver arquivos ocultos e diretórios> com suas máscaras de

permissões, dono, grupo e data.

2.8 Determinando agendamento com o cron

2.8.1 Introdução

O "cron" é um programa usado para "agendar tarefas". Você pode programar um ou

vários eventos no linux para serem executados numa certa periodicidade ou até mesmo em um

exato dia, numa exata hora. Um uso bem comum do cron é o agendamento de tarefas

46

Page 47: Comandos e Sintaxes

administrativas de manutenção do seu sistema e backup. Estas tarefas são programadas para

todo dia, toda semana ou todo mês, serem automaticamente executadas através do crontab e

um script shell comum. A configuração do cron geralmente é chamada de crontab.

Os sistemas Linux possuem o cron sempre presente. Pelo menos eu nunca vi nenhuma

distribuição que não incluísse o tão útil cron. A configuração tem duas partes: Uma global, e

uma por usuário. Na global, que é o root quem controla, o crontab pode ser configurado para

executar qualquer tarefa de qualquer lugar, como qualquer usuário. Já na parte por usuário,

cada usuário tem seu próprio crontab, sendo restringido àpenas ao que o usuário pode fazer

(e não tudo, como é o caso do root).

O cron implementa uma agenda de tarefas para cada usuário. Sendo assim o comando

ou programa será executado sob o UID do usuário. O root pode determinar agendamento para

se próprio e para usuários comuns.

Depois de executar a tarefa agendada, o cron envia um e-mail para o usuário relatando

a saída do que foi agendado, este e-mail seŕa enviado para o diretório /var/mail.

O servidor cron deve estar rodando para que as tarefas sejam executadas.

Para agendar as tarefas usamos o comando crontab com a sintaxe descrita a baixo:

crontab [-u usuário] { -e | -l | -r }

A opção -u permite que o superusuário agende tarefas para outros usuários, pois o

comando su pode atrapalhar o crontab. Um usuário comum não precisa usar essa opção para

especificar ele próprio.

A opção -e edita o arquivo de tarefas agendadas pelo usuário. A formatação desse

arquivo será descrita mais adiante.

A opção -l lista o arquivo de tarefas agendadas pelo usuário.

A opção -r apaga o arquivo de tarefas agendadas pelo usuário.

Basicamente, para agendarmos uma tarefa deveremos editar o nosso arquivo “agenda” com o

comando: crontab -e

O formato de um comando do cron é em grande parte o padrão V7. Cada linha tem

cinco campos de hora e data, seguidos por um comando. Os comandos são executados pelo

47

Page 48: Comandos e Sintaxes

servidor cron quando os campos minuto, hora, e mês correspondem à hora atual, e quando

pelo menos um dos campos de dia (dia do mês, ou dia da semana) correspondem ao dia atual.

Os campos de hora e data são:

campo valores permitidos

minuto 0-59

hora 0-23

dia do mês 0-31

mês 0-12 (ou nome)

dia da semana 0-7 (0 ou 7 é domingo, ou nome)

Podemos usar intervalos de número usando o hífen “-” (ex: 1-10), um asterisco “*”

indica um intervalo do primeiro ao último valor permitido. Dentro do intervalo poderemos

determinar o passo (incremento) com uma barra “/” (ex: 1-10/2 ou */2). Podemos, também,

usar listas de números usando vírgula “,” (ex: 1,3,10). É interessante a possibilidade de

mesclarmos intervalos e listas (ex: 1-10/2,15,20-22,30). Lembre-se que não são permitidos

intervalos ou listas de nomes.

Os nomes dos meses e dos dias da semana são as primeiras três letras dos nomes

correspondentes em inglês. Veja as tabelas:

Mês Abrev. dia Abrev.

Janeiro Jan Domingo Sun

Fevereiro Feb Segunda Mon

Março Mar Terça Tus

Abril Apr Quarta Wed

Maio Mai Quinta Thu

Junho Jun Sexta Fri

Julho Jul Sábado Sat

Agosto Ago

Setembro Sep

Outubro Oct

Novembro Nov

Dezembro Dec

48

Page 49: Comandos e Sintaxes

Observação: o dia de execução de um comando pode ser especificado em dois campos

(dia do mês/dia da semana). Se ambos os campos são determinados, isso é, diferentes de “*”,

o comando será executado quando qualquer dos dois campos corresponder à data atual.

Exemplos de entradas para o arquivo agenda:

A linha abaixo copia todo o conteúdo do home do usuário para o disquete todo

domingo às 13h e 40min. (backup de dados)

40 13 * * Sun cp $HOME/* ./floppy -R -f

A linha abaixo apaga os arquivos core do home do usuário todos os dias à meia noite

0 0 * * * rm $HOME/core -f

2.8.2 Configurando o cron por usuário

Para configurar um crontab por usuário, utiliza-se o comando "crontab", junto com

um parâmetro, dependendo do que você quiser fazer. Abaixo uma relação:

root@linux:~# crontab -u usuário arquivo

Comando Função

crontab -e Edita o crontab atual do usuário

crontab -l Exibe o atual conteúdo do crontab do usuário

crontab -r Remove o crontab do usuário

crontab -u Determina regras para um usuário

Se você quiser verificar os arquivos crontab dos usuários, você precisará ser root. O

comando crontab coloca os arquivos dos usuários no diretório:

/var/spool/cron/usuario

Onde "usuario" corresponde ao usuário dono do arquivo crontab.

Agora se você quiser editar o crontab global, este fica no arquivo "/etc/crontab", e só

pode ser manipulado pelo root. E agora que já sabemos onde ficam os arquivos de

49

Page 50: Comandos e Sintaxes

configuração, vamos estudar o formato da linha do crontab, já explicada antes que é quem

vai dizer o que executar e quando. Vamos ver um exemplo:

0 4 * * * who

Então como se pode ver, a linha é dividida em 6 campos separados por tabs ou espaço:

Campo Função

1o. Minuto

2o. Hora

3o. Dia do mês

4o. Mês

5o. Dia da semana

6o. Programa pra execução

Todos estes campos, sem contar com o 6o., são especificados por números. Veja a

tabela abaixo para os valores destes campos:

Campo Função

Minuto 0-59

Hora 0-23

Dia do mês 1-31

Mês 1-12

Dia da semana 0-6 (o "0" é domingo, "1" segunda, etc)

Então o que nosso primeiro exemplo estava dizendo? A linha está dizendo: "Execute o

comando 'who' todo dia de todo mês sendo o dia qualquer dia da semana, às 4 horas e 0

minutos.". Vamos pegar mais exemplos para analisar:

1,21,41 * * * * echo "Meu crontab rodou mesmo!"

Aqui está dizendo: "Executar o comando do sexto campo toda hora, todo dia, nos minutos 1,

21 e 41".

30 4 * * 1 rm -rf /tmp/*

Aqui está dizendo: "Apagar todo conteúdo do diretório /tmp toda segunda-feira, as 4:30 da

manhã.".

50

Page 51: Comandos e Sintaxes

45 19 1,15 * * /usr/local/bin/backup

Aqui está dizendo: "Executar o comando 'backup' todo dia 1 e 15 às 19:45.".

E assim você pode ir montando inúmeros jeitos de agendamento possível. No arquivo do

crontab global, o sexto campo pode ser substituído pelo nome do usuário, e um sétimo campo

adicionado com o programa para a execução, como mostro no exemplo a seguir:

0-59/5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg

Aqui está dizendo: "Executar o mrtg como usuário root, durante 5 e 5 minutos dos minutos 0-

59. Ou seja, executar de 5 em 5 minutos o mrtg sempre.".

Em alguma distribuições, os agendamentos mais comuns estão programados para

serem executados. Veja as linhas abaixo:

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

O programa "run-parts" executa todos os scripts executáveis dentro de um certo

diretório. Então com essas linhas, temos diretórios programados para executar programas de

hora em hora, diariamente, semanalmente ou mensalmente. Abaixo a tabela:

Diretório Período

/etc/cron.hourly De hora em hora

/etc/cron.daily Diariamente

/etc/cron.weekly Semanalmente

/etc/cron.monthly Mensalmente

Então todos os arquivos executáveis dentro de cada diretório serão executados no seu

correspondente período. Ou seja, posso colocar um certo conteúdo no arquivo

"/etc/cron.daily/teste", depois torná-lo executável através do comando "chmod +x

/etc/cron.daily/teste", e então ele será executado todo dia as 4:02 da manhã.

51

Page 52: Comandos e Sintaxes

2.8.3 Resumo de aprendizagem do cron

Veja como funciona cron:

Devemos criar com o usuário root um arquivo com as regras ou seja, o agendamento:

Sintáxe:

root@linux:~# touch regras → criando o arquivo.

root@linux:~# ls → verificando ou listando.

regras

root@linux:~# vi regras → editando o arquivo com o editor vi escrevendo o seguinte:

#min|hora|dia|mês|semana|comando

0-59/5 * * * * cp /home/teste /mnt/disco;

depois salve o arquivo em um local de sua preferência. No meu caso salvei em

/home/usuario/regras

Neste exemplo quem vai executar o arquivo é um usuário comum, o root apenas criou

o arquivo denominado regras. Podemos determinarmos que o root execute também este

arquivo se quisermos.

Agora vamos determinar que um usuário comum chamado de usuario execute as

regras agendadas no arquivo criado pelo root. Ainda como root devemos usar o seguinte

comando:

root@linux:~# crontab -u usuario /home/teste/regras → determinado que o usuário comum

execute as regras.

Agora saímos de root dando exit, e ficamos como usuário comum:

usuario@linux:~$ crontab -l → Aqui estamos verificando se as regras estão ativas para este

usuário e não para root.

Para removermos as tais regras determinada pelo root, basta usar o seguinte comando

como usuário comum mesmo. Veja:

usuario@linux:~$ crontab -r

52

Page 53: Comandos e Sintaxes

2.9 Usando o gnupgp (GPG)

1) Instalando o PGP nas distribuições Debian/ubuntu:

apt-get install gnupg

2)Criando um par de chaves pública/privada:

gpg --gen-key

3) Encriptando dados:

gpg -e arquivo.txt (usando compactação) --> Resultado: arquivo.txt.gpg

gpg -e -a arquivo.txt( sem compactação) --> Resultado: arquivo.txt.asc

gpg -r dourado -e arquivo.txt (chave pública do usuário "dourado" no seu chaveiro,

somente ele abrirá o arquivo, veja adicionando chave públicas seção 8)

4) Decriptando dados com o gpg:

gpg -d arquivo.txt.asc >arquivo.txt

gpg -d arquivo.txt.gpg >arquivo.txt

5) Assinando arquivos

Assinar um arquivo é garantir que você é a pessoa que realmente enviou aquele arquivo.

gpg -s arquivo.txt

gpg -s --clearsign arquivo.txt

6) Checando assinaturas

Verificar quem nos enviou o arquivo é realmente quem diz ser e se os dados foram de alguma

forma alterados. deverá ter a chave pública do usuário.

gpg --verify arquivo.txt.asc

53

Page 54: Comandos e Sintaxes

Se a saída for "Assinatura Correta", significa que a origem do arquivo é segura e que ele não

foi de qualquer

forma modificado.

gpg --verify arquivo.txt.gpg Se a saída for "Assinatura INCORRETA" significa que ou o usuário que enviou o arquivo não

confere ou o

arquivo enviado foi de alguma forma modificado.

7) Extraindo sua chave pública do chaveiro para distribuí-la:

gpg --export -a usuario >chave-pub.txt

8) Adicionando chaves públicas ao seu chaveiro

pessoal:

gpg --import chave-pub-usuario.txt

9) Listando chaves de seu chaveiro:

gpg --list-keys

10) Apagando chaves de seu chaveiro:

gpg --delete-key usuario

11) Mudando sua FraseSenha

Execute o comando:

gpg --edit-key usuário

Quando o programa entrar em modo de comandos, digite

passwd. Será lhe pedida a "Frase Senha" atual e a nova "Frase Senha".

Explore o programa digitando "?" para exibir todas as opções disponíveis.

12) Assinando uma chave digital

A assinatura de chaves é um meio de criar laços de confiança entre usuários PGP. Assinar uma

chave de alguém é algo sério, você deve ter noção do que isto significa e das consequências

que isto pode trazer antes de sair assinando chaves de qualquer um. O próprio teste para

54

Page 55: Comandos e Sintaxes

desenvolvedor da distribuição Debian requer como primeiro passo a identificação do

candidato, caso sua chave pgp seja assinada por algum desenvolvedor desta distribuição,

imediatamente o teste de identificação é completado. A partir disso você deve ter uma noção

básica do que isto significa. Para assinar uma chave siga os seguintes passos:

1. Importe a chave pública do usuário (veja Adicionando chaves públicas ao seu

chaveiro pessoal, Seção 8).

2. Execute o comando gpg --edit-key usuario (onde usuario é o nome do usuário/e-

mail/IDchave da chave pública importada).

3.Digite list, e selecione a chave pública (pub) do usuário com o comando uid

[numero_chave]. Para assinar todas as chaves públicas do usuário, não selecione qualquer

chave com o comando uid.

4.Para assinar a chave pública do usuário digite sign, será perguntado se deseja

realmente assinar a chave do usuário e então pedida a "FraseSenha" de sua chave privada.

5.Digite "list", repare que existe um campo chamado trust: n/q no lado direito. O

primeiro parâmetro do "trust" indica o valor de confiança do dono e o segundo (após a /) o

valor de confiança calculado automaticamente na chave. As seguintes possuem o seguinte

significado:

o - - Nenhum dono encontrado/confiança não calculada.

o e - Chave expirada/falha na checagem de confiança.

o q - Quando não conhece o usuário.

o n - Quando não confia no usuário (é o padrão).

o m - Pouca confiança no usuário.

o f - Totalmente confiável.

o u - Indiscutivelmente confiável. Somente usado para especificar a chave pública do

próprio usuário.

O valor de confiança da chave pode ser modificado com o comando trust e selecionando uma

das opções de confiança. Os valores de confiança para a chave pública pessoal é -/u (não é

necessário calcular a confiança/indiscutivelmente confiável).

13) Listando assinaturas digitais

Execute o comando gpg --list-sigs para listas todas as assinaturas existentes no seu chaveiro.

Opcionalmente pode ser especificado um parâmetro para fazer referência a assinatura de um

55

Page 56: Comandos e Sintaxes

usuário:gpg

--list-sigs usuario. O comando gpg --check-sigs adicionalmente faz a checagem de assinaturas.

2.10 Entendendo dispositivos de loop (loop0 a loop7)

Dispositivos de “Loop” (Loop devices, loopback devices) são drivers dedispositivo

que permitem que arquivos de imagens (“images files”) sejam montados como se fossem

dispositivos de blocos normais. Quando montamos um arquivo “iso”, utilizando o comando

“mount”Exemplo:

# mount -o loop -t iso9660 mp3.iso /mnt/iso

Montamos uma imagem iso que contém músicas no formato mp3(o arquivo chamada-

se “mp3.iso”), dentro de um diretório chamado “/mnt/iso”. A partir desse momento, um “ls

/mnt/iso” irá mostrar todos os arquivos que estão dentro do sistema de arquivos contido na

imagem.

2.10.1 Criando um volume de dados

Um volume de dados quando montado com a ferramenta loop escolhida (loop0 a

loop7), simula uma partição real no sistema, onde possa criar diretórios, arquivos, dentro

desse volume.

Um ponto forte de um volume é que você possa transportá-lo para outra máquina,

montá-lo e alterá os arquivos contidos nesse volume, como se fosse uma partição presente no

computador. Pois o mesmo como já dito, depois de montado se comporta como um

dispositivo de blocos normal, e pode até mesmo usar criptografia para proteger os dados,

explicado mais adiante.

Um volume de dados pode ter o tamanho que desejar. Porém sempre gosto de criá-los

seguindo o tamanho de CD's e DVD's, isso no caso de transportá-los para Máquinas Linux, é

mais comodo.

O exemplo acima mostra como montar uma imagem, isso todos que trabalham

56

Page 57: Comandos e Sintaxes

com linux já sabem. Agora vamos aprender a criar arquivos de bloco, no

momento sem criptografia.

Para tal procedimento necessitaremos das ferramentas “dd” e “losetup”.

Vamos criar um arquivo com o tamanho desejado. Isto é feito com o comando “dd” e o

dispositivo “zero” (/dev/zero):

# dd if=/dev/zero of=volume1 bs=1M count=700

Criamos um arquivo chamado “volume1” dentro do diretório home do usuário. Esse

arquivo será usado para armazenar dados utilizando o sistema de arquivo ext3 com um

tamanho máximo de 700M.

Mas antes que um sistema de arquivo possa ser criado no nosso “volume1”, devemos

fazer com que o nosso volume se comporte como um sistema de bloco. Isto é feito com o

comando “losetup”. Assim:

# losetup /dev/loop0 volume1

Existem 8 possibilidades de montar dispositivos de loop ao mesmo tempo, contados

apartir de “loop0 a loop7”, por isso você precisa ter certeza que o dispositivo que deseja

utilizar não esteja em uso. Para isso podemos utilizar o comando que nos permite ver os

dispositovos de loop em uso:

# losetup -a

# losetup /dev/loop0 /home/usuario/volume1

Agora que “/dev/loop0” é um dispositivo de bloco legítimo, comportando como uma

partição no computador, então vamos formatá-la, para isso utilizaremos o “mkfs.ext3” para

criar o sistema de arquivos “ext3”:

# mkfs.ext3 /dev/loop0

O resultado deve ser algo do tipo:

mke2fs 1.40.2 (12-Nov-2009)

57

Page 58: Comandos e Sintaxes

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

16 inodes, 100 blocks

5 blocks (5.00%) reserved for the super user

First data block=1

1 block group

8192 blocks per group, 8192 fragments per group

16 inodes per group

Writing inode tables: done

Filesystem too small for a journal

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 24 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override. *

Com o arquivo de imagem criado, podemos monta-lo escolhendo um ponto de

montagem com o comando “mount”:

lembrando que um ponto de montagem é um diretóro no computador, caso deseje criar um

ponto faça:

# mkdir /mnt/imagem/

# mount /dev/loop0 /mnt/imagem/

Acesse-o ou dê um *ls* irá confirmar que a imagem está montada, mostrando o

diretório lost+found:

De agora em diante vc poderá criar arquivos dentro do seu volume ou copiá-los de outro lugar

58

Page 59: Comandos e Sintaxes

para o seu volume e alterá-los se necessáro.

# ls /mnt/imagem

lost+found

Para desmontalo use:

# umount /dev/loop0

Depois o comando abaixo para libera o dispositivo de loop:

# losetup -d /dev/loop0

2.10.1 Criando um volume de dados com criptografia

Muito útil para proteger dados quando transportados pela internet ou correio. Se

houver um interceptador este deverá ter a senha para manipular os arquivos. Use senha

longas alfanuméricas para maior segurança.

Aviso: não esquecer a senha, não há possibilidade de alterá-la, caso necessite, um novo

volume deve ser criado, e depois só motar os dois e copiar os dados de um para o outro.

1. → Primeiro criamos o arquivo volume de 700MB já explicado:

# dd if=/dev/zero of=volume1 bs=1M count=700

2. → É necessário carregar os modulos de criptografia:

# modprobe des

# modprobe cryptoloop

3. → Agora é o uso da ferramenta losetup com os argumentos de criptografia:

# losetup -e aes /dev/loop0 ./volume1

“-e” significa encriptar e “aes” é o algoritmo criptográfico, nesse momento pedirá uma senha,

informe a senha, é pedida uma única vez.

Importante: Não á possibilidade de alterá-la depois, não pode esquecê-la. Se de alguma forma

59

Page 60: Comandos e Sintaxes

esquecê-la ou tiver que alterá-la não existirá esta possibilidade, seus dados inseridos nesse

volume ficarão presos áte que lembre a senha.

4. → Agora formate-o no sistema de arquivo desejado. Exemplo o ext3.

# mkfs.ext3 /dev/loop0

5. → Agora monte-o:

# mount /dev/loop0 /mnt/imagem/

6 → Quando desejar desmontá-lo use:

# umount /dev/loop0

Este comando é para libera o dispositivo de loop0

# losetup -d /dev/loop0

Referências Bibliográficas

Sites de dicas linux:

• http://www.vivaolinux.com.br

• http://www.clubedohardware.com.br

• http://www.guiafoca.org

• http://www.hunder-linux.org.br

• BR-Linux

• The Linux Home Page at Linux Online • Linux.com: The Enterprise Linux Resource • The Linux Documentation Project • O que é uma distribuição de Linux

60