Prévia do material em texto
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
LINUX
Apostila Básica de Linux
versão 1.0
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
i
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
HISTÓRICO DE ALTERAÇÕES
Data Versão Descrição Autor
05/08/2010 1.0 Elaboração/Revisão Fábio Rogério da Silva José
05/08/2010 1.0 Revisão/Formatação Rita de C. Mayumi Seki
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
ii
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
Conteúdo
1 COMANDOS DE USO GERAL .................................................................................................... 1
2 SISTEMA DE ARQUIVOS DO UNIX/LINUX ................................................................................ 2
2.1 ESTRUTURA HIERÁRQUICA ............................................................................................... 2
2.2 FORMATO DO SISTEMA DE ARQUIVOS ............................................................................ 4
2.3 CAMINHOS ........................................................................................................................... 5
3 DIRETÓRIO DE LOGIN ............................................................................................................... 6
4 COMANDOS DE MANIPULAÇÃO DE DIRETÓRIOS .................................................................. 7
5 TRABALHANDO COM ARQUIVOS ............................................................................................. 8
5.1 CARACTERÍSTICAS ............................................................................................................. 9
5.2 TIPOS DE ARQUIVOS ........................................................................................................ 10
5.3 COMANDOS DE MANIPULAÇÃO DE ARQUIVOS ............................................................. 11
6 PERMISSÕES E ACESSO A ARQUIVOS ................................................................................. 14
6.1 TIPOS DE ACESSOS ......................................................................................................... 15
6.2 PERMISSÕES ..................................................................................................................... 16
7 COMANDOS DE MANIPULAÇÃO DE PERMISSÃO DE ACESSO ............................................ 16
8 EDITOR ..................................................................................................................................... 19
8.1 ALGUNS EDITORES .......................................................................................................... 19
8.2 vi ......................................................................................................................................... 20
9 INTRODUÇÃO AO SHELL......................................................................................................... 22
9.1 VARIÁVEIS ......................................................................................................................... 23
9.1.1 Armazenamento ............................................................................................................ 23
9.1.2 Atribuição de Valores .................................................................................................... 24
9.1.3 Substituição de Variáveis .............................................................................................. 24
9.1.4 Transferência de Variáveis Locais para o Ambiente ...................................................... 25
10 HISTÓRICO (HISTORY) .......................................................................................................... 26
11 PROCESSOS .......................................................................................................................... 26
11.1 COMANDOS DE CONTROLE DE PROCESSOS .............................................................. 27
12 REDIRECIONAMENTO DE E/S, FILTROS E PIPELINES ....................................................... 30
13 COMANDOS DE REDIRECIONAMENTO DE E/S ................................................................... 32
13.1 REDIRECIONANDO A SAÍDA PADRÃO ( > E >> ) ........................................................... 32
13.2 REDIRECIONANDO A ENTRADA PADRÃO ( < ) ............................................................. 32
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
iii
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
13.3 REDIRECIONANDO A ENTRADA E A SAÍDA SIMULTANEAMENTE .............................. 33
13.4 REDIRECIONANDO A SAÍDA DE ERROS ....................................................................... 34
14 COMANDOS DE FILTROS ...................................................................................................... 34
15 COMANDOS DE Pipelines....................................................................................................... 37
15.1 PIPELINE ( | ) .................................................................................................................... 37
15.2 CAPTURANDO A SAÍDA INTERMEDIÁRIA DE UM PIPELINE ......................................... 37
16 TAREFAS ADMINISTRATIVAS ............................................................................................... 40
16.1 Iniciando o Sistema ........................................................................................................... 40
16.2 Finalizando o Sistema ....................................................................................................... 40
17 BACKUPS ................................................................................................................................ 41
18 COMUNICAÇÃO COM OUTROS USUÁRIOS ......................................................................... 43
18.1 COMANDOS PARA COMUNICAÇÃO ............................................................................... 43
19 PROGRAMAÇÃO DO SHELL .................................................................................................. 47
REFERÊNCIAS BIBLIOGRÁFICAS .............................................................................................. 47
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
1
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
1 COMANDOS DE USO GERAL
O UNIX/LINUX diferencia entre letras maiúsculas. Por convenção, todos os
comandos listados aqui devem ser digitados em letras minúsculas.
As palavras em negrito constituem no nome do comando, devendo ser digitadas
exatamente como são escritas; em itálico representam os parâmetros que o usuário
especifica para o comando (nome de um arquivo, por exemplo); [ entre colchetes] é
opcional, podendo ser omitido (na execução do comando os colchetes não devem ser
digitados. Quando as opções estiverem separadas por uma barra vertical ( | ), indica que
somente uma delas deve ser escolhida.
1- CLEAR
Nome clear- limpa a tecla do terminal
Sinopse: Clear
Descrição: o comando clear limpa a tela atualmente ativa.
Exemplo: $ clear
2- CAL
Nome: cal- apresenta um calendário.
Sinopse: cal [ mês [ano] ]
Descrição: cal apresenta o calendário do ano e mês especificados. Na
falta dos argumentos são assumidos e o mês e o ano
corrente.
Exemplo: $ cal 6 1997
JUNE
SUN MON TUE WED THU FRI SAT
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
3- DATE
Nome: date- apresenta/altera a data e a hora do sistemaSinopse: date
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
2
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
Descrição: sem nenhum argumento, são apresentadas a hora e a data corrente.
Somente o administrador pode alterar.
Exemplo: $ date
Tue Jun 17 17:01:02 EST 1997
É possível alterar a data passando o parâmetro MMDDHHMMYYYY
Exemplo: $ date 081014002010
Isto irá alterar a data da máquina para 10/08/2010 as 14:00Hs
4- PASSWD
Nome: passwd- muda a senha de um usuário
Sinopse: passwd
Descrição: passwd altera a senha de um usuário. O superusuário (root) pode
usar passwd para alterar a senha de qualquer usuário.
Exemplo: $ passwd
Changing password for fabio
Old password: ******** ↔
New password: ******** ↔
Retype new password: ******** ↔
Para alterar a senha de um determinado usuário digita-se o nome do usuário na
frente no comando.
Exemplo: $ passwd fabio
Changing password for fabio
Old password: ******** ↔
New password: ******** ↔
Retype new password: ******** ↔
2 SISTEMA DE ARQUIVOS DO UNIX/LINUX
2.1 ESTRUTURA HIERÁRQUICA
Os arquivos são manipulados internamente pelo sistema operacional UNIX.
Entretanto para a visão do usuário, o sistema de arquivos é uma única estrutura
hierárquica, onde poderão ter várias partições, discos e arquivos associados em forma de
árvore.
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
3
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
Figura 1: Árvore de Diretório do UNIX.
No sistema de arquivo do UNIX, arquivos e diretórios são agrupados por função.
Usuários controlam seus próprios arquivos e diretórios, enquanto o administrador do
sistema controla e gerencia o sistema de arquivos e diretórios. Assim fica mais fácil
organizar as centenas de arquivos e programas que normalmente são instalados em uma
máquina que roda o UNIX. O topo da hierarquia é denominado diretório raiz (root) e é
indicado com uma barra (/).
O sistema UNIX fornece comandos que permitem criar novos diretórios quando a
organização precisar de mudanças, como mover ou copiar arquivos de um diretório para
outro, o que pode ser feito facilmente.
A estrutura do diretório pode variar de acordo com a implementação do sistema. A
seguir, a descrição daqueles que são encontrados na maioria dos sistemas UNIX.
Tabela 1: Diretórios.
DIRETÓRIO FINALIDADE
/etc
/dev
Contém os comandos do administrador de sistemas e muitos arquivos de configuração
do sistema, arquivos solicitados durante o bootup ou shutdown
Contém os arquivos especiais (devices files) para todos os dispositivos de hardware.
Estes arquivos funcionam como gateways para periférico, para assim os dados não
serem armazenados nos periféricos.
/bin
/lib
/home
/tmp
Contém os comandos necessários para operação básica do UNIX e para manipulação
de arquivos. Geralmente estes comandos são acessíveis para todos os usuários.
Contém as bibliotecas compartilhadas. Estes arquivos geralmente possuem nomes
como /lib/lbc.so.4.3.2, neste exemplo indica a versão 4.3.2 da biblioteca padrão da
linguagem C.
Contém um subdiretório para cada usuário do sistema UNIX, ou seja, para cada conta.
Cada usuário tem controle total sobre o conteúdo de seu próprio diretório, inclusive com
a possibilidade de criar outros subdiretórios. O nome do diretório home pode variar,
depende do sistema operacional, mas os principais são: /users e /usr/homes.
Contém os arquivos temporários gerados durante a execução de certas aplicações.
Estes arquivos podem ser eliminados sempre que assim o desejar.
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
4
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
cont. Tabela 1: Diretórios.
DIRETÓRIO FINALIDADE
/usr/etc
/usr/bin
/usr/lib
/usr/include
/usr/src
/usr/man
/usr/adm
/usr/tmp
Este diretório é similar ao diretório /usr. Quando existe contém basicamente arquivos de
configuração para programas instalados em /usr/bin. Em alguns sistemas este diretório
é apenas um link para o diretório /usr, que neste caso conterão a mesma coisa.
Contém os comandos suplementares do UNIX. É possível executar o sistema
operacional sem a maioria destes comandos.
Contém as bibliotecas estáticas (geralmente possuem um nome como libc.a), arquivos
de configuração e dados para programas individuais, programas auxiliares que são
invocados somente por outros programas. Os arquivos deste diretório são acessados
somente por programas residentes em /usr/bin.
Contém os arquivos de cabeçalho (*.h) para linguagem de programação C.
Contém os códigos fonte do kernel.
Contém todos os arquivos associados às páginas dos manuais on-line.
Contém arquivos de log administrativos gerados por vários programas do sistema e
demons.
Possui a mesma finalidade do diretório /tmp. A diferença está no fato deste diretório
poder ser montado em outras partições (discos).
2.2 FORMATO DO SISTEMA DE ARQUIVOS
Um disco pode ter várias divisões chamadas de partições. Cada partição pode
conter um sistema de arquivos.
Figura 2: Representação interna do sistema de arquivos.
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
5
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
Para cada sistema de arquivos tem-se um setor de boot (boot block), que contém o
código encarregado de, entre outras coisas, realizar a carga do código do kernel para a
memória e iniciar sua execução. Posterior ao setor de boot, encontra-se o superblock,
local em que são armazenadas várias informações a respeito do sistema de arquivos. As
informações mais importantes armazenadas no superblock são:
• o tamanho do sistema de arquivos
• o número de blocos livres no sistema de arquivos
• uma lista de blocos livres disponíveis no sistema de arquivos
• o tamanho da lista de i-nodes livres, ou seja, o número de i-nodes para o
sistema de arquivos
• o número de i-nodes livres no sistema de arquivos
• uma lista de i-nodes livres no sistema de arquivo;
• outras informações
Devido à importância do superblock, o UNIX sempre faz uma cópia do superblock
na memória RAM. O superblock é atualizado no disco quando o comando sync é
executado. Por questões de segurança, existe uma cópia do superblock em cada grupo
de cilindros para caso ele seja perdido, danificado ou corrompido, possa ser recuperado a
partir de um grupo de cilindros.
2.3 CAMINHOS
A maioria dos comandos do sistema UNIX opera sobre arquivos e/ou diretórios. Um
caminho (path) representa os diretórios e subdiretórios que são passados para alcançar
um arquivo ou diretório especificado.
O diretório inicial é chamado diretório raiz, representado por uma barra ( / ). Um
path pode ser especificado de duas formas:
• absoluto
• relativo
Paths absolutos são aqueles que começam com uma barra ( / ). Paths relativos ,
ao contrário, sempre tomam o diretório atual como referência. Por exemplo:
• /dev absoluto
• /home/joao/texto absoluto
• .. relativo (diretório imediatamente acima)
• . relativo (diretório corrente)
• usr/lib relativo
• ../home/joao relativo
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
6
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
Figura 3: Caminho no UNIX.
Quando um diretório é criado, duas entradas são automaticamente criadas,
chamadas ponto (.) e ponto-ponto (..). Geralmente são utilizadas para designar caminhos
relativos.
A entrada ponto (.) representa sua posição no diretório corrente. Caso esteja no
diretório /home/joao , daí tem-se:
• . representao diretório corrente /home/joão
• ./texto representa /home/joão/texto
A entrada ponto-ponto (..) representa o diretório imediatamente acima do diretório
corrente, também chamado de diretório-pai . Caso esteja no diretório /home/João tem-se:
• .. representa o diretório/ (raiz)
• ../.. também representa o diretório/ (raiz)
• ../bin representa o diretório /bin
3 DIRETÓRIO DE LOGIN
Quando um usuário é incluído no sistema receberá um username e opcionalmente
uma password, e um diretório será criado para o uso próprio. O diretório é criado sob o
diretório /home (ou /users) e tem o mesmo nome da identificação do usuário no login. A
partir deste diretório, o usuário tem acesso livre para criar quantos arquivos e diretórios
quiser.
Quando o usuário entrar no sistema, o UNIX automaticamente o colocará sob este
diretório, ou seja, este será o diretório corrente logo após o login. Este diretório é
denominado de diretório login ou diretório HOME. A figura abaixo mostra o diretório de
login do usuário joão.
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
7
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
Figura 4: Diretório HOME.
4 COMANDOS DE MANIPULAÇÃO DE DIRETÓRIOS
Um diretório é uma maneira de organizar os arquivos. Os diretórios também são
considerados como sendo arquivos com formato pré-definidos. Podem conter os nomes
dos arquivos e diretórios e seus números i-node associados. A seguir, apresenta-se os
comandos básicos para manipulação de diretórios.
PWD
Nome: pwd - ecoa o nome do diretório corrente (formato absoluto) na saída padrão.
Sinopse: pwd
Descrição: pesquisa a árvore de diretório, em direção à raiz para informar o path.
Exemplo: $ cd /home/Fabio
$ pwd
/home/fabio
LS
Nome: ls - lista o conteúdo de um diretório
Sinopse: ls [-a ] [-i ] [-C l -l ] [-t ] [arquivo]
Descrição: o comando ls é usado para listar arquivos. Na ausência do parâmetro
arquivo representando o nome de um arquivo ou diretório, o comando ls
lista o diretório corrente.
Opções: -a lista todas as entradas, incluindo as que iniciam com “.” (ocultos);
-i inclui o número do i-node de cada arquivo;
-C força saída com múltiplas colunas;
-l listagem com formato longo;
-t ordena por data de alteração.
Exemplos: $ ls -l
total 2
-rw-r--r-- 1 fabio users 32 Jun 17 22:40 arquivo.txt
drvvx ------ 3 fabio users 512 Jun 17 21:05 teste/
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
8
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
$ ls -la
total 15
drwxr-xr-x 4 fabio users 512 Jun 05 22:40 ./
drwx ------ 29 fabio users 1024 Jun 05 22:40 ../
-rvv-r--r-- 1 fabio users 32 Jun 17 22:40 arquivo.txt
drvvx ------ 3 fabio users 35 Jun 17 21:05 teste/
CD
Nome: cd - muda o diretório corrente
Sinopse: cd [diretório]
Descrição: diretório toma-se o novo diretório corrente. Na execução do comando o
sistema verifica a permissão de acesso ao diretório especificado. Sem
argumento, o comando cd retoma ao diretório home do usuário.
Exemplo: $ cd /home/fabio
$ cd ..
$ cd ./../home/Ana
MKDIR
Nome: mkdir - cria diretório
Sinopse: mkdir [-p] nome_diretorio
Descrição: cria um diretório na árvore de diretórios.
Opções: -p permite a criação do diretório sob um diretório “pai” que não existe, que
foi especificado no caminho para o nome_diretorio.
Exemplos: $ mkdir ../textos
RMDIR
Nome: rmdir - remove diretório
Sinopse: rmdir nome_diretorio
Descrição: remove diretórios (somente se estes estiverem vazios).
Exemplos: $ rmdir /usr/ana/textos
$ rmdir arquivo.txt
5 TRABALHANDO COM ARQUIVOS
Um arquivo é simplesmente um nome com dados associados a ele, armazenados
num periférico qualquer (disco rígido ou flexível). O sistema UNIX não impõe restrições ao
formato de um arquivo. Um arquivo é visto pelo sistema como uma sequência não
formatada de bytes, onde um byte segue o outro até que o fim do arquivo seja
encontrado. Os programas de aplicação impõem formatos a essas sequências de bytes.
Como exemplo, um editor de textos marca o fim de cada linha de texto com um caracter
de nova-linha; um programa de banco de dados organiza os dados em registros, sendo
que cada registro está dividido em campos.
Para o sistema UNIX tudo é considerado arquivo onde são incluídos:
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
9
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
• Arquivos Comuns - geralmente contêm caracteres de texto ASCII.
• Programas - arquivos comuns que contêm instruções executáveis. Pode conter
um código compilado (date, mkdir, ls) ou pode conter comandos shell do sistema
UNIX ( .profile, .logout).
• Diretório - arquivo especial contendo os nomes dos arquivos e diretórios que ele
mantém. O diretório guarda um número de inodo para cada item, que identifica
aonde as informações de arquivo e os endereços de armazenamento de dados
podem ser encontrados no sistema de arquivos.
• Dispositivo - arquivo que garante o interfaceamento entre o kernel e o hardware
de um periférico (disco, terminal, impressora, memória). Como estes arquivos
têm por finalidade o interfaceamento, eles nunca contêm dados verdadeiros.
Estes arquivos são geralmente guardados no diretório /dev, e existe um arquivo
para cada dispositivo com o qual o computador precisa se comunicar.
5.1 CARACTERÍSTICAS
Um arquivo possui muitas características que podem ser visualizadas com o
comando ls - la , dentre as quais se destacam:
• Tipo de Arquivo - normal ou especial
• Permissão - definição do modo de acesso ao arquivo
• Links - número de nomes de arquivos associados ao mesmo conjunto de dados
• Proprietário - identificação do usuário proprietário do arquivo
• Grupo - identificação do grupo para acesso ao arquivo
• Tamanho - número de bytes que o arquivo contém
• Data - data e hora da última alteração do arquivo
• Nome - nome do arquivo
Um ponto muito importante a saber a respeito dos nomes de arquivos no UNIX é
que letras maiúsculas e minúsculas são interpretadas diferentemente. Geralmente os
nomes de arquivos são formados por letras minúsculas, As regras para a criação de
arquivos são:
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
10
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
• máximo de 14 caracteres;
• máximo de 255 caracteres se o sistema suporta nomes longos;
• normalmente contém caracteres alfa (a-z, A-z), numéricos (0 - 9), ponto (.), traço
(-) e subscrito (_).
Ponto (.) - por ser considerado um caracter normal, o ponto pode aparecer em
qualquer lugar num nome de arquivo e várias vezes. Quando aparece no início do nome
do arquivo ( .profile) indica que este é oculto.
Existem caracteres especiais que não podem ser utilizados como parte de um
nome de arquivo, pois frequentemente produzirão resultados inesperados, são eles; ?, @,
#, [, ], *, <, >, \, $ e |.
5.2 TIPOS DE ARQUIVOS
Os tipos de arquivos no sistema UNIX são identificados através do primeiro
caracter de saída do comando ls -1. Os arquivos geralmente são tratados de duas formas:
• Regulares - arquivos de dados ou programas;
• Diretórios - arquivo que contém nome de outros arquivos, juntamente com
ponteiros para seus i-nodes_
Além desses dois tipos, o UNIX possui mais alguns:
• arquivos dispositivos de caracteres - um tipo de arquivo utilizado por
dispositivo de caracteres (ex.: modem);
• arquivos dispositivos de blocos - um tipo de arquivo utilizado por dispositivo
de blocos (ex.: discos);
• FIFO - um tipo especial de arquivo utilizado para comunicação entre processos
(também chamado named pipe);
• Socket - um tipo de arquivo utilizado para comunicação emrede, servindo
também para a comunicação entre processos num mesmo sistema;
• symbolic link - um tipo de arquivo que aponta para outro arquivo.
Tabela 2: Tipos de arquivos.
Símbolo Tipo do Arquivo
- Regular
d diretório
c dispositivo de caracter
b dispositivo de bloco
p FlFO
s socket
l symbolic link
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
11
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
5.3 COMANDOS DE MANIPULAÇÃO DE ARQUIVOS
O sistema UNIX disponibiliza vários comandos para manipulação de arquivos. Os
principais são destacados a seguir:
CAT
Nome: cat - imprime o conteúdo de arquivos
Sinopse: cat [ -n -v] [arquivo ...]
Descrição: o comando cat permite ler dados da entrada padrão e escrever dados na
saída padrão, permitindo uma grande flexibilidade em sua utilização.
Pode-se utilizá-lo associado aos símbolos de redirecionamento de fluxo
(>,>>) para criar, listar e/ou estender o conteúdo de arquivos.
Opções: -n enumera linhas de saída
-v apresenta caracteres não imprimíveis usando a notação ^X.
Exemplos: $ cat > arq.dat (cria o arquivo arq.dat)
Linha 1
Linha 2
^Z
$ cat arq.dat $ cat -n arq.dat
Linha 1 1 Linha 1
Linha 2 2 Linha 2
MORE
Nome: more - visualiza um arquivo no terminal
Sinopse: more [ +n -n] [arquivo 1
Descrição: more é o paginador de arquivos padrões para UNIX. Após cada tela cheia,
o comando apresenta uma mensagem solicitando ao usuário para
continuar a apresentação do arquivo. Existem várias opções para o
comando. Abaixo tem-se as duas mais frequentemente utilizadas.
Opções: +n apresenta a partir da linha “n”;
-n o número “n” será usado como tamanho da janela. O default varia de 22 a 25.
Exemplo: $ more arq.dat
Linha 1
Linha 2
TAIL
Nome: tail - escreve o conteúdo de um arquivo para uma saída padrão, iniciando
em uma posição especificada
Sinopse: tail [-f ] [-r ] [-b [+] D I -c [+]D ! -l [+] D ] [arquivo]
onde, D=deslocamento
Descrição: o comando tail escreve o conteúdo do arquivo especificado para a saída
padrão, iniciando no ponto (deslocamento) definido pelo usuário. Se
nenhum arquivo é definido, a entrada padrão é utilizada. O tipo de
unidade (b, c, l) associado ao deslocamento, juntamente com o ponto de
referência para o deslocamento, identificam o início da impressão. Se o
deslocamento é precedido do sinal “-“ significa que o ponto de referência
para o deslocamento é o final do arquivo. O sinal “+” indica como ponto de
referência o início do arquivo.
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
12
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
Opções: -b o arquivo e interpretado como blocos de 512-bytes;
-c o arquivo é interpretado como uma seqüência de bytes;
-l o arquivo é interpretado como linhas que devem terminar com <CR>.
Exemplo: $ tail –8c arq.dat
Linha 2
$ tail +4c arq.dat
ha 1
Linha 2
$ tail +21 arq.dat
Linha 2
CP
Nome: cp - copia arquivos
Sinopse: cp [-ipr] arquivo(s)... diretório - copia um ou mais arquivos para diretório
cp [-ip] arq1 arq2 - copia conteúdo de arq1 para arq2
cp -r [-ip] dir1 dir2 - copia recursivamente o conteúdo de dir1 para dir2
Descrição: o comando cp copia o conteúdo de um arquivo/diretório para outro No
segundo caso, se arq2 já existe é sobrescrito, mas seu modo e dono são
preservados. No terceiro, cp copia recursivamente o conteúdo de dir1
(arquivos e sub-diretórios) para dir2.
Opções: -i execução no modo interativo (pede confirmação caso o arquivo destino
exista);
-p duplica também as permissões juntamente com data/hora;
-r duplica recursivamente se nomearq for um diretório.
Exemplos: $ cp -r /usr/src /usr/src/bkp
$ cp /usr/src/* /tmp
MV
Nome: mv - move ou renomeia arquivos
Sinopse: mv [-f ] [-i ] arquivo(s)... diretório - move um ou mais arquivos para diretório
mv [-f ] [-i ] arq1 arq2 - altera nome de arq1 para arq2
mv [-f ] [-i ] dir1 dir2 - altera nome de dir1 para dir2
Descrição: o comando mv move arquivos e diretórios pelo sistema de arquivos.
Permite também renomear um arquivo ou diretório, caso o nome destino
seja diferente da origem.
Opções: -f suprime todas as mensagens (force)
-i modo interativo (confirma mudanças)_
Exemplos: $ mv /home/fabio* /home/fabio/bkp
$ mv teste.txt teste1.txt
RM
Nome: rm - remove arquivos ou diretórios
Sinopse: rm [-f ] [-r ] [-R ] [-i ] arquivo
Descrição: o comando rm é usado para remover arquivos e diretórios (inclusive
aqueles não vazios). Para apagar um arquivo ou diretório, o usuário não
precisa ter direitos de leitura ou escrita sobre ele, mas precisa ter direito
de escrita no diretório onde ele se encontra.
Opções: -i pede confirmação antes de apagar cada arquivo/diretório;
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
13
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
-f não pede confirmação para remover um arquivo protegido contra
escrita, nem mostra mensagem quando o arquivo não existe;
-r é a opção para apagar um diretório, removendo todos os arquivos e
sub-diretórios que ele tenha;
-R equivalente a opção -r.
Exemplos: $ rm teste.txt
$ rm -r teste
FUSER
Nome: fuser – mostra dados de arquivos sendo utilizados
Sinopse: fuser [-k ] arquivo
Descrição: o comando fuser é usado para mostrar os dados de um determinado
processo ou arquivo sendo executado na maquina.
Para verificar se um arquivo esta sendo usado por alguém, é necessário
estar dentro do diretório que o arquivo se encontra.
Opções: -k identifica o processo em execução e finaliza.
Exemplos: $ fuser cadpro.dbf
Exemplos: $ fuser -k cadpro.dbf
TOUCH
Nome: touch – cria ou altera um determinado arquivo.
Sinopse: touch [-t ] arquivo
Descrição: o comando touch é usado para criar ou alterar alguma propriedade de um
determinado arquivo.
Opções: -t altera a data do arquivo.
Exemplos: $ touch –t 08102010 menu.l
O arquivo será alterado para 10/08/2010.
FIND
Nome: find - procura arquivos por nomes ou por outras características.
Sinopse: find [caminho... ] [expressão]
Descrição: o comando find procura arquivos recursivamente em cada diretório
especificado em caminho, confrontando-os com a expressão booleana
expressão.
Expressões: -name arquivo verdadeiro se arquivo confronta com o nome do
arquivo corrente;
-perm num verdadeiro se a permissão de acesso ao arquivo
corrente é igual a num;
-type c verdadeiro se o tipo do arquivo corrente é c, onde
c pode ser, por exemplo, igual a d (diretório);
-print sempre verdadeiro, causa a impressão do path
corrente.
Exemplos: $find -name arq -print
./arq
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
14
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
O UNIX permite que um arquivo tenha uma ou mais entradas de diretório
apontando para o seu i-node na i-list. Isso é chamado de hardlink ou apenas link (ligação).
Um link pode apontar para arquivos ou diretórios (nesse caso, o processo criador deve
possuir direitos de superusuário).
Arquivos ou diretórios só podem ser deletados quando todos os seus links forem
removidos.
Nome: ln - cria um link ou symbolic link
Sinopse: ln [-f] [-s] arquivo nome_do_link
Descrição: cria um link ou symbolic link para um arquivo. O comando ln sem a opção
-s, cria hardlinks. Através do ln não é permitido criar hardlinks para
diretórios. Se o nome_do_link for um diretório, vários nomes de arquivos
podem ser especificados,
Opções: -f força a sobreposição de um arquivo, caso o nome do link seja o
mesmo do arquivo existente;
-s cria um symbolic link.
Exemplos: $ ln arq link $ ln -s arq symlink
$ ls -l arq link $ ls -l arq link
arq linkarq symlink@
6 PERMISSÕES E ACESSO A ARQUIVOS
O UNIX permite que múltiplos usuários armazenem e tenham acesso às
informações do disco ao mesmo tempo. Desta forma, é fundamental proteger os arquivos
de outros usuários. Por isso, faz-se uso de mecanismos para acesso de arquivos e
diretórios.
Para acessar arquivos e executar programas, o sistema UNIX tem que saber as
identificações do usuário. Para cada arquivo ou diretório, têm-se três categorias de
comunidade:
Tabela 3: Propriedade de Arquivos.
Nome Categoria Descrição
Usuário (user/owner) u Usuário que criou o arquivo
grupo (group) g Membros de grupos. Grupos são usuários que concordam
em partilhar certos arquivos e diretórios e são geralmente
formados no decorrer de um projeto ou por
seções/departamentos de uma empresa.
outros (others) o Outros usuários do sistema (o usuário e os membros do
grupo estão fora desse conjunto de usuários.
O computador mantém identificadores numéricos para usuário (UID) e grupo (GID).
Esta identificação é definida inicialmente ao entrar no sistema. Para consultar os
identificadores ativos, utilize o comando id diretamente no prompt do UNIX.
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
15
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
Todas as identificações de usuários reconhecidas pelo computador são
armazenadas no arquivo /etc/passwd, e todas as identificações de grupo são
armazenadas no arquivo /etc/group.
Usuários a serem incluídos num grupo específico são definidos pelo administrador
do sistema, e cada usuário pode ser um membro de um ou mais grupos. Grupos são
normalmente formados a partir dos grupos de trabalho já definidos numa organização.
6.1 TIPOS DE ACESSOS
O sistema de arquivos do UNIX permite que se defina para cada arquivo ou
diretório, três tipos básicos de controle de acesso.
Tabela 4: Tipos de Acesso para Arquivos/Diretórios.
Tipo de acesso Aplicado em Arquivos Aplicado em Diretórios
r permite ler o conteúdo do arquivo permite listar o conteúdo do diretório
w permite alterar o conteúdo do arquivo permite alterar o conteúdo do diretório
x permite executar um arquivo (programa) permite pesquisar o diretório
Diferentes comandos do sistema UNIX requerem algumas permissões para
acessar um programa ou arquivo. Por exemplo, para executar o comando cat num
arquivo a permissão read é necessária, porque este comando deve ser capaz de ler o
conteúdo do arquivo para mostrá-lo na tela. Da mesma forma um diretório requer a
permissão read para listar seu conteúdo com o comando ls .
A utilização de tipos de acesso para cada arquivo e diretório depende da política
adotada no gerenciamento desses recursos. Permissões de acesso de escrita para
diretórios liberam seu conteúdo para alteração, permitindo a remoção de seus arquivos e
sub-diretórios. A cada classe de usuários, são aplicadas as três permissões de acesso:
A combinação entre os três tipos de permissão
(r,w,x) com cada classe de usuários e denominado
modo do arquivo. A configuração do modo, de arquivo
e diretórios é realizada pelo usuário através do
comando chmod .
Modo Valor Octal
---
--x
-w-
-wx
r—
r-x
rw-
rwx
0
1
2
3
4
5
6
7
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
16
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
Os valores de permissão de arquivos podem ser expressos em vários formatos.
Outra forma é a representação como números octais.
6.2 PERMISSÕES
O acesso a um arquivo é definido pela identificação de usuário, identificação de
grupo e as permissões associadas ao arquivo. As permissões para um arquivo estão
especificadas no modo de acesso. O modo de um arquivo é um campo de 9 caracteres
que define as permissões para o proprietário do arquivo, para o grupo ao qual pertence e
para todos os outros usuários do sistema.
- rw
-rwx
d rwx
r- -
r-x
r-x
r- -
r- -
r-x
1
1
2
ricardo
ricardo
ricardo
computacao
computaçao
computacao
37
127
1024
Ago
Ago
Ago
15
15
15
12:10
12:20
12:34
readme.txt
.profile
aula
Usuário Grupo Outros proprietário grupo
Tabela 5: Exemplo de permissões de acesso.
Arquivo Categoria Permissão de Acesso
readme.txt usuário
grupo
outros
leitura e escrita
leitura
leitura
.profile
usuário
grupo
outros
leitura, escrita e execução
leitura e execução
leitura
aula usuário
grupo
outros
leitura, escrita e execução
leitura e execução
leitura e execução
7 COMANDOS DE MANIPULAÇÃO DE PERMISSÃO DE ACESSO
Apresenta-se a seguir os principais comandos para a manipulação de permissão
de acesso a arquivos.
CHMOD
Nome: chmod - muda o modo de permissão de arquivos.
Sinopse: chmod [ugoa] [+-=] [rwx] arquivo ...
Descrição: o modo pode ser descrito de uma forma absoluta ou simbólica.
Absoluta: número octal construído de um OR dos modos abaixo:
→ 400,040,004 - leitura para o dono, grupo e outros
→ 200,020,002 - escrita para o dono, grupo e outros
→ 100,010,001 - execução para o dono, grupo e outros
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
17
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
Simbólica: classe de acesso + operador + tipo de acesso
(u, g, o, a) (+, -, =) (r, w, x)
u: dono (user)
g: grupo
o: outros
a: todos (all)
+: adiciona permissão
-: remove permissão
=: troca as permissões
r: leitura (read)
w: escrita (write)
x: executar
No modo simbólico, a maneira de trocar os tipos de acesso existentes do arquivo,
para nenhum tipo de acesso (---) é utilizado o sinal de “=” sem nenhum valor sendo
atribuído.
Exemplos: $ ls -l
total 2
-rw-r--r-- 1 fabio users 32 Jun 17 22:40 arquivo.txt
drwx ------ 3 fabio users 512 Jun 17 21:05 teste/
$ chmod 000 *
$ ls -1
total 2
---------- 1 fabio users 32 Jun 17 22:40 arquivo.txt
d --------- 3 fabio users 512 Jun 17 21:05 teste/
$ chmod u=r, g=w, o=x arquivo.txt
$ls -l
total 2
-r---w---x 1 fabio users 32 Jun 17 22:40 arquivo.txt
d --------- 3 fabio users 512 Jun 17 21:05 teste/
$ chmod 421 teste
$ ls -l
total 2
-r---w---x 1 fabio users 32 Jun 17 22:40 arquivo.txt
dr--w---x 3 fabio users 512 Jun 17 21:05 teste/
$ chmod 221 teste
$ ls -l
total 2
-r---w---x 1 fabio users 32 Jun 17 22:40 arquivo.txt
d-w-w---x 3 fabio users 512 Jun 17 21:05 teste/
$ chmod u= ,g= ,o= arquivo.txt teste
$ls -l
total 2
---------- 1 fabio users 32 Jun 17 22:40 arquivo.txt
d -------- 3 fabio users 512 Jun 17 21:05 teste/
UMASK
Nome: umask - muda a máscara de modo para criação de arquivos do usuário
Sinopse: umask [modo]
Descrição: o comando umask muda a máscara de modo para criação de arquivos de
usuário obedecendo o modo especificado. O modo default usual de
permissões num arquivo recém criado é rw-rw-rw (qualquer usuário do
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
18
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
sistema pode modificar o arquivo) e num diretório recém criado é
rwxwvxrwx (qualquer usuário pode mudar este diretório e apagar qualquer
coisa deste diretório).
Utilize o comando umask para proteger os arquivos que serão criados
durante sua sessão, desabilitando as permissões default designadas em
qualquer arquivo ou diretório a ser criado. O acesso de escrever para
“grupo” e “outros” são as permissões mais importantes de serem
desativadas. A máscara designada fica ativa até o fim da sessão. Para
desabilitar a máscara e retomar ao modo default, digite o comando
umask 000 .
Utilizar o comando touch para criar um arquivo vazio. Se o arquivo já
existe,somente serão atualizadas hora e dia de criação do mesmo, sem
afetar o conteúdo do arquivo.
Exemplos: $ touch arquivo1.txt
$ ls -l arquivo1.txt
-rw-rw-rw- 1 fabio users 32 Jun 17 22:40 arquivo1.txt
$ umask 026
$ umask 026
026
$ touch arquivo2.txt
$ ls -l arquivo2.txt
-rw-r ----- 1 fabio users 32 Jun 17 22:43 arquivo2.txt
CHOWN
Nome: chown - muda o dono de um arquivo
Sinopse: chown [-f] [-R] novo_dono arquivo
Descrição: o comando chown muda o dono de um arquivo para o novo_dono
especificado. O novo_dono pode ser um UID válido ou um nome de login
válido. Somente o superusuário (root) pode usar o comando chown
Opções: -f força a mudança, não reportando os erros;
-R aplica o comando recursivamente aos sub-diretórios, mudando seus
donos.
Exemplos: $ chown fabio /home
CHGRP
Nome: chgrp - muda 0 grupo associado com o arquivo
Sinopse: chgrp [-f ] [-R] grupo arquivo
Descrição: o comando chgrp muda o grupo associado a um determinado arquivo.
Opções: -f força a mudança, não mostrando os erros;
-R executa o comando recursivamente, aplicando a todos os sub-diretórios.
Exemplos: $ chown -R users arquivo.txt
NEWGRP
Nome: newgrp - muda a identificação do grupo
Sinopse: newgrp [group_name ]
Descrição: o comando newgrp muda a identificação de grupo para o usuário
chamador. O usuário permanece conectado ao sistema e o diretório
corrente permanece o mesmo, porém as permissões de acesso aos
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
19
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
arquivos passam a ser executadas respeitando-se o novo GID
(identificador de grupo).
Quando o comando newgrp é usado sem parâmetro, o GID é alterado
para o GID de login.
Exemplos: $ ls -l arquivo1.txt
-rw-rw-rw- 1 fabio users1 32 Jun 17 22:40
arquivo1.txt
$ id
uid=303 (fabio), gid=100(users1)
$ newgrp users2
$ id
uid=303 (fabio), gid=13O(users2)
SU
Nome: su - muda a designação de Id de usuário
Sinopse: su [nome_usuario]
Descrição: o comando su permite a um usuário tornar-se temporariamente outro
usuário, ou seja, cria uma subsessão com um novo Id de usuário e
concede acesso a todos os arquivos que pertencem ao usuário designado
por Id.
Por questão de segurança será solicitada a senha da conta para que a
troca de usuário ocorra.
Sem argumentos, o comando su assume o usuário root (administrador do
sistema).
Para retomar ao user inicial digite o comando exit . Este comando vai
fechar a subsessão.
Exemplos: $ id
uid=303 (fabio), gid=100(users1)
$ su marcelo
Password:
$ id
uid=345 (marcelo), gid=100(users1)
$ exit
8 EDITOR
Os editores de texto permitem a criação, edição e visualização de arquivos no
formato texto.
8.1 ALGUNS EDITORES
Existem vários editores de texto para o UNIX.
O vi é o editor de textos padrão do UNIX. Não existe um UNIX que não tenha o vi .
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
20
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
O joe é um editor de texto que foi lançado no Linux, para fazer companhia ao vi e
oferecer um pouco das interfaces amigáveis dos editores do DOS. O joe é semelhante ao
WordStar. Todos os comandos para manipulação de textos são idênticos aos deste editor
para DOS.
Outro editor de textos é o pico , um editor de texto simples, fácil de usar, com o
layout bem parecido com o editor de mail pine . Ambos foram desenvolvidos na
Universidade de Washington.
8.2 vi
O editor vi inicializa em Modo de Comando.
A inicialização do vi é da forma:
$ vi [-R -r [arquivo] ] [arquivo]
-R entra no vi em modo de leitura, não permitindo modificar o arquivo.
-r [arquivo] recupera a última edição salva de um arquivo antes de um crash.
• Comandos Gerais
Esc termina o modo de inserção
N muitos comandos permitem que se digite um inteiro n antes dele, de modo
que o comando seja executado n vezes
:set permite definir: nu numeração
ts= tabs
prefixando um atributo com “no” irá desativá-lo
• Movimento do Cursor
h move o cursor uma posição a esquerda
l move o cursor uma posição a direita
k move o cursor uma linha acima
j move o cursor uma linha abaixo
w move o cursor uma palavra para frente
b move o cursor uma palavra para trás
) move o cursor um parágrafo para frente
( move o cursor um parágrafo para trás
H move o cursor para o topo da tela
M move o cursor para o meio da tela
L move o cursor para o final da tela
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
21
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
G move o cursor para o final do arquivo
nG move o cursor para a linha n
• Controle de Páginas
^E rola a tela para baixo linha a linha
^D rola a tela para baixo meia tela
^F rola a tela para baixo uma tela inteira
^Y rola a tela para cima por uma linha
^U rola a tela para cima meia tela
^B rola a tela para cima uma tela inteira
obs.: ^ = Ctrl
• Modificação de Texto
rx substitui o caracter sobre o cursor por x
dd apaga a linha corrente
dw apaga a palavra sob o cursor
X apaga o caracter sobre o cursor
U desfaz a última modificação
• Gravando e Saindo
w: [ arquivo ] grava o arquivo editado (grava com arquivo, se especificado)
ZZ grava o arquivo e sai
:wq grava o arquivo e sai
:q sai (se o arquivo foi modificado mostra mensagem de advertência)
:q! sai sem salvar as modificações
• Modo de Inserção
A entrada no modo de inserção ocorre através dos seguintes caracteres a, A, i, I,
o, O.
A entra no modo de inserção e posiciona o cursor uma posição a frente da atual
A entra no modo de inserção e posiciona o cursor no final da linha
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
22
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
I entra no modo de inserção e não altera a posição do cursor
I entra no modo de inserção e posiciona o cursor no início da linha
O entra no modo de inserção e adiciona uma linha em branco abaixo da linha atual
O entra no modo de inserção e adiciona uma linha em branco acima da linha atual
obs.: a tecla Esc sai do modo de inserção e entra no modo de comando
9 INTRODUÇÃO AO SHELL
O shell é um programa que serve como um interpretador de comandos. É separado
do sistema operacional, que fornece ao usuário a facilidade de selecionar a interface mais
apropriada às suas necessidades, ou seja, escolher qual shell ele gostaria de trabalhar. A
função do shell é permitir que se digite o próprio comando para realizar várias funções e
passar o comando interpretado para o sistema operacional.
O shell oferece várias funcionalidades, das quais pode-se destacar:
• suporte a interface programável interpretativa (testes de condição, desvios, loops)
• substituição de valores em variáveis shell especificadas
• substituição de comandos
• suporte a redirecionamentos e pipelines
• pesquisa a comandos com execução do programa associado
Figura 5: Shell
Ao inicializar uma sessão UNIX, o shell define as características para o terminal e
envia um prompt. Dentre os shells mais conhecidos pode-se citar:
• sh ou bash Bourne Shell – o mais tradicional. (prompt: $)
• ksh Korn Shell – o mais usado atualmente. (prompt: $)
• csh C Shell – considerado o mais poderoso. (prompt: %)
• rsh Remote Shell – shell remoto.
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
23
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
• Rsh Restricted Shell – versão restrita ao sh.
• Pdksh Public domain Korn Shell – versão de domínio públicodo ksh.
• Zsh Z Shell – compatível com o sh.
• Tcsh versão padronizada do csh.
O C shell foi escrito depois do Bourne shell e oferece um ambiente mais poderoso.
Tem histórico, uso do alias, complementação do nome de arquivo e outras características
úteis. Oferece ainda um conjunto mais poderoso de comandos, com mais opções e
capacidades do que o Bourne shell.
Um dos problemas do C shell é a incompatibilidade com programas do Bourne
shell. Além disto, existe a dificuldade de realizar algumas tarefas, como redirecionamento
de erro padrão.
O Korn shell tem todas as características melhores do C shell, além do que o
Bourne shell faz. De fato, o K shell é um superconjunto do Bourne shell.
Tabela 6: Comparação do csh, ksh e sh.
Shell
Atributo
csh ksh sh
Tamanho grande médio pequeno
Velocidade lenta rápida média
Características extras algumas todas nenhuma
Disponibilidade muitos sistemas muitos sistemas e expandido todos os sistemas
Compatibilidade alguns sh todos sh somente sh
todos csh todos ksh
9.1 VARIÁVEIS
Uma variável shell é semelhante a uma variável em álgebra. É seu nome que
representa um valor. Todas as variáveis shell, por default, são inicializadas com NULL
(nada). O valor da variável pode ser modificado a qualquer momento que se desejar. O
valor da variável pode ser acessado fazendo referência ao nome da variável.
9.1.1 Armazenamento
O shell possui duas áreas em memória para as suas variáveis: área de dados
local e de ambiente . A memória é alocada na área de dados local quando uma nova
variável é definida. As variáreis nesta área são restritas ao shell corrente. Isto é, nem todo
subprocesso terá acesso a essas variáveis. Entretanto as variáveis que são movidas
através do ambiente podem ser acessadas por qualquer subprocessos.
Existem variáveis especiais do shell que são definidas através do processo de
login. Nestas variáveis são armazenadas no ambiente, e seus valores podem mudar para
caracterizar a sessão. As principais variáveis são:
HOME define o diretório inicial do usuário
LOGNAME ou USER define a identificação do usuário no login
TERM define o tipo do terminal
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
24
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
PATH define o(s) diretório(s) onde procurar os comandos para execução
PWD define o diretório corrente
SHELL define o shell default para a sessão no terminal
PS1 define o prompt do shell primário
PS2 define o prompt do shell secundário
Os nomes das variáveis locais são geralmente definidos usando-se caracteres
minúsculos e das variáveis ambientais são definidos com caracteres maiúsculos. Esta
convenção é só para facilitar a identificação entre os 2 tipos de variáveis do código de um
programa.
A manipulação dessas variáveis depende do shell que se está utilizando. O C shell
realiza um divisão clara entre as variáveis do shell e de ambiente. Para criar ou trocar o
valor de uma variável local utiliza-se o comando set . Para as variáveis de ambiente , o
comando setenv .
set [ variável = valor ]
setenv [ variável valor ]
A remoção de variáveis do shell e do ambiente é realizada através dos comandos
unset e unsetenv , respectivamente.
unset variável
unsetenv variável
9.1.2 Atribuição de Valores
A atribuição de valores às variáveis permite associar um valor ao nome da variável.
O seu valor pode ser acessado através do nome da variável. Por exemplo, um contador
que conta o número de interações através de um loop. A variável pode ser incrementada
de um cada vez que se completa o loop. Ao atribuir um valor a uma nova variável, este
será armazenado na área de dados local.
A atribuição pode ser feita dentro de um programa shell ou digitando-se
diretamente no prompt do shell:
$ color=blue (variável local)
$ count=5 (variável local)
$ dir_name=/home/ricardo (variável local)
$ PATH=.:/bin:/usr/bin (variável local)
9.1.3 Substituição de Variáveis
Cada variável que é definida será associada a um valor. Quando o nome da
variável for imediatamente precedido por um sinal $, o shell troca o parâmetro pelo valor
da variável. Este procedimento é conhecido como substituição de variável e sempre
ocorre antes do comando se executado.
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
25
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
Depois do shell fazer todas as substituições na linha do comando, ele executa o
comando. Assim, as variáveis podem também representar um comando, argumentos de
comandos ou uma linha de comando completa. Isto fornece um mecanismo conveniente
para usar um pseudônimo frequentemente utilizado para longos caminhos e longas
cadeias de comandos.
$ echo$color
blue
$ echo o valor de color é $color
o valor de color é blue
$ echo $PATH
.:bin:/usr/bin
$ file_name=$PATH/arquivo.txt
$ more $file_name
O comando echo $ name exibe o valor corrente de uma variável.
9.1.4 Transferência de Variáveis Locais para o Ambi ente
Para tornar uma variável disponível para os processos-filhos, ela deve existir no
ambiente. No Bourne shell, para o usuário criar uma variável de ambiente, ele deve criar
uma variável como local e exportá-la com o comando export . A criação de uma variável
local é realizada utilizando um comando de atribuição “=”, conforme visto anteriormente.
O comando export name transfere as variáveis específicas da área local para a
área de ambiente. Sem argumento, o comando export exibe as variáveis que foram
exportadas para este shell.
$ variável = valor (cria uma variável de shell)
$ export variável (cria uma variável de ambiente)
Para remover o mecanismo é semelhante:
$ unset variável
$ export variável (remove a variável de ambiente)
O comando env exibe todas as variáveis e seus valores que estão armazenados
no ambiente. Quando um processo-filho é iniciado, ele recebe uma cópia das variáveis de
ambiente de seu pai. Por isso, se um processo-filho modifica o valor de uma variável de
ambiente, o valor modificado será propagado para qualquer um dos processos-filho, mas
o valor do pai permanece inalterado. Isto significa dizer que um filho não pode alterar o
ambiente de seu pai.
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
26
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
10 HISTÓRICO (HISTORY)
Algumas atividades de um usuário em uma sessão fazem com que comandos
sejam repetidos muitas vezes. O C shell permite que o usuário mantenha um buffer de
histórico de comandos, capaz de manter os comandos anteriores. Para usar o mecanismo
de histórico do C shell de forma automática (toda vez que abrir a sessão), deve-se colocar
as 3 linhas seguintes no arquivo .cshrc localizado no seu diretório HOME:
set history=20
sest savehist=20
set prompt=”[\!]%”
Estas declarações irão:
• Permitir que seu buffer de histórico de comandos armazene os 20 comandos
anteriores.
• Salvar os últimos 20 eventos de buffer do histórico de comandos, quando terminar
a sessão e restaurá-los a próxima vez que se logar.
• Definir o prompt do C shell para mostrar o número de cada evento (comando) que
o usuário digitar no terminal.
Para referenciar comandos armazenados na lista , pode-se usar alguns
parâmetros:
!! executa o último comando
!n executa o n-ésimo comando
!string executa o comando mais recente que comece com o “string”
! –n executa o n-ésimo comando a contar do último
11 PROCESSOS
Um processo é um programa de execução independente que tem seu próprio
conjunto de recursos. Para um mesmo programa (entidade estática) podem existir vários
processos (entidades dinâmicas).
O UNIX, como sistema operacional multitarefa, permite a existência de vários
processos ao mesmo tempo. Emmáquinas monoprocessadas, o kernel do UNIX se
encarrega de escalonar os recursos de execução do único processador para vários
processos do sistema. Já em máquinas multiprocessadas, pode-se ter processos
executando em paralelo, e não concorrentemente como nas máquinas monoprocessadas.
Quando for digitado algum comando no ambiente do UNIX, este comando é
executado como um processo subordinado (chamado processo filho) do processo
corrente (chamado processo pai). Todos os processos criados pelo usuário são filhos de
login.
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
27
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
Figura 6: Processo e subprocessos.
O sistema operacional tem muitos recursos que devem ser gerenciados, incluindo
recursos de hardware e software. Um dos recursos de software que deve ser gerenciado
é um programa em execução. As características do processo são:
• É um programa que pode ser executado concorrentemente
• Pode ser criado e destruído
• Possui recursos alocados para ele
• Possui um ambiente associado a ele que é herdado do processo pai, consiste de
todas as informações relativas ao processo e pode ser alterado através de
comandos no ambiente de shell
• Pode criar outros processos
• Pode se comunicar com outros processos
No UNIX cada processo possui o seu próprio ambiente onde existem todas as
informações relativas ao processo e que afetam a sua execução:
• Dados
• Arquivos abertos
• Diretório corrente
• User ID
• Process ID
• Parente Process ID
• Conjunto de variáveis
11.1 COMANDOS DE CONTROLE DE PROCESSOS
O UNIX disponibiliza alguns comandos para a manipulação de processos conforme
apresentados a seguir:
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
28
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
PS
Nome: ps – permite ao usuário visualizar os processos do sistema
Sinopse: ps [-a] [-l ] [-u] [-e] [-f ]
Opções: -a inclui informações sobre todos os processos do sistema
-l apresenta saída em formato longo
-u apresenta informações do usuário e hora de início dos processos
-e apresenta uma lista completa dos processos, com exceção dos proc.
do kernel
-f apresenta uma lista completa dos processos
Descrição: sem nenhum parâmetro, apresenta somente os processos do usuário na
sessão, em formato resumido
Exemplo: $ ps
PID TTY STAT TIME CMD
1058 pp0 S 21:09 -bash
1071 pp0 R 21:09 ps
$ ps -l.
UID PID PPID PRI NI SIZE RSS WCHAN STAT TTY TIME CMD
525 1118 1117 5 0 368 532 11cac5 S pp0 21:09 -bash
525 1171 1118 24 0 57 188 0 R pp0 21:09 ps -l
BG
Nome: bg – permite ao usuário enviar um processo/grupo de processos para
execução em segundo plano (background)
Sinopse: bg [% número_do_job ]
Descrição: sem nenhum parâmetro, o comando bg assume o job corrente. O número
do job é apresentado no terminal no momento em que este foi suspenso
ou pode ser listado com o comando jobs , o qual apresentará a lista de
jobs do shell corrente.
Exemplo: $ man ps
^Z
Stopped
$ jobs
[1] + Stopped man ps
$ bg %1
[1] man ps &
$ jobs
[1] + Stopped (tty output) man ps
FG
Nome: fg - permite ao usuário trazer um processo/grupo de processos para
execução em primeiro plano (foreground)
Sinopse: fg [% número_do_job ]
Descrição: sem nenhum parâmetro, o comando fg assume o job corrente. O nome do
job pode ser referenciado pelo número do job quando precedido pelo sinal
de percentual (%) ou o PID.
Exemplo: $ jobs
[1] + Stopped(tty output) man ps
$ fg %1
man ps
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
29
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
KILL
Nome: kill - objetiva enviar sinais (interrupções de software) para processos
Sinopse: kill [-sinal] pid
kill [-l ]
Opções: -sinal envia o sinal especificado ao(s) processo(s) (“pid”);
-l apresenta lista de sinais que podem ser utilizados com o
comando kill .
Descrição: Cada sinal tem um número e um nome de identificação. Os mais utilizados
são o SIGKILL(9) e SIGTSTP(2O). O sinal SIGKILL, quando enviado a um
processo, termina sua execução, desde que o usuário seja o “dono” do
processo ou seja o superusuário. O SIGTSTP pode ser enviado a um
processo ou grupo de processos em foreground, provocando sua
suspensão. Esse sinal também é enviado quando se aciona as teclas
Ctrl+Z (^Z)_ Quando o comando kill é executado sem parâmetros, o sinal
enviado é o SIGTERM (15) ou terminate, que provoca o término do(s)
processo(s) especificado(s). Os programas podem desabilitar a recepção
do terminate para seus processos. O parâmetro pid pode ser obtido
listando os processos, através do comando ps .
Exemplo: $ kill -1
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGIOT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO
30) SIGPWR
$ kill -91234
$ kill -SIGKILL 1234
NICE
Nome: nice - executa um processo estabelecendo sua prioridades
Sinopse: nice [-incremento] comando_linha
Descrição: Comando de prefixo que permite executar um programa estabelecendo
sua prioridade. Programas com baixa prioridade ganham menos acessos
aos recursos do sistema. O incremento é um número inteiro com valor
entre -20 a +20. O default do incremento é 10. Um processo com valor de
nice maior é o que tem menor prioridade relativa no sistema. O valor nice
não é um modificador absoluto de prioridade.
Para ver as prioridades dos processos, utliza-se o comando ps -l. As
prioridades são exibidas sob a coluna intitulada PRI. Jobs que têm maior
prioridade terão o valor de prioridade mais baixo. O valor nice é exibido
sob a coluna intitulada Nl
Exemplo: $ nice -20 cc myprog.c -o myprog (dispara o processo 'cd com alta
priorid.
$ nice 5 sort * > sort.out
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
30
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
CRONTAB
Nome: crontab - executa comandos periodicamente na data e hora programada
Sinopse: crontab [-l ( -V ] [-r] [arquivo]
-l exibe o conteúdo do arquivo crontab
-r remove o arquivo crontab do diretório crontab
-v exibe o nome do arquivo crontab e a data e a hora que foi
submetido com o crontab
arquivo coloca o arquivo (comandos) na fila para execução
Descrição: O comando crontab coloca comandos na fila do daemon cron para serem
processados. O “arquivo” que contém informações sobre os comandos a
serem executados com as respectivas datas, serve como entrada de
dados para o comando crontab.
O UNIX possui um daemon chamado cron que executa comandos shell
na data e hora especificada e de forma periódica. O daemon cron:
- é inicializado quando o sistema operacional é inicializado até que ocorra
uma falha no sistema ou seja executado um shutdown.
- cria um log de atividades
- checa o arquivo crontab no diretório /usr/spool/cron/crotabs
periodicamente em busca de jobs.
O formato do arquivo crontab é mostrado a seguir. Crie o arquivo com um
editor de textos e então submeta o arquivo usando o comando crontab.
Cada usuário pode ter apenas 1 arquivo crontab ativo num determinado
tempo. O arquivo crontab pode conter mais que uma linha de comando.
Cada linha no arquivo consiste de seis campos que são separados por
espaços ou tabs. Exemplo de um arquivocrontab:
Exemplo: $ crontab Iimpeza_semanal
$ crontab -l
30 13 * 1 1-15
$ crontab -v
crontab file: your submission time: Thu Jan 02 13:00:29 1992
12 REDIRECIONAMENTO DE E/S, FILTROS E PIPELINES
Um comando do UNIX é um programa (conjunto de instruções) que geralmente lê
dados de um ou vários arquivos de entrada, efetua algum tipo de processamento sobre
eles (computação) e finalmente produz os resultados em arquivo(s) de saída. Na
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
31
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
arquitetura do UN1X, note-se, dispositivos como terminal, discos e impressoras também
são tratados como arquivos.
Ao criar um processo, o UNIX predefine e automaticamente lhe associa três
arquivos padrões:
• stdin (0) - entrada padrão;
• stdout (1) - saída padrão;
• stderr (2) - saída padrão para erros.
A entrada padrão (stdin) e um arquivo de onde os programas obtêm dados de
entrada para o seu processamento. O sistema associa a esta entrada padrão o teclado do
terminal, caso o usuário não especifique uma alternativa. Essa redefinição é um recurso
oferecido pelo Shell conhecido como redirecionamento.
A saída padrão (stdout) é o arquivo para onde usualmente são enviados os
resultados do programa. O monitor do terminal é o arquivo de saída padrão associado ao
processo pelo sistema. Assim como a entrada padrão, a saída padrão pode ser
redirecionada para outros arquivos (impressora, disco, etc).
Além da saída e entrada padrão, o UNIX reserva uma conexão de I/O para
mensagens de erros do programa. Se um usuário redireciona a saída padrão de um
programa, mensagens de erros emitidas por este programa serão ainda enviadas para o
terminal, pois a saída padrão de erros também é o terminal. O Shell permite redirecionar a
saída padrão de erros para outros arquivos no sistema.
Como exemplo, pode-se utilizar o comando cal .
$ cal 10 1997
Nessa execução do comando cal , os dados de entrada para seu processamento
são os parâmetros 10 e 1997. Nesse caso, o dispositivo de entrada foi o teclado. A saída
do comando será realizada na tela do terminal do usuário, por default o dispositivo de
saída padrão. O usuário poderia redirecionar essa saída para um arquivo ou algum outro
dispositivo de saída, como uma impressora.
Ou seja, se um comando espera uma entrada e nenhum arquivo de entrada é
especificado, então esse comando vai buscar seus dados de uma entrada padrão, que é
o terminal do usuário. Se um comando vai jogar a saída de seu processamento para um
arquivo, e nenhum arquivo de saída foi especificado, o comando utilizará a saída padrão
que também é o terminal do usuário.
Quase todos os comandos do UNIX seguem essa filosofia de trabalho. Alguns
comandos foram previamente implementados com a especificação de qual arquivo seria
utilizado para saída e/ou entrada. Por exemplo, o comando ls sempre utiliza como
entrada padrão um diretório. Já o comando lpr , utiliza como saída padrão a impressora.
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
32
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
Figura 7: Entrada e Saídas Padrões.
13 COMANDOS DE REDIRECIONAMENTO DE E/S
Redirecionamento é uma facilidade que o UNIX oferece, permitindo que o usuário
altere as saídas e a entrada padrão do programa, especificando novos arquivos.
13.1 REDIRECIONANDO A SAÍDA PADRÃO ( > E >> )
No exemplo do comando cal , a saída padrão do comando foi o terminal. O usuário
pode definir que a saída do programa (um determinado calendário) seja realizada para um
arquivo em disco para posterior utilização. Esse redirecionamento é feito utilizando-se o
símbolo “>” (maior que) e o nome do arquivo que armazenará a saída do programa.
$ cal 10 1997 > calendario97.dat
Nesse exemplo, a saída do comando cal será redirecionada para o arquivo
calendario97.dat. O arquivo será criado, caso não exista, ou sobrescrito se já existir um
arquivo com mesmo nome no diretório.
Outra forma de redirecionar a saida padrão é feita utilizando o simbolo “>>”. Neste
caso, a saída é colocada no final (append) de um arquivo existente, não destruindo os
dados do arquivo. Caso o arquivo não exista, ele será criado para armazenar a saída do
programa.
$ cal 11 1997 >> calendario97.dat
13.2 REDIRECIONANDO A ENTRADA PADRÃO ( < )
O redirecionamento de entrada pode ser feito em todos os comandos que lêem os
dados de uma entrada padrão. O redirecionamento de entrada é realizado utilizando o
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
33
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
símbolo “<” (menor que), indicando ao Shell para trocar a entrada padrão (terminal) para
um novo arquivo especificado.
Como exemplo, pode-se ter o comando write com a entrada padrão redirecionada
para outro arquivo. No caso, a entrada estará contida no arquivo em disco, chamado
calendario97.dat.
$ write Fabio < calendario97.dat
Desse modo, o conteúdo do arquivo ca.lendario97.dat será transmitido para a tela
do terminal do usuário fabio.
13.3 REDIRECIONANDO A ENTRADA E A SAÍDA SIMULTANEAMENTE
O UNIX permite a utilização em conjunto dos símbolos > / >> e < oferecendo ao
usuário a capacidade de redirecionar a entrada e a saída padrão do programa de uma
única vez.
$ who > users.dat
$ cat users.dat
maria ttyp1 Jun 10 13:03 1997
ana ttyp3 Jun 10 13:13 1997
fabio ttyp5 Jun 10 14:07 1997
marco ttyp6 Jun 10 14:23 1997
$ sort < users.dat
ana ttyp3 Jun 10 13:13 1997
fabio ttyp5 Jun 10 14:07 1997
maria ttyp1 Jun 10 13:03 1997
marco ttyp6 Jun 10 14:23 1997
$ sort < users.dat > users2.dat
$ cat users2.dat
ana ttyp3 Jun 10 13:13 1997
fabio ttyp5 Jun 10 14:07 1997
maria ttyp1 Jun 10 13:03 1997
marco ttyp6 Jun 10 14:23 1997
$ sort -r +1 < users.dat >> users2.dat
$ cat users2
ana ttyp3 Jun 10 13:13 1997
fabio ttyp5 Jun 10 14:07 1997
maria ttyp1 Jun 10 13:03 1997
marco ttyp6 Jun 10 14:23 1997
ana ttyp3 Jun 10 13:13 1997
fabio ttyp5 Jun 10 14:07 1997
maria ttyp1 Jun 10 13:03 1997
marco ttyp6 Jun 10 14:23 1997
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
34
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
13.4 REDIRECIONANDO A SAÍDA DE ERROS
A saída padrão de erros é muito utilizada para a depuração de programas e
emissão de relatórios de erros aos usuários. O sistema operacional pode utilizar a saída
padrão de erros, associada ao processo, para relatar a seu usuário algum erro que
ocorreu na execução do processo. A saída de erros é redirecionada utilizando a notação:
>&
$ ls arquivo_nao_existente > saida_erro.dat
Is: arquivo_nao_existente: No such file or directory
$ cat saida_erro.dat
$ ls arquivo_nao_existente >& saida_erro.dat
$ cat saida_erro.dat
ls: arquivo_nao_existente: No such file or directory
Da mesma forma que a saída padrão, a saída padrão de erros pode ser
redirecionada para o final (append) de um arquivo existente, não destruindo os dados do
arquivo. Caso o arquivo não exista, ele será criado para armazenar a saída do programa.
$ ls arquivo_nao_existente >& saida_erro.dat
$ cat saida_erro.dat
Is: arquivo_nao_existente: No such file or directory
$ ls arquivo_nao_existente2 >>& saida_erro.dat
$ cat saida_erro.dat
Is: arquivo_nao_existente: No such file or directory
ls: arquivo_nao_existente2: No such file or directory
14 COMANDOS DE FILTROS
Filtro é um programa que lê de sua entrada padrão, executa um processamento e
escreve para sua saída padrão. Filtros são normalmente conectados linearmente em Shell
pipelines.
São exemplos de filtro: wc ; sort ; grep
Programas que não são filtros: who ; ls ; cd ; mv ; pwd ; whoami ; clear
WC
Nome: wc - conta o númerode linhas, palavras e caracteres de arquivos.
Sinopse: wc [ -lwc] [arquivo ...]
Descrição: o comando wc conta o número de linhas, palavras e caracteres de um
arquivo especificado como parâmetro. Se nenhum nome de arquivo for
especificado, o arquivo de entrada do comando wc será a entrada
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
35
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
padrão. Caso nenhuma opção seja definida, o comando imprime o
número de linhas, palavras e caracteres.
Opções: • -l conta linhas;
• -w conta palavras (words);
• -c conta caracteres.
Exemplos: $ wc arq.dat
2 4 16
$wc -c arq.dat
16
SORT
Nome: sort - ordena linhas de arquivos especificados e escreve os resultados
para a saída
Sinopse: sort [opções globais] [especificação dos campos] [-o saída] [arquivo ...]
Descrição: sort ordena arquivos de entrada e escreve na saída padrão ou no arquivo
especificado na opção -o. O comando sort trabalha sobre o conceito de
chave (key). Chave é a parte cada linha que o comando sort examina
para determinar em qual ordem as linhas aparecerão. Caso nenhuma
chave seja especificada, o padrão é toda linha.
Para o sort . cada linha é constituída de campos, os quais estão
separados por caracteres específicos. O caracter de espaço é o
separador de campos default, mas outros separadores podem ser
especificados pelo usuário.
O comando sort , em seu processamento, utiliza mais um parâmetro
chamado indicador de posição. Ele permite que a ordenação comece em
um determinado campo da linha, além de possibilitar especificar uma
posição em caracter, dentro desse campo.
Além disso, a ordem em que será realizada a ordenação também pode
ser determinada pelo usuário. Esta determinação é feita através de
opções de controle de ordenação, que devem vir antes dos parâmetros
indicadores de posição.
Opções • -tc o caracter c é assumido como o separador de campo. Caso esta
opção não seja especificada, caracteres de espaço em branco e
tabulação são usados como separadores;
• -b ignora os espaços e tabulações iniciais do campo de ordenação;
• -n significa que para o campo específico será realizada uma ordenação
numérica.
Indicador de Posição: • +C.c -C.c o caracter “C” significa o campo e o caracter “c”
significa a posição em bytes naquele campo, Os valores precedidos do
sinal de “+” e “-“ indicam o início e fim da chave.
Ordem de Comparações: •-r reverte o sentido das comparações. O default é do
menor para o maior: (1,2,3), (A,B,C), etc.
Globais:
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
36
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
Exemplos: $ cat > sort.dat
Z:1 -1Campo
M:5 -2Campo
P:2 -3Campo
C:1 -4Campo
A:4 -5Campo
^Z
$ sort -t: +1 sort.dat $ sort -t: +1 -n sort.dat
Z:1 -1Campo Z:1 -1Campo
C:1 -4Campo M:5 -2Campo
P:2 -3Campo P:2 -3Campo
A:4 -5Campo C:1 -4Campo
M:5 -2Campo A:4 -5Campo
$ sort +0.2 sort.dat $ sort +1 -2 sort.dat
Z:1 -1Campo M:5 -2Campo
C:1 -4Campo Z:1 -1Campo
P:2 -3Campo P:2 -3Campo
A:4 -5Campo C:1 -4Campo
M:5 -2Campo A:4 -5Campo
GREP
Nome: grep - procura por padrões de texto em arquivos
Sinopse : grep [- cvny] expressão [arquivos de entrada]
Descrição: o comando grep procura por um padrão especificado em arquivos,
escrevendo a linha do arquivo que possui o padrão equivalente.
Opções: • -c mostra o n.° das linhas nas quais forarn encont rados padrões
equivalentes;
• -n mostra, com a numeração, as linhas em que foram encontrados os
padrões;
• -v exibe as linhas que não possuem o padrão especificado;
• -y trata letras maiúsculas e minúsculas como um mesmo padrão.
Expressão: expressões podem ser cadeias de caracteres ou expressões regulares,
que, embora também sejam cadeias de caracteres, possuem símbolos
com significados especiais chamados metacaracteres:
• . (ponto) representa qualquer caracter na pesquisa;
• [ - ] representa todos os caracteres compreendidos entre o
caracter antes do “-“ e o caracter depois do “-“, inclusive.
Exemplos: $ cat > arquivo.dat
Ana
Fabio
Maria
Marco
^Z
$ grep “an” arquivo.dat
Ana
Fabio
$ grep -n “an” arquivo.dat
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
37
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
1 Ana
2 Fabio
$ grep -v -n “an” arquivo.dat
3 Maria
4 Marco
$ grep “r.” arquivo.dat
Maria
Marco
$ grep -n “[r-t]” arquivo.dat
2 Fabio
3 Maria
4 Marco
15 COMANDOS DE Pipelines
Pipes são uma velha forma de comunicação entre processos no UNIX, e são fornecidos
por todos os sistemas UNIX. Um pipe (duto) é uma conexão que conduz a saída padrão de um
programa para a entrada padrão de outro programa. Esse conceito facilita aos programas UNIX
trabalharem juntos, sem a necessidade de arquivos intermediários.
15.1 PIPELINE ( | )
O símbolo para a criação de pipelines é a barra vertical ( | ). Quando em uma linha
de comando, dois programas são separados por uma barra vertical ( | ), a saída do
primeiro é transferida para a entrada do segundo.
$ who | wc -1
6
A resposta da linha de comando acima é o número de usuário conectados no
sistema naquele instante.
Os pipes são half-duplex, isto é, os dados fluem somente em uma direção. Eles
somente podem ser usados entre processos que possuam o mesmo ancestral comum
(processo pai). No caso anterior, o processo “pai” comum aos dois processos era o Shell
do usuário.
15.2 CAPTURANDO A SAÍDA INTERMEDIÁRIA DE UM PIPELINE
A possibilidade de se ter pipeline traz a necessidade de se capturar sua saida
intermediária. Para isso, tem-se o comando tee.
$ tee nome_arquivo
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
38
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
Esse comando copia a saída de um dos programas pertencente ao pipeline, o qual
está imediatamente anterior ao comando tee, para o arquivo determinado.
Figura 8: Comando tee e Pipelines.
$ who | tee usuários | sort
CUT
Nome: cut - corta colunas de arquivos.
Sinopse: cut -clista [arquivo]
cut -flista [-dx] [arquivo]
Descrição: o comando cut é um equivalente ao comando grep com uma análise na
vertical. O cut identifica colunas através de dois métodos totalmente
diferentes. O mais simples é uma posição em caracter, ou seja, a coluna
inicia-se em uma determinada posição da linha. A segunda forma é
através de caracteres delimitadores de campo, semelhante ao comando
sort . O separador default é o caracter de tabulação (tab).
Opções: • -clista os caracteres mencionados na lista são extraídos. A lista são
varias posições separadas por vírgula, ou por hífen “-“;
• -flista especifica as colunas que serão extraídas. Essa opção
trabalha em conjunto com a opção -d;
• -dx define o caracter (“x”) separador de campos.
Exemplos: $ cat > notas.dat
fabio:8
maria:10
marco:7,5
^Z
$ cut -c3-5 notas.dat $ cut -c3-5 notas.dat
ton tn
ari ai
arc ac
$ cut -f2 –d: notas.dat $ cut -f3 -d: notasdat
8 8
10 10
7, 7,5
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
39
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
PR
Nome: pr - converte arquivo texto para uma versão colunada e paginada; com
cabeçalho.
Sinopse: pr [arquivo]
Descrição: o comando pr converte um arquivo texto para um arquivo paginado,
colunado, com cabeçalhos.
Opções: • +nº descarta as primeiras (nº - 1) páginas, imprimindo a partir da
página nº;
• -nº imprime em nº colunas;
• -a imprime colunas horizontalmente; e não verticalmente;
• -d utiliza espaço duplo;
• -h cab usa cab como cabeçalho ao invés do nome do arquivo;
• -l linha configura o número de linhas (o padrão é 66).Caso o número
seja menor que 10, os cabeçalhos e rodapés são omitidos;
• -m imprime um arquivo por coluna;
• -t suprime cabeçalhos, rodapés, e caracteres de preenchimento.
Exemplos: $ ls /home > arquivo
$ pr -3 arquivo
adriana gisela oliveira
adrianem gomes pablo
adriano goncalve patrick
... ... ...
$ pr -a -3: arquivo
adriana adrianem adriano
adrianoe adrianos aide
ana anac anap
... ... ...
TR
Nome: tr - converte caracteres.
Sinopse: tr [opções] [string 1 [string 2] ]
Descrição: o comando tr converte caracteres - copia de uma entrada padrão para
uma saída padrão, substituindo caracteres de string 1 para string 2, ou
deletando caracteres em string 1.
Opções: • - d deleta caracteres no string 1
• - s suprime caracteres repetidos no string 2
Caracteres Especiais: • \b ^H (backspace)
• \f ^L (form feed - alimentação de formulário)
• \n ^J (nova linha)
• \r ^M (retomo de carro - CR)
• \t ^I (tab)
• \nnn caracter com valor octal nnn
• \\ contrabarra
• char1-char2 todos os caracteres entre char1 e char2
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
40
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
Exemplos: $ cat > arquivo
ABCDEFG HIJKLMN OPQRST UVWXYZ
^Z
$ cat arquivo | tr ’A-Z’ ’a-z’
abcdefg hijklmn opqrst uvwxyz
$ tr ‘ ‘ ’ \012‘ < arquivo
ABCDEFG
HUKLMN
OPQRST
UVWXYZ
16 TAREFAS ADMINISTRATIVAS
16.1 Iniciando o Sistema
A inicialização do sistema é feita ligando-se o computador. Será carregado o
sistema operacional e o sistema ficará em estado de funcionamento para que se possa
abrir uma sessão e trabalhar.
Normalmente, quando o sistema é ligado, o boot será feito com o primeiro sistema
operacional que for encontrado: o disco rígido ou um disquete. Este método é conhecido
como unattended boot .
Há métodos de interrupção automática no processo de boot, permitindo um boot
interativo do sistema. Este método, que deve ser executado na console do sistema, é
conhecido como attended boat e normalmente é usado pelo administrador do sistema
para dar boot a partir de uma mídia (kernel) alternativa.
Se precisar saber o nome e a versão do sistema operacional que está carregado
no computador, deve-se utilizar o comando uname -a .
16.2 Finalizando o Sistema
Muitas vezes o sistema UNIX está em um modo que permite vários usuários
conectados ao mesmo tempo. Consequentemente existirão vários processos de usuários
sendo executando no sistema num dado momento.
A primeira regra é: NUNCA DESLIGUAR A ENERGIA DO COMPUTADOR. Se o
sistema UNIX for parado indevidamente, podem-se perder informações e o sistema de
arquivo pode ficar corrompido.
Existem muitas razões para parar o sistema. Se um processo está ativo de modo
estranho, a tentativa é usar o comando kill. Se este comando não resolver o problema, o
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
41
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
sistema precisa ser parado e reinicializado. Vários métodos podem ser utilizados para
parar o sistema e o comando shutdown é o mais utilizado. Só após é que o equipamento
deve ser desligado.
O administrador do sistema é que tem a autorização para desligar o sistema e
deverá estar no diretório raiz (/) para executar o comando.
Nome: shutdown - finaliza a operação do sistema
Sinopse: shutdown[ [-r | -h] [tempo]
Opções: -r reboot automático após o shutdown
-h pára o sistema após o shutdown
tempo número de segundos opcionais de espera antes de terminar todos os
processos
Exemplo: $ shutdown -h 300
17 BACKUPS
Uma das principais responsabilidades do administrador é preservar dados
armazenados no sistema. Infelizmente os dados, às vezes, são perdidos. Os fatores mais
comuns que provocam a perda de dados são:
• Falha de hardware;
• Remoção de arquivos acidentalmente;
• Sistema de arquivos (Filesystem) corrompido;
• Crash de Sistema.
O administrador é responsável pelo planejamento e implementação de backups
para minimizar a perda de dados. Outro aspecto que deve ser levado em consideração
são os fatores ambientais externos (fogo, inundação, etc) que podem danificar as mídias
utilizadas para backup. Por este motivo, também é importante fazer backups em discos
remotos ou estabelecer procedimentos administrativos para manter mídias em locais
geograficamente distintos.
O procedimento de backup é determinado por alguns fatores dentre eles o uso
frequente do sistema e grande quantidade de usuários podem requerer que seja feito
backup diariamente. Em ambientes mais simples pode ser feito backup uma vez por
semana. Quanto maior a frequência deste procedimento maior o custo pois envolve
pessoal e material.
No planejamento de backups deve ser levado em consideração quando e de quais
dados fazer backup. Existem duas alternativas: fazer backup do sistema todo ou parte
dele. Na maioria das vezes a estratégia envolve os dois procedimentos. É possível fazer
backup geral aos domingos e parcial de segunda a sexta. Na escolha da estratégia de
backup devem ser considerados três fatores:
• Quantidade de mídias necessárias;
• Quantidade de tempo necessário;
• Frequência do backup.
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
42
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
A quantidade de mídia e o tempo são proporcionais ao espaço ocupado pelos
arquivos do sistema. A frequência do backup depende do custo de dados perdidos.
TAR
Nome: tar - armazena backups em uma fita ou em disco.
Sinopse: tar {-c l -r I -t I -u l -x } [-f arquivo-disposito] [arquivo]
Descrição: O comando tar salva e recupera arquivos de/para fita magnética. Para
salvar arquivos em fita é necessário saber o arquivo do dispositivo da
unidade de fita. Os nomes típicos podem ser:
/dev/rct - fita em cartucho
/dev/rmt - fita rolo 9 trilhas ou fita DAT
Opções: -c cria um novo arquivo
-r arquivos são adicionados no fim do backup
-t imprime o conteúdo do backup
-u arquivos são adicionados se forem novos ou modificados
-x arquivos são extraídos do backup
-f arquivo-dispositivo designa o arquivo onde o backup será
escrito. O arquivo-dispositivo não precisa ser um dispositivo. Pode-se criar
um arquivo de backup sob um diretório no disco.
arquivo arquivo onde os dados serão lidos ou extraídos
Exemplo: $ tar -c arquivo1 arquivo2
$ tar -v -t -f saida.tar
CPIO
Nome: cpio - armazena backups
Sinopse: cpio -o [-c -v -x]
cpio -i [-c -d -m -t -u -v -x]
Descrição: O comando cpio -o lê a lista dos nomes de arquivos de entrada padrão e
cria um arquivo de backup com os arquivos requeridos e envia o arquivo
backup para a saída padrão. A lista dos nomes do arquivo backup é
criada com o comando find, e o arquivo de backup é geralmente
redirecionado para o arquivo especial do dispositivo de fita.
O comando cpio -i lê os arquivos de backup da entrada padrão (arquivo
especial do dispositivo de fita) e recupera os arquivos contidos no disco.
Os nomes dos arquivos criados dependem se o arquivo foi criado com
caminho absoluto ou relativo.
Para salvar arquivos em fita, é necessário saber o arquivo do dispositivo
da unidade de fita. Os nomes típicos podem ser:
/dev/rct - fita em cartucho
/dev/rmt - fita rolo 9 trilhas ou fita DAT
Opções: -c escreve o cabeçalho em formato ASCII
(se usado com opção -o deve ser usado com -i)
-d cria a estrutura do diretório se necessário.
-m retém a modificação da data atual (importante para controle de versão)
-t exibe os conteúdos do arquivo backup
-u recupera incondicionalmente (se o arquivo já existe é sobreposto)
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
43
Rua São João, 1759 – Zona 07– Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
-v exibe uma lista de arquivos copiados
-x trata arquivos especiais
Exemplo: $ find . -print | cpio -ocv > /dev/rmt
(cria um backup de todos os arquivos sob o diretório corrente)
$ cpio -ict < /dev/fmt
(recupera todos os arquivos do backup)
$ cpio -icdmv < /dev/fmt
(recupera todos os arquivos do backup)
$ cpio -icudm ‘*arquivo*’ < /dev/rmt
(recupera um único arquivo)
18 COMUNICAÇÃO COM OUTROS USUÁRIOS
A comunicação com outros usuários no sistema UNIX é uma das características
chave do sistema operacional que os usuários precisarão e utilizarão diariamente. O UNIX
possibilita diferentes formas de se comunicar eletronicamente com outros usuários.
Com os serviços de comunicação poder-se-á:
• Obter informações sobre outros usuários do sistema;
• Enviar e Receber mensagens eletrônicas com o utilitário mail ;
• Comunicar com outros usuários conectados com o sistema.
18.1 COMANDOS PARA COMUNICAÇÃO
WHO
Nome: who - exibe informaeoes sobre os usuarios conectados no sistema
Sinopse: who [am i]
Descrição: O comando who gera uma lista de todos os usuários que estão
conectados no sistema no instante de sua execução Este comando
examina o arquivo /etc/utmp para obter informações de usuários As
informações exibidas dos usuários são o username, o terminal, a data e
hora de login.
Opções: am i exibe o nome de login do usuário corrente
Exemplo: $ who
anderson tty00 Jan 14 08:01
johnston tty02 Jan 14 09:00
smith ttyp0 Jan 14 12:16
thomas ttyp3 Jan 14 15:34
$ whoami
anderson
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
44
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
WRITE
Nome; write - escreve uma mensagem para o tty de um determinado usuário
Sinopse: write usuário [tty]
Descrição: O comando write permite a um usuário enviar uma mensagem para o tty
de outro usuário no UNIX. Após a digitação do comando, seguido do nome
do destinatário (ou nome do usuário e identificação do terminal no qual ele
está conectado) e da tecla <ENTER>, cada linha escrita será enviada ao
terminal do usuário chamado depois de pressionada a tecla <ENTER>, até
que o usuário que iniciou a chamada pressione CTRL-D ou CTRL-Z como
primeiro caracter da linha. Caso o usuário chamado estiver em outra
máquina da rede, o argumento usuário deve conter uma identificação da
forma usuário@máquina .
Exemplo: $ write fulano <ENTER> $Message from sicrano on...
Sicrano esta' lendo esta linha. Sicrano esta’ lendo esta linha.
E continuará lendo outras ate' E continuara’ lendo outras ate’
que fulano digite: que fulano digite:
^D
$Message from fulano on... $write sicrano <ENTER>
Mensagem recebida. Mensagem recebida.
Para de perturbar! Para de pertubarl
^D
MESG
Nome: mesg - desabilita ou habilita a recepção de mensagens através dos
comandos write e talk .
Sinopse: mesg [n] [y]
Descrição: o comando mesg permite ao usuário configurar se quer ou não receber
mensagens de outros usuários enviadas através do comando write , ou
pedidos de conexão com o comando talk . O comando sem parâmetros
apresenta o estado de aptidão do terminal corrente.
Opções: • y (yes) habilita a recepção de mensagens de outros usuários.
• n (no) desabilita a recepção de mensagens.
Exemplo: $ mesg
is y
$ mesg n
$ mesg
is n
TALK
Nome: talk - permite a comunicação interativa entre dois usuários.
Sinopse: talk usuário [tty]
Descrição: o comando talk é bem mais elaborado que o comando write. Quando o
usuário invoca o comando talk a fim de se conectar com outro usuário, o
talk se comunica com um processo servidor (daemon) chamado talkd o
qual se encarrega de avisar ao usuário destino que alguém esta querendo
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
45
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
estabelecer uma conexão, Mensagens e avisos sonoros são enviados ao
terminal do usuário destino. Para estabelecer a conexão, o usuário destino
invoca o comando talk passando como parâmetro o nome do usuário que
esta solicitando a comunicação. Este nome é obtido na mensagem emitida
pelo servidor talkd. Assim como o write, o talk permite uma conversação
entre usuários em máquinas diferentes, desde que o parâmetro usuário
contenha também a identificação da máquina.
Exemplo : $ who
ana
fabio
ttyp1
ttyp3
Jun
Jun
17
17
21:05
20:53
$ talk fabio@ttyp3 Message from Talk_Daemon
talk: connection request by ana@ttyp1
talk: respond with: talk ana@ttyp1
$ talk ana@ttyp1 <ENTER>
[Connection Established]
Oi, estou com algumas
duvidas. Podes me ajudar?
[Connection Established]
Tudo bem. Vou ate” ai' Ana...
Tudo bem. Vou ate’ ai' Ana...
Oi, estou com algumas dúvidas.
Podes me ajudar?
MAIL
Nome: Mail - Utilitário que permite receber, selecionar, consultar, enviar e manter
mensagens de mail.
Sinopse: Mail [usuário]
Descrição: o utilitário Mail ou mailx é um dos recursos mais utilizados no sistema
UNIX para troca de mensagens entre usuários. Existem outros utilitários,
como o mail , que é mais limitado que não será abordado.
Este utilitário permite ENVIAR mail para outros usuários, estando eles
conectados ou não ao sistema. Os procedimentos para utilizar este utilitário
são:
$ Mail usuário (onde usuário é o endereço de e-mail do destinatário)
Subject: informe o assunto da mensagem e pressione <ENTER>.
[sem prompt] a partir daqui escreva o corpo da sua mensagem e então
pressione <ENTER> para mover o cursor para o início da
próxima linha.
Pressione CTRL D para finalizar a mensagem.
Cc: usuários para quem se deseja enviar cópias da mensagem.
Se for mais de um usuário, separar os nomes com espaço
ou vírgula.
Quando concluir pressionar <ENTER>
$. lndica que a mensagem foi enviada com sucesso.
Para LER os e-mails o procedimento é:
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
46
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
$ Mail
Mail $Revision: 4.2.4.2 $ Type ? for help.
“usr/spoll/mail/marcelo”: 3 messages 3 new
U 1 ricardo Wed Feb 9 13:40 11/190 “Não se esqueça da Festa”
>N 2 marcelo Wed Feb 9 17:35 11/302 “Trabalho de Unix”
N 3 ricardo Thu Feb 13 13:40 11/234 “Comentários sobre a Festa”
?
Onde:
N indica que a mensagem é nova, isto é, não foi lida antes.
U indica que a mensagem não foi lida anteriormente, mas cabeçalho da
mensagem no menu em consulta anterior.
> aponta para a mensagem corrente no menu.
Comandos COMUNS que podem ser usados:
?, help lista de comandos que podem ser utilizados
q , CTRL D finaliza o mail.
<ENTER> exibe a mensagem corrente
n, + exibe a próxima mensagem
- exibe a mensagem anterior
número exibe a mensagem associada ao número informado.
d número(s) deleta a(s) mensagem(ns) especificada(s)
Exemplo: $ Mail alexandre adriano jorge
Subject: Conclusão do Trabalho <ENTER>
Precisamos concluir o trabalho ainda esta semana porque a apresentação
está marcada para o final do mês.
<ENTER>
^ D
Cc: eduardo <ENTER>
$
SG SISTEMAS DE AUTOMAÇÃO LTDA.
LINUX
47
Rua São João, 1759 – Zona 07 – Maringá – PR
Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br
19 PROGRAMAÇÃO DO SHELL
O Shell é um interpretador de comandos. Quando desejar executar muitas vezes
uma série de comandos, é conveniente salvar estes comandos em um programa shell e
executar os comandos invocando o script shell.
REFERÊNCIAS BIBLIOGRÁFICAS
http://www.linux.org - Home page da Linux Organization, site oficial do Linux
http://sunsite.unc.edu/mdw/linux.html - Site com projeto de documentação do Linux em
Inglês
http://www.conectiva.com.br/cpub/pt/principal/index.php- Site da Conectiva
http://br.tldp.org/documentos/livros/html/gas/ - Guia do administrador de sistemas em
português
http://www.ciagri.usp.br/linux.html - Linux Page do projeto CIAGRI da USP
http://www.linuxsecurity.com.br/article.php?sid=961 - Linux Security Brasil
http://tux.cprm.net/.disk2/www.poli.org/rh/indice.html - Manual de Instalação do Red Hat
da Poli – USP