FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
Fundamentos de Sistemas Operacionais
(Sistemas Abertos)
Prof.Roberson Araujo
Revisão Vrs.01 Ano 2010
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
1/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
Sumário
Fundamentos de Sistemas Operacionais..............................................................................................1
(Sistemas Abertos)................................................................................................................................1
Prof.Roberson Araujo...........................................................................................................................1
Revisão Vrs.01 Ano 2010.....................................................................................................................1
1. Sistema Operacional.........................................................................................................................4
O que é um sistema operacional?....................................................................................................4
2. O que é Linux?.................................................................................................................................6
O que é Software Livre?..................................................................................................................7
Sistemas Operacionais.....................................................................................................................8
Arquitetura Geral........................................................................................................................9
Ambiente Gráfico........................................................................................................................9
Shell..........................................................................................................................................10
Comandos em Unix.....................................................................................................10
Comandos Básicos....................................................................................................................10
Manipulação de Arquivos e diretórios ..........................................................................................11
Arquivos e Árvores de Diretórios.............................................................................................11
Usuários e Segurança em Arquivos ..........................................................................................11
Permissões de acesso ................................................................................................................11
NOTA: .................................................................................................................................12
Alterando as permissões de um arquivo: chmod .....................................................................13
3. Comandos básicos do VI. Editor de terminal SSH ........................................................................13
4. Distribuições Linux........................................................................................................................15
O que é uma distribuição? O que é uma distro Linux...................................................................15
Como escolher uma distribuição....................................................................................................15
Download ou aquisição de uma distribuição de Linux..................................................................17
Live CDs: Linux sem instalação....................................................................................................17
Porque usar a Debian?...................................................................................................................18
5. Unix: Conceitos e Comandos Básicos............................................................................................19
Ligando e Desligando a Máquina .................................................................................................19
Manipulando arquivos e diretórios ...............................................................................................19
Shell Scripts ..................................................................................................................................22
Variáveis de Environment .............................................................................................................22
Uso de Metacaracteres ..................................................................................................................23
Uso de Expressões Regulares .......................................................................................................23
Manipulando processos .................................................................................................................24
Configurando o terminal ...............................................................................................................25
Diretórios Principais do Sistema ...................................................................................................26
Atributos e Nomes de Arquivos ....................................................................................................26
Intercambiando Disquetes com o MS-DOS ..................................................................................27
O Kernel.........................................................................................................................................28
Redirecionamento da Entrada e da Saída; Pipes ...........................................................................29
Comunicação Serial e Paralela .....................................................................................................29
Configuração do TCP/IP ...............................................................................................................30
Serviços TCP/IP ............................................................................................................................31
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
2/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
Disparo do Xwindows e das suas aplicações ................................................................................32
Procedimentos de boot e o init ......................................................................................................32
Referências ....................................................................................................................................34
Materiais Complementares em:.....................................................................................................34
Exercícios.......................................................................................................................................35
EXERCÍCIOS 2.............................................................................................................................37
LISTA 1.....................................................................................................................................37
LISTA 2.....................................................................................................................................37
LISTA 3.....................................................................................................................................38
LISTA 4.....................................................................................................................................38
LISTA 5.....................................................................................................................................39
LISTA 6.....................................................................................................................................39
LISTA 7.....................................................................................................................................40
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
3/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
1. Sistema Operacional
O que é um sistema operacional?
O Sistema Operacional é o conjunto de programas que fazem a interface do usuário e seus
programas com o computador. Ele é responsável pelo gerenciamento de recursos e periféricos
(como memória, discos, arquivos, impressoras, CD-ROMs, etc.), interpretação de mensagens e a
execução de programas.
No Linux o Kernel mais o conjunto de ferramentas GNU compõem o Sistema Operacional. O
kernel (que é a base principal de um sistema operacional), poderá ser construído de acordo com a
configuração do seu computador e dos periféricos que possui.
Fonte: http://focalinux.cipsga.org.br/guia/iniciante/ch-intro.htm#s-introducao-linux
Sistema operacional (como é conhecido no Brasil) é um conjunto de ferramentas necessárias para
que um computador possa ser utilizado de forma adequada.
Um SO, como também são conhecidos os Sistemas operacionais, faz o papel de intermediário entre
o aplicativo e a camada física do hardware. Esta é uma das formas de conceituar o termo sistema
operacional, como um conjunto que permite a abstração do hardware.
Desta forma, se não houvessem sistemas desse tipo, todo software desenvolvido deveria saber se
comunicar com os dispositivos de hardware do computador de que precisasse.
Quando temos um sistema operacional, é ele quem precisa saber lidar com os dispositivos, sabendo
falar com a placa de som, com a internet, com os disquetes, etc. Assim, um software que seja feito
para funcionar neste sistema não precisará de informações específicas do equipamento. Ao invés
disso, ele chamará funções do kernel e o sistema operacional é que fará a comunicação, repassando
os resultados. Cada sistema operacional pode ter uma maneira própria e distinta de comunicar-se
com o hardware, razão pela qual é comum que softwares feitos para um sistema operacional não
funcionem em outro, principalmente no caso de linguagens compiladas.
Uma outra forma de conceituar sistema operacional é como um gerenciador de recursos. É função
do SO identificar que dispositivos estão ociosos e ocupados, como por exemplo dividir o tempo de
uso da CPU entre os vários processos, alocar e gerenciar o uso de memória principal e secundária.
A definição do que constitui um sistema operacional é bastante controversa. Acadêmicos como
Andrew Tanenbaum consideram que só a parte do sistema que roda sobre modo kernel constituem o
sistema operacional e os demais softwares básicos são ferramentas de sistema. Outros no entanto
consideram os sistemas operacionais como o conjunto de kernel e ferramentas de sistema.
No início da computação os primeiros "sistemas operacionais" eram únicos, pois cada mainframe
vendido necessitava de um sistema operacional específico. Esse problema era resultado de
arquiteturas diferentes e da linguagem utilizada no caso, assembly (linguagem de baixo nível). Após
essa fase, iniciou-se a pesquisa de sistemas operacionais que automatizassem a troca de tarefas
(jobs), pois os sistemas eram mono-usuário e tinham cartões perfurados como entrada (eliminando,
assim, o trabalho de pessoas que eram contratadas apenas para trocar os cartões perfurados). Um
dos primeiros sistemas operacionais foi o CTSS, desenvolvido no MIT. Outro, que na época
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
4/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
revolucionou o conceito de sistema operacional foi o Multics, desenvolvido nos laboratórios da
AT&T. Os sistemas operacionais eram geralmente programandos em assembly, até mesmo o UNIX
em seu início. Após poucas versões, o UNIX começou a ser desenvolvido através de uma nova
linguagem (a linguagem C) e teve em seus príncipios muitas inovações do Multics. O UNIX criou
um ecosistema de versões e inovações, entre estes, destacam-se: System V e derivados - família
BSD (FreeBSD, NetBSD, OpenBSD,
Figura 1. Símbolos dos sistemas operacionais Windows, McOS, GNU/Linux
Na década de 1970, quando começaram a aparecer os computadores pessoais, houve a necessidade
de um sistema operacional de utilização mais fácil. Em 1980, William (Bill) Gates e seu colega de
faculdade, Paul Allen, fundadores da Microsoft, compram o sistema QDOS ("Quick and Dirty
Operating System") de Tim Paterson por $50.000, batizam-no de DOS (Disk Operating System) e
vendem licenças à IBM. O DOS vendeu muitas cópias, como o sistema operacional padrão para os
computadores pessoais desenvolvidos pela IBM. No começo da década de 1990, um estudante de
computação finlandês postou um comentário numa lista de discussão da Usenet dizendo que estava
desenvolvendo um kernel de sistema operacional e perguntou se alguém gostaria de auxiliá-lo na
tarefa. Este estudante chamava-se Linus Torvalds e o primeiro passo em direção ao tão conhecido
Linux foi dado naquele momento.Um sistema operacional, é um conjunto de rotinas executado pelo
processador. Sem o SO, um usuário para interagir com o computador deveria conhecer
profundamente diversos detalhes sobre o hardware do equipamento, o que tornaria seu trabalho
lento e com grandes possibilidades de erros. O objetivo de um SO é funcionar como uma interface
entre o usuário e o computador, tornando sua utilização mais rápida e segura.
Fonte: http://pt.wikipedia.org/wiki/Sistema_operacional
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
5/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
2. O que é Linux?
O Linux é um sistema operacional criado
em 1991 por Linus Torvalds na
universidade de Helsinki na Finlândia. É
um sistema Operacional de código aberto
distribuído gratuitamente pela Internet. Seu
código fonte é liberado como Free
Software (software livre) o aviso de
copyright do kernel feito por Linus
descreve detalhadamente isto e mesmo ele
não pode fechar o sistema para que seja
usado apenas comercialmente.
Isto quer dizer que você não precisa pagar
nada para usar o Linux, e não é crime fazer
cópias
para
instalar
em
outros
computadores, nós inclusive incentivamos
você a fazer isto. Ser um sistema de código
aberto pode explicar a performance,
estabilidade e velocidade em que novos
recursos são adicionados ao sistema.
Figura 2. Tux – Mascote do Linux
Para executar o Linux você precisa, no mínimo, de um computador 386 SX com 2 MB de memória
(para um kernel até a série 2.2.x) ou 4MB (para kernels 2.4 e superiores) e 40MB disponíveis em
seu disco rígido para uma instalação básica e funcional.
O sistema segue o padrão POSIX que é o mesmo usado por sistemas UNIX e suas variantes. Assim,
aprendendo o Linux você não encontrará muita dificuldade em operar um sistema do tipo UNIX,
FreeBSD, HPUX, SunOS, etc., bastando apenas aprender alguns detalhes encontrados em cada
sistema.
O código fonte aberto permite que qualquer pessoa veja como o sistema funciona (útil para
aprendizado), corrija alguma problema ou faça alguma sugestão sobre sua melhoria, esse é um dos
motivos de seu rápido crescimento, do aumento da compatibilidade de periféricos (como novas
placas sendo suportadas logo após seu lançamento) e de sua estabilidade.
Outro ponto em que ele se destaca é o suporte que oferece a placas, CDRoms e outros tipos de
dispositivos de última geração e mais antigos (a maioria deles já ultrapassados e sendo
completamente suportados pelo sistema operacional). Este é um ponto forte para empresas que
desejam manter seus micros em funcionamento e pretendem investir em avanços tecnológicos com
as máquinas que possui.
Hoje o Linux é desenvolvido por milhares de pessoas espalhadas pelo mundo, cada uma fazendo
sua contribuição ou mantendo alguma parte do kernel gratuitamente. Linus Torvalds ainda trabalha
em seu desenvolvimento e também ajuda na coordenação entre os desenvolvedores.
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
6/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
O suporte ao sistema também se destaca como sendo o mais eficiente e rápido do que qualquer
programa comercial disponível no mercado. Existem centenas de consultores especializados
espalhados ao redor do mundo. Você pode se inscrever em uma lista de discussão e relatar sua
dúvida ou alguma falha, e sua mensagem será vista por centenas de usuários na Internet e algum irá
te ajudar ou avisará as pessoas responsáveis sobre a falha encontrada para devida correção.
Fonte: http://focalinux.cipsga.org.br/guia/iniciante/ch-intro.htm#s-introducao-linux
O que é Software Livre?
Um software é considerado como livre quando atende aos quatro tipos de liberdade para os usuários
do software definidas pela Free Software Foundation:
• A liberdade para executar o programa, para qualquer propósito (liberdade nº 0);
• A liberdade de estudar como o programa funciona, e adaptá-lo para as suas necessidades
(liberdade nº 1). Acesso ao código-fonte é um pré-requisito para esta liberdade;
• A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo (liberdade nº 2);
• A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a
comunidade se beneficie (liberdade nº 3). Acesso ao código-fonte é um pré-requisito para esta
liberdade;
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
7/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
Figura 3 – GNU símbolo do software livre – Fonte: http://commons.wikimedia.org/wiki/Image:Gnu_meditate_levitate.jpg
A liberdade de executar o programa significa a liberdade para qualquer tipo de pessoa física ou
jurídica utilizar o software em qualquer tipo de sistema computacional, para qualquer tipo de
trabalho ou atividade, sem que seja necessário atender a alguma restrição imposta pelo fornecedor.
A liberdade de redistribuir deve incluir a possibilidade de se repassar os códigos-fonte bem como,
quando possível, os arquivos binários gerados da compilação desses códigos, seja em sua versão
original ou modificada. Não é necessária a autorização do autor ou do distribuidor do software para
que ele possa ser redistribuido, já que as licenças de software livre assim o permitem.
Para que seja possível estudar ou modificar o software (para uso particular ou para distribuir) é
necessário ter acesso ao código-fonte. Por isso a disponibilidade desses arquivos é pré-requisito
para a liberdade do software. Cada licença determina como será feito o fornecimento do fonte para
distribuições típicas, como é o caso de distribuições em mídia portátil somente com os códigos
binários já finalizados (sem o fonte). No caso da licença GPL, o fonte deve ser disponibilizado em
local de onde possa ser acessado, ou deve ser entregue ao usuário, se solicitado, sem custos
adicionais (exceto transporte e mídia). Para que essas liberdades sejam reais, elas devem ser
irrevogáveis. Caso o desenvolvedor do software tenha o poder de revogar a licença, o software não
é livre.
Tais liberdades não fazem referência aos custos envolvidos. É possível que um software-livre não
seja gratuito. Quando gratuito, empresas podem explorá-lo comercialmente através do serviço
envolvido (principalmente suporte). A maioria dos softwares livres é licenciada através de uma
licença de software livre, como a GNU GPL, a mais conhecida.
Sistemas Operacionais
• Criam uma interface para acesso ao hardware.
• Controle de recursos.
• Acesso a dispositivos
• Alocação/liberação de memória
• Gerenciamento de processos (O que são processos?).
• Gerenciamento de usuários.
• Gerenciamento de permissões (usuários, arquivos).
• Programas acessórios
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
8/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
Arquitetura Geral
Figura 4 – Organização em camadas do Sistema Unix. Fonte:http://www.inf.ufpr.br/danielw/grad/ci048/20081/02-GNULinux.html
Ambiente Gráfico
• Sistema de janelas e aplicativos gráficos
• GNOME, KDE, ICEWM, XFCE ...
• Múltiplos Desktops
• Principais aplicativos
• Nautilus
• Navegador (Firefox, Galeon, Epiphany, Opera ...)
• OpenOffice
• GIMP
• Gaim, Skype, Amsn
• Gedit
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
9/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
Shell
•
•
•
•
Terminal Gráfico
Responsável pela interação entre usuário e sistema operacional;
Interface com usuário é textual;
Principais tarefas:
• Exame da linha de comando;
• Programa ou Comando X Atribuição de valores:
• Substituição de metacaracteres;
• Passar a linha de comando para o kernel para que este efetivamente
providencie a execução do programa (Processos).
Comandos em Unix
• Programa = comando;
• Estrutura geral:
<nome>
<opcoes>
<argumentos>
Exemplos:
ls -l /usr/lib
date
grep -i Lili carta.txt
Opções podem ter seus próprios argumentos;
• Interpretação dos argumentos é feita pelo programa;
Comandos Básicos
ls - mostra relação dos arquivos em um diretório;
more, less - mostra conteúdo de um arquivo, com pausa;
man - mostra texto de ajuda sobre diversos comandos do sistema;
cd - muda o diretório corrente;
passwd - muda a senha de acesso ao sistema.
who - mostra os usuários utilizando a mesma servidora que você.
id - mostra informações sobre o seu User ID e os grupos aos quais pertence.
chmod - modifica as permissões de um arquivo
mkdir - cria diretórios.
rm - apaga arquivos.
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
10/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
cp - copia arquivos.
mv - move arquivos.
file - mostra o tipo de dados contidos em um arquivo.
Manipulação de Arquivos e diretórios
Arquivos e Árvores de Diretórios
• Arquivos: notação, nomes (nomes com espaços, caracteres acentuados, arquivos
ocultos, etc.)
• Caminhos absolutos e relativos
• Notação: , ,
e $HOME
• Árvore de diretórios Linux (/usr, /bin, /etc, /home, ...)
• Diretórios
Usuários e Segurança em Arquivos
Usuários em um sistema UNIX possuem uma identificação numérica única denominada UID
(User IDentification) e um nome simbólico único conhecido como Login ou Username.
Também são definidos em um sistema UNIX os chamados grupos. Cada grupo representa um
conjunto de usuários que por alguma razão possuem uma função ou atividades em comum
(por exemplo, usuários que são alunos de graduação, usuários que são os professores, etc.).
Cada grupo em um sistema UNIX possui também uma identificação numérica única
denominada GID (Group IDentification) e um nome simbólico único conhecido como Group
name ou simplesmente Grupo.
Estes conceitos são importantes para entender como um sistema UNIX controla a forma com
que arquivos podem ser acessados e o que se pode se fazer com eles uma vez acessados. Você
pode, por exemplo, desejar que o conteúdo de um determinado arquivo possa ser alterado
apenas por você que o criou. Por outro lado você pode fazer com que um outro arquivo tenha
seu conteúdo lido por qualquer usuário no sistema.
O comando id pode ser usado para se determinar a identificação completa de um usuário: seu
UID e GID.
Permissões de acesso
Quando um arquivo qualquer é criado em UNIX, ele é dito ter um Proprietário e um Grupo.
O Proprietário do arquivo corresponde ao Login do usuário que criou o arquivo. O Grupo
do arquivo corresponde ao Grupo ao qual pertence o usuário que o criou. Por exemplo, se o
usuário ci066, registrado como sendo do grupo especial cria um arquivo, dizemos que este
pertence ao Proprietário ci066 e ao Grupo especial.
O acesso a arquivos UNIX é definido através de 3 conjuntos de permissões: um conjunto para
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
11/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
Proprietário do arquivo, um conjunto para Grupo do arquivo e um conjunto para Outros
usuários.
Cada conjunto pode assumir as permissões de Leitura (representada pela letra r), Escrita
(representada pela letra w) e Execução ou Navegação (representada pela letra x).
Em se tratando de um arquivo regular, a permissão de Leitura significa que se pode ler o
conteúdo do arquivo, a permissão de Escrita significa que se pode alterar (editar) o conteúdo
do arquivo, e a permissão de Execução significa que este arquivo contém um programa ou um
script shell, podendo ser executado como um comando.
Em se tratando de um diretório, a permissão de Leitura significa que se pode ler o conteúdo
do diretório (por exemplo com ls), a permissão de Escrita significa que se pode criar ou
remover arquivos do diretório, e a permissão de Execução significa que este diretório é
navegável, isto é, pode-se navegar para ele ou através dele com comandos como cd.
NOTA:
Em UNIX, TUDO É CONSIDERADO UM ARQUIVO. Existem assim diferentes tipos de
arquivos: regulares, diretórios, links simbólicos, arquivos associados a recursos de hardware
(tais como disco, interface de rede, teclado e terminal, etc.). Assim, a permissão de Escrita em
um diretório significa alterar o arquivo que representa um diretório, o que significa
efetivamente criar e remover arquivos.
As permissões de acesso podem ser definidas a qualquer hora por chmod e podem ser
visualizadas através do comando ls usando-se a opção -l. Seja, por exemplo:
ci066@dupond
-rw-r--r-- 1
ci066@dupond
-rw-r-x--- 1
ci066@dupond
drwxr-xr-- 1
$ ls -l teste.c
ci066 especial 2331 Mai 30 11:36 teste.c
$ ls -l a.out
ci066 especial 2331 Mai 30 11:36 a.out
$ ls -ld LabNum2
ci066 especial 2331 Mai 30 11:36 LabNum2
No exemplo acima, o arquivo teste.c possui permissão de Leitura e Escrita para o
Proprietário do arquivo (usuário ci066), apenas permissão de Leitura para usuários do Grupo
do arquivo (grupo especial), e apenas permissão de Leitura para Outros usuários.
Ainda no exemplo acima, o arquivo a.out possui permissão de Leitura e Execução para
Proprietário e Grupo, Escrita apenas para Proprietário, e NENHUMA permissão para Outros
usuários. Assim, a.out pode ser executado como um comando apenas pelo usuário ci066 e
por usuários do grupo especial.
Finalmente, todos os usuários tem permissão para listar o conteúdo do diretório LabNum2.
Por outro lado, apenas o usuário ci066 e os usuários do grupo especial tem permissão para
navegar para ou através deste diretório. Somente o usuário ci066 tem permissão para criar
arquivos dentro do diretório.
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
12/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
Alterando as permissões de um arquivo: chmod
Para alterar as permissões com chmod pode ser usado um Modo (notação octal) ou notação
simbólica ([augo][+-=][rwx]) para especificar a mudança de permissões:
chmod u=rwx,g=rx,o=r teste.c
chmod ug=rw,o=r teste.c
chmod u+r,go+r,go-wx teste.c
3. Comandos básicos do VI. Editor de terminal SSH
Em uma distribuição linux/unix, uma ótima opção de editor de texto é o vi. O vi é um editor de
texto, que aparentemente é muito simples, porém oferece ótimos recursos. Abaixo encontra-se uma
lista contendo alguns comandos básicos do vi.
Para iniciar o vi, basta digitar no terminal: vi
Para abrir ou criar um arquivo, basta digitar no terminal: vi
Comandos:
Observacao:
Para passar para o modo comando pressione ESC.
Comandos basicos de insercao de texto:
i Insere texto antes do cursor
a Insere texto depois do cursor
r Insere texto no início da linha onde se encontra o cursor
A Insere texto no final da linha onde se encontra o cursor
o Adiciona linha abaixo da linha atual
O Adiciona linha acima da linha atual
Ctrl + h Apaga o ultimo caracter
Comandos basicos de movimentacao:
Ctrl+f Move o cursor para a proxima tela
Ctrl+b Move o cursor para a tela anterior
H Move o cursor para a primeira linha da tela
M Move o cursor para o meio da tela
L Move o cursor para a ultima linha da tela
h Move o cursor um caracter a esquerda
j Move o cursor para a proxima linha
k Move o cursor para linha anterior
l Move o cursor um caracter a direita
w Move o cursor para o inicio da proxima palavra (Ignora a pontuacao)
W Move o cursor para o inicio da proxima palavra (Nao ignora a pontuacao)
b Move o cursor para o inicio da palavra anterior (Ignora a pontuacao)
B Move o cursor para o inicio da palavra anterior (Nao ignora a pontuacao
0 Move o cursor para o inicio da linha atual
^ Move o cursor para o primeiro caracter nao branco da linha atual
$ Move o cursor para o final da linha atual
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
13/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
nG Move o cursor para a linha n
G Move o cursor para a ultima linha do arquivo
Comandos basicos para localizar texto:
/palavra Busca pela palavra ou caracter em todo o texto
?palavra Move o cursor para a ocorrencia anterior da palavra
n Repete o ultimo comando / ou ?
N Repete o ultimo comando / ou ? , na direcao reversa
Ctrl+g Mostra o nome do arquivo, o numero da linha corrente e o total de linhas
Comandos basicos para alteracao de texto:
x Deleta o caracter que esta sob o cursor
dw Deleta a palavra, da posicao atual do cursor ate o final
dd Deleta a linha atual
D Deleta a linha a partir da posicao atual do cursor ate o final
rx Substitui o caracter sob o cursor pelo especificado em x(é opcional indicar o caracter)
Rx Substitui a palavra sob o cursor pela palavra indicada em x
u Desfaz a ultima modificacao
U Desfaz todas as modificacoes feitas na linha atual
J Une a linha corrente a proxima
s:/palavra1/palavra2 Substitui a primeira ocorrencia de “palavra1″ por “palavra2″
:wq Salva o arquivo e sai do editor
:e! Atualiza o arquivo aberto
:w nome_do_arquivo Salva o arquivo corrente com o nome especificado
:w! nome_do_arquivo Salva o arquivo corrente no arquivo especificado
:q Sai do editor
:q! Sai do editor sem salvar as alteracoes realizadas
fonte: http://www.primeirospassos.org/sessao3_4.html
RESUMO BÁSICO:
Editando um arquivo no Vi:
vi FILENAME
Escolhendo um dos modos do Vi:
normal mode: <ESC>
edit mode: i or a
Saíndo do Vi (volte para normal mode <ESC>):
Exit Vi: :q
Exit Vi (ignore changes): :q!
Save: :w
Save and Exit: :wq
Precisa de mais ajuda?
:help topic
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
14/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
4. Distribuições Linux
O que é uma distribuição? O que é uma distro Linux
Distribuição é um sistema operacional Unix-like incluindo o kernel Linux e outros softwares de
aplicação, formando um conjunto. Distribuições (ou “distros”) mantidas por organizações
comerciais, como a Red Hat, Ubuntu, SUSE e Mandriva, bem como projetos comunitários como
Debian e Gentoo montam e testam seus conjuntos de software antes de disponibilizá-los ao público.
Como o Linux e a maior parte dos softwares incluídos em distribuições são livres, qualquer
organização ou indivíduo suficientemente motivado podem criar e disponibilizar (comercialmente
ou não) a sua própria distribuição. Isso faz com que hoje haja registro de mais de 300 distribuições
ativamente mantidas, embora menos de 20 delas sejam largamente conhecidas.
Algumas distribuições populares oferecem (como opção ou como seu único modo de operação) a
possibilidade de execução em modo Live CD, que permite o uso integral do Linux sem instalação
ou alteração dos dados armazenados no disco rígido do computador: o sistema roda integralmente a
partir de um CD-ROM desde o momento em que o computador é ligado. Exemplos de Live CDs
bastante conhecidos são o alemão Knoppix e o brasileiro Kurumin.
Como escolher uma distribuição
Você pode obter o Linux de diversas origens. Nunca opte por uma versão antiga – é comum
encontrar usuários novos com dificuldades típicas de 2 anos atrás (“O Linux não reconhece meu
hardware”, “Não consigo discar para a Internet”) justamente porque instalaram uma versão de 2
anos atrás, que estava guardada num armário.
O Linux evolui muito rapidamente, e os principais distribuidores tendem a lançar versões novas a
cada 3 ou 4 meses, ou pelo menos semestralmente. Como em geral você pode obter o software
gratuitamente ou a custo baixíssimo, não faz sentido optar pela versão antiga – espere mais alguns
dias, e instale a mais recente.
Outro erro a ser evitado é optar por uma mini-distribuição, “para ver como é esse tal Linux“. De
fato, existem mini-distribuições de boa qualidade, que podem ser instaladas na mesma partição que
o Windows, e cujo download pode ser bem menor do que uma distribuição completa. Mas em geral
o que você pode fazer com ela é limitado, e o suporte que você encontra na comunidade usuária é
mais restrito, porque são raros os usuários experientes (portanto aptos a responder perguntas) que
utilizam esse tipo de sistema.
Não vou indicar uma distribuição para você – todas têm vantagens e desvantagens. Cada caso é um
caso, e eu opto entre elas de acordo com a necessidade do momento. Para saber as características de
cada uma, você pode pesquisar nos artigos do BR-Linux, ou consultar os sites de cada uma delas.
Segue uma lista parcial de distribuições de Linux para facilitar sua escolha:
•
•
•
•
•
•
Conectiva (braço brasileiro da Mandriva)
Kurumin (brasileira)
Debian BR CDD (brasileira)
Debian
Fedora
Gentoo
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
15/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
•
•
•
•
•
•
•
Knoppix
Mandriva
Red Hat
Slackware
SUSE
Ubuntu
Yellow Dog Linux (para Mac)
Em geral, você pode encontrar grupos de usuários brasileiros de cada uma destas distribuições de
Linux digitando no Google o nome dela, seguido pela palavra Brasil, como no exemplo: Ubuntu
Brasil. Para saber mais detalhes sobre distribuições populares, visite o Distrowatch.
Não é possível responder de forma ampla qual é a melhor distribuição de Linux – a melhor sempre
será a que atender mais perfeitamente às suas necessidades. A resposta depende do que você
pretende fazer com o sistema, da sua capacidade e interesse de administrar o sistema, e até mesmo
de sua atitude em relação a algumas questões políticas e filosóficas.
A maior parte das distribuições de Linux consegue disponibilizar o mesmo conjunto de serviços,
embora às vezes de maneiras bem diferentes. Algumas já vêm com todos os aplicativos e serviços
incluídos nos CDs de instalação, outras exigem downloads e instalações adicionais. Algumas se
distinguem por uma ênfase em aspectos específicos do sistema, como a facilidade de configuração,
a quantidade de aplicativos, a segurança, a personalização e vários outros.
No site LWN.net você pode encontrar uma lista atualizada e dividida em categorias das
distribuições de Linux, das mais conhecidas às mais obscuras. Já no LinuxISO.org você encontra
links para download de imagens de CD da maior parte delas. E já que são tantas as opções, como
escolher uma? O primeiro passo é saber o que recomendam as pessoas a quem você pretende pedir
ajuda na hora das dificuldades. Sejam os colegas, ou um grupo de usuários, ou até mesmo um
website ou revista, tente descobrir o que eles usam – se a distribuição indicada satisfizer os seus
requisitos, poder contar com o suporte deles pode ser interessante.
Em seguida, faça uma lista de perguntas sobre os diversos aspectos que podem ser do seu interesse
na hora de selecionar uma distribuição. É claro que eles variam de acordo com seu objetivo:
selecionar uma distribuição “para ver qual é a cara desse tal de Linux” no seu micro pessoal é bem
diferente do que escolher onde rodar o banco de dados do CRM de uma empresa com 1000
funcionários. Algumas perguntas que você deve tentar responder com a ajuda dos websites das
distribuições, das revistas especializadas, da comunidade Linux e (por que não?) com uma
mãozinha do Google são:
•
•
•
•
•
•
•
•
•
Esta distribuição suporta todo o meu hardware?
Ela inclui os pacotes de software de que necessito?
O processo de instalação e configuração está de acordo com minhas aptidões?
Ela tem documentação e treinamento em um idioma que eu entendo?
O suporte prestado (gratuito ou pago) atende minhas necessidades?
Há uma comunidade de usuários da qual eu possa participar?
Ela lança atualizações de segurança quando necessário?
Ela continuará sendo atualizada?
Ela é livre? É grátis? O preço é aceitável?
Sob um conjunto de critérios objetivos, todas as distribuições podem competir em pé de igualdade,
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
16/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
e você pode selecionar a que pontuar melhor nos critérios que fizerem mais sentido para a sua
situação específica. Procure as informações, conte os pontos e faça sua escolha!
Download ou aquisição de uma distribuição de Linux
Embora provavelmente a forma mais fácil de obter o Linux seja através dos CDs distribuídos como
brinde em diversas revistas nacionais (escolha sempre uma versão recente!), o jeito mais fácil de
obter sua cópia sem desembolsar nada a mais é através do download de imagens ISO, que são
arquivos (geralmente por volta de 650MB cada um) trazendo o conteúdo completo de um CDROM, prontos para serem gravados em um CD, permitindo assim que você obtenha cópias idênticas
de um CD original. Verifique na ajuda do seu programa favorito de gravação de CDs como fazer
para gravar a partir de uma imagem ISO – quase todos os programas populares dispõem deste
recurso, e a operação em geral é simples.
Algumas distribuições (como o Knoppix e o brasileiro Kurumin) são especialmente
disponibilizadas na forma de Live CDs, capazes de rodar diretamente do CD e dispensando
instalação no disco de seu computador – é uma boa forma de ter seu primeiro contato.
Como o Linux é um software livre, a maior parte dos produtores disponibiliza imagens ISO
contendo exatamente o mesmo conteúdo dos CDs vendidos em lojas ou na Internet, e você pode
fazer o que quiser com elas – até mesmo gravar em CDs para revendê-las (e se você quiser comprar
CDs deste tipo, lojas virtuais brasileiras como a Tempo Real e a LinuxMall estão à disposição).
Quando se trata de Linux, este tipo de cópia e revenda não é irregular nem anti-ético, pois é da
essência do software livre.
Você pode procurar suas imagens ISO no site de sua distribuição preferida – às vezes será
necessário fazer o download de mais do que uma imagem, e em outros casos o download da
primeira imagem é obrigatório, e o das outras é opcional. Raras são as distribuições que não
disponibilizam imagens ISO de instalação.
Se preferir, procure no site linuxiso.org, cuja especialidade é apontar links para imagens ISO dos
CDs das distribuições de Linux do mundo todo.
Como se trata de um download grande (uma distribuição em 3 CDs corresponde a quase 2GB de
dados), certifique-se de ter espaço suficiente no seu HD, e utilize um bom gerenciador de download.
Veja também o artigo Escolhendo, obtendo e gravando o Linux: como fazer o download ou
comprar.
Live CDs: Linux sem instalação
Algumas distribuições são especialmente disponibilizadas na forma de Live CDs, capazes de rodar
diretamente do CD e dispensando instalação no disco de seu computador – uma boa forma de ter
seu primeiro contato. É fácil encontrá-los encartados em revistas de informática nas bancas de
jornal, mas você também pode fazer o download e gravar seu próprio CD. Depois, basta certificarse de que seu micro aceita inicializar pelo drive de CD (a maior parte dos micros produzidos nos
últimos 5 anos aceita, mas às vezes é necessário alterar uma opção na BIOS – se tiver dúvida,
consulte aquele seu primo técnico!), inserir o CD no drive e ligar o computador.
Veja abaixo alguns exemplos de Live CDs. Há muitos outros, e não é difícil encontrá-los.
• Kurumin (brasileira)
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
17/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
•
•
•
•
Litrix (brasileira)
Knoppix
Mandriva (possui versão Live)
Ubuntu (possui versão live)
Porque usar a Debian?
A Debian é a distribuição que mais cresce no mundo, cada versão é somente lançada após
rigorosos testes de segurança e correção de falhas fazendo desta a mais segura e confiável dentre
todas as outras distribuições Linux. É reconhecida como a mais segura, maior e atualizada mais
freqüentemente entre as outras distribuições Linux, além de ser a única sem fins comerciais.
É a única que adota o estilo de desenvolvimento aberto e não é mantida por uma empresa comercial
(note que o endereço do WebSite da Debian termina com .org), ao invés disso é mantida por
programadores, hackers e especialistas de segurança espalhados ao redor do mundo, seguindo o
estilo de desenvolvimento do Linux. Possui suporte a mais de 10 arquiteturas e 15 sub-arquiteturas
(entre elas, Intel x86, Alpha, VMS, Sparc, Macintosh (m68k), Power Pc, ARM, etc).
Suas atualizações são constantes e não é necessário adquirir um novo CD para fazer upgrades. Meu
sistema é atualizado semanalmente e de forma segura através de 2 simples comandos. Veja apt,
Seção 20.2 as instruções de como fazer isto.
Cada pacote da distribuição é mantida por uma pessoa, o que garante uma boa qualidade,
implementações de novos recursos e rápida correção de falhas. Qualquer pessoa com bons
conhecimentos no sistema e inglês pode se tornar um Debian Developer, para detalhes consulte a
lista de discussão debian-user-portuguese (veja Listas de discussão, Seção 31.12.2) ou veja a página
oficial da Debian: http://www.debian.org/.
A distribuição apresenta compatibilidade com outros sistemas a partir da instalação até a seleção de
programas e execução do sistema, sua instalação está até mesmo disponível desde computadores
386 que utilizam unidades de disquetes de 5 1/4 polegadas até para computadores UDMA66 e com
CD-ROM inicializável.
É a distribuição mais indicada para uso em servidores devido ao seu desempenho, segurança e
programas úteis de gerenciamento e monitoração da rede, recomendados por especialistas que
participam de seu desenvolvimento.
Não existem versões separadas da Debian para servidores, uso pessoal, etc, ao invés disso a
distribuição usa perfis de usuário (dependendo da função do usuário) e perfis de computador
(dependendo do que deseja fazer), podendo ser selecionado mais de um perfil de
usuário/computador.
Os perfis selecionam automaticamente os pacotes mais úteis para a instalação. Os pacotes existentes
em cada perfil foram escolhidos através de debates entre usuários que trabalham ativamente naquela
área, resultando em uma seleção de pacotes de alta produtividade.
Para os usuários avançados e exigentes, também é possível selecionar os pacotes individualmente
via dselect, o que resultará em uma instalação somente com pacotes úteis e melhor configurada.
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
18/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
5. Unix: Conceitos e Comandos Básicos
Ligando e Desligando a Máquina
Salvo orientação específica do hardware em uso, ligar uma máquina Unix não costuma envolver
maiores detalhes do que o acionamento de um botão liga/desliga no console da máquina e uma
eventual intervenção humana logo em seguida, solicitando o boot efetivo do sistema a partir de um
menu de opções.
O boot costuma gerar uma razoável quantidade de mensagens que aparecem no console da
máquina. Normalmente elas referem-se aos diferentes estágios do reconhecimento e inicialização do
hardware. É interessante conhecê-las, não obstante, salvo contingências, podem ser ignoradas até
que surja o prompt ou a janela de login.
O desligamento é um processo mais delicado. O Unix utiliza parte da memória principal como
cache de disco, a fim de acelerar as operações de leitura e gravação de arquivos. Antes de se
desligar a máquina, é necessário assegurar que os discos estejam sincronizados com o cache, o que
é feito pelo comando sync, que deve ser precedido do encerramento de todos os processos, a fim de
que não ocorra uma dessincronização em seguida. Todos esses passos são tomados pelo comando
shutdown:
$ shutdown -y -g 1 -i 5
$ shutdown -h now
(Solaris)
(Linux)
Em sistemas baseados em PC, o shutdown por vezes é acionável através do ctrl-alt-del.
Manipulando arquivos e diretórios
O shell é o programa que lê e executa os comandos que você passa a digitar logo após logar no
sistema, como cd ou ls. Via de regra você estará usando o Bourne shell (sh), ou o C shell (csh), ou
aperfeiçoamentos desses, como o Korn shell (ksh) ou o Bourne again shell (bash). Via de regra
você poderá descobrir qual deles está usando ao executar um ps ou um finger com o seu username
com argumento.
Obsoleta ou não, a interface de linha de comandos possui características ainda não suficientemente
reproduzidas nas interfaces gráficas, como a possibilidade de uso remoto com baixa banda, e a
programabilidade. No caso do Unix, há ainda a vantagem dela estar melhor estandardizada que as
interfaces gráficas. Em boa parte dessas notas estaremos nos referindo à interface de linha de
comandos, mas abordaremos também a interface gráfica ao final. Vejamos alguns típicos comandos
dos sistemas Unix-like:
•
cat [-r] arquivo1 arquivo2 ...
Concatena os vários arquivos, na ordem especificada, copiando o resultado para a saída
padrão. Se não houver argumentos, copia a entrada padrão para a saída padrão.
•
cd diretório
Troca o diretório corrente para o diretório especificado, ou para o diretório home, se não
houver argumento.
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
19/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
•
cp [-r] argumento1 argumento2 ...
Copia um ou mais arquivos, trocando seu nome ou criando a cópia num outro diretório,
conforme a quantidade e o tipo dos argumentos. Se o primeiro argumento for um diretório,
faz uma cópia recursiva de toda a subárvore iniciada nele, desde que a opção -r (recursive)
tiver sido especificada.
•
chmod nnn argumento1 argumento2 ...
Troca os atributos do(s) argumento(s) para nnn (veja atributos de arquivos). Ao invés de
nnn, a alteração pode ser especificada por exemplo como a+r ou g-w (a, g e o significam
all, group e owner; + significa adicionar e - remover; r,w, x e s indicam respectivamente
atributos de leitura, escrita, execução e setuid).
•
ls [-la] diretório1 diretório2 ...
Lista o conteúdo do(s) diretório(s) especificado(s), ou do diretório corrente se não houver
argumento. Opções principais:
-a Inclui arquivos com nome iniciado por ``.'' (tais arquivos normalmente armazenam
configurações de aplicativos).
-l Formato longo (veja atributos de arquivos).
•
ln -s argumento1 argumento2
Cria um link simbólico cujo nome é o primeiro argumento, apontando para o segundo
argumento. A opção -s não pode ser omitida, ou o link criado será um hard link, ao invés de
simbólico.
•
man [-k] nome
Invoca a man-page associada ao nome, ou exibe uma lista das man pages associadas ao
nome, no caso da opção -k (de key) ter sido especificada.
As man pages Unix são referências técnicas sumárias por vezes difíceis de compreender.
Elas são exibidas através do more ou de algum outro paginador semelhante, por isso os
comandos do more indicados mais adiante valem para a leitura de man pages, e são úteis
para ajudar a localizar informações dentro de uma man page.
As man pages são divididas em seções, que tradicionalmente são referidas através de
parênteses. Por exemplo, a man page shutdown(2) é a man page do system call chamado
shutdown, ao passo que a man page shutdown(8) é a man page do comando administrativo
shutdown. Além dessas, a seção 1 contém manuais de comandos comuns, a 3 contém
manuais de serviços de bibliotecas, a 4 descreve device special files, a 5 descreve formatos
de arquivos de configuração, a 6 os jogos eventualmente instalados, e a 7 contém tudo o
mais que não couber nas anteriores.
•
mkdir diretório1 diretório2 ...
Cria os diretório(s) especificado(s).
•
more arquivo
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
20/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
Exibe de forma paginada o arquivo especificado, ou a entrada padrão no caso de não haver
argumento. Aceita vários comandos, entre eles
ESPAÇO, C-b
Avança/recua uma página.
/
Busca.
?
Exibe relação de comandos.
•
mv argumento1 argumento2
Renomeia o primeiro argumento, que pode ser um arquivo ou um diretório, para o nome
dado como segundo argumento. Se ao tentar executar esse comando a mensagem de erro
cannot move across filesystems for exibida, é porque a origem e o destino estão em
filesystems diferentes. Nesse caso deve-se copiar a origem para o destino usando cp, e
depois remover a origem com rm.
•
rm [-r] argumento1 argumento2 ...
Remove os arquivo(s) especificado(s). Se um argumento for um diretório, remove toda a
subárvore iniciada nele, desde que a opção -r (recursive) tenha sido especificada. Via de
regra não há modo em sistemas Unix-like de recuperar (undelete) um arquivo removido.
•
rmdir diretório1 diretório2 ...
Remove os diretório(s) especificado(s), desde que estejam vazios.
•
vi arquivo
O vi é uma ferramenta obsoleta, mas está está presente em virtualmente qualquerr
plataforma Unix-like, e constitui por vezes a única alternativa para edição de arquivos, por
isso convém conhecê-lo ao menos de forma minimal. No uso quotidiano, entretanto,
normalmente preferir-se-á outras ferramentas, como o emacs ou o pico ou outras.
h, j, k, l cursor para esquerda/baixo/cima/direita.
C-f,C-b Página seguinte/anterior.
x,X
Remove caracter atual/anterior.
[n]dd
Remove n linhas (default 1).
i,ESC
Entra/sai do modo inserção.
a,A
Insere após caracter atual/final da linha.
J
Concatena linha seguinte à atual.
:
entra comando, entre eles w (salva), q (sair) e / (busca).
•
wc arquivo1 arquivo2 ...
Obtém o total de linhas, palavras e caracteres de cada um dos arquivos estipulados, ou da
entrada padrão no caso de não haver argumentos.
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
21/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
Shell Scripts
Seqüências de comandos que se necessita repetir com grande frqüência podem ser colocados num
arquivo que, ao ser ``executado'', ocasiona o disparo de cada um dos comandos da seqüência, na
ordem indicada. Um arquivo desses é um shell script, cujo equivalente no MS-DOS são os arquivos
``.BAT''.
Mesmo que nunca se escreva nenhum, com certa freqüência é necessário analisar shell scripts a fim
de elucidar o modo de uso de determinados comandos, ou de realizar diagnósticos. Suponhamos por
exemplo que você não se lembre como usar um comando chamado xpatgen, mas esteja com um
shell num diretório que contém scripts, que usam entre outros o xpatgen. Basta então buscar
ocorrências dele nos scripts:
$ grep xpatgen *
patgen: xpatgen -cal_bl
Com isso sabemos que o script patgen executa o xpatgen, e relembramos o modo de executar esse
comando, o que talvez já seja suficiente para a necessidade do momento.
Shell scripts utilizam com freqüência de variáveis de environment e de parâmetros de linha de
comando. Assim, se ao analisar um script você se deparar com algo como $HOST, lembre-se de
que nesse ponto será substituído o valor da variável HOST, e que $1 significa o primeiro
parâmetro da linha de comandos, $2 o segundo, e assim por diante.
Variáveis de Environment
Além dos parâmetros de linha de comandos como -l ou outros, pode-se também passar parâmetros a
um programa através do uso de variáveis de environment. As mais comuns são:
• PATH - Lista os diretórios (separados por ``:'') onde os executáveis serão procurados,
tipicamente /bin, /usr/bin e /usr/X11/bin, entre outros.
• TERM - Tipo do terminal, por exemplo xterm ou vt100 (veja Configurando o Terminal).
• DISPLAY - Display default para as aplicações Xwindows.
Para exibir o valor de uma delas pode-se usar echo, antepondo o operador $ ao nome da variável,
por exemplo:
$ echo $TERM
Existem dois estilos de atribuição de valores a variáveis de environment, o do Bourne shell, usado
pelo sh, ksh e bash:
$ TERM=vt100; export TERM
e o do C shell, usado pelo csh e pelo tcsh:
% setenv TERM vt100
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
22/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
Uso de Metacaracteres
O metacaracter mais utilizado provavelmente é o ``*''. Por exemplo,
$ rm *
irá remover todos os arquivos do diretório corrente. É necessário prestar atenção a dois detalhes
quando se usa metacaracteres:
1. O caracter ``.'' não tem o significado de separador entre nome e sufixo que possui no MSDOS, por isso ``*.*'' significa todos os arquivos em cujo nome ocorre ao menos um ponto.
2. A expansão do metacaracter é feita pelo shell, e não pela aplicação, por isso o comando
$ mv *.txt *.bak
não irá surtir o efeito esperado de renomear todos os arquivos que terminam com ``.txt'' para
``.bak'' (para essa operação deve-se usar o comando for).
Os shells Unix aceitam também o metacaracter ``?'', que significa qualquer caracter e tambem
intervalos, como [0-9] (qualquer dígito decimal), entre outros.
Uso de Expressões Regulares
Aplicativos Unix via de regra aceitam expressões regulares como argumentos de busca. Os usos
mais freqüentes delas são bem ilustrados através do aplicativo grep. Nos casos abaixo ele será
utilizado para buscar uma dada expressão em todos os arquivos do diretório corrente:
1. Busca de ocorrências de algum dos anos da década de 80:
$ grep "198[0-9]" *
2. Busca de uma ocorrência da palavra "yellow" seguida de uma ocorrência da palavra "page",
separadas por zero ou mais caracteres quaisquer:
$ grep -i "yellow.*page" *
3. Busca de uma das palavras "roget" ou "thesaurus":
$ grep -i "roget\|thesaurus" *
A sintaxe das expressões regulares pode variar um pouco, dependendo da plataforma e da
ferramenta. Via de regra as diferenças consistem em proteger-se ou não alguns caracteres especiais,
e nas extensões que algumas ferramentas introduzem. Note por exemplo, o uso do egrep, em
comparação com o uso do grep acima:
$ egrep -i "roget|thesaurus" *
Via de regra todas as ferramentas Unix que lidam com texto, como o more, o sed, e o vi, entre
outros, aceitam expressões regulares como argumento de buscas.
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
23/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
Manipulando processos
Um processo é um programa em execução. Num computador que possui apenas uma cpu, na
verdade apenas um processo pode estar sendo executado em cada instante. O que se faz é executar
um processo durante uma fração fixa de segundo, congelá-lo e passar a executar um outro, e assim
por diante, criando a ilusão de simultaneidade.
Através do comando ps pode-se examinar os processos correntes. Por exemplo:
$ ps
PID TTY STAT
45 v02 S
105 v02 R
TIME COMMAND
0:00 -bash
0:00 ps
O ps em geral omite muitos processos a fim de exibir uma saída limpa. Através das opções a e x (ou
e no Solaris), pode-se exibir todos os processos correntes. O número de um processo é usado, por
exemplo quando é necessário interromper prematuramente a sua execução, através do comando kill.
A finalidade primária do comando kill não é matar um processo, mas enviar um sinal para ele. O
Unix possui diversos sinais predefinidos, como SIGHUP, SIGPIPE, SIGTERM, etc. O atendimento
a um sinal entretanto é responsabilidade do processo, ou do programador que fez o programa, e por
isso a forma com que cada processo reagirá a cada sinal poderá variar. A fim de se interromper a
execução de um processo, deve-se enviar para ele o sinal SIGKILL:
$ kill -SIGKILL 45
$ kill -9 45
As duas formas acima em geral são equivalentes (o número associado a cada sinal pode variar com
a plataforma).
O caracter ``&'' colocado ao final da linha de comandos instrui o shell para disparar o comando em
background, a fim de que se possa continuar usando o shell mesmo antes desse comando encerrar a
sua execução.
O comando nice faz com que um processo seja disparado com baixa prioridade.
$ nice gzip -9 *
O comando nohup faz com que o processo sendo disparado se torne imune ao sinal SIGHUP. Em
combinação com o &, ele permite o disparo de programas que permanecerão em execução mesmo
após o logout do usuário. Exemplos:
$ nohup gzip -9 * &
Através do comando at pode-se programar a execução de um comando para um horário
determinado. Por exemplo:
$ at now + 1 minute
ls
ctrl-d
O comando ls será dessa forma executado daqui a um minuto. Note que na linha seguinte do
comando at o que se escreve é na verdade um shell script, terminado com control-d. Ao invés de
digitá-lo, poder-se-ia lê-lo de um arquivo através do redirecionamento da entrada:
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
24/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
$ at now + 1 minute <meuscript
A execução periódica de um comando se faz através do cron, que é disparado no boot do sistema e
monitora as tabelas de execução periódica de comandos de todos os usuários (a cada usuário
corresponde uma tabela). Uma tal tabela é chamada crontab. Através dela pode-se especificar que
um comando seja executado a cada hora, ou diariamente, ou semanalmente, etc. A edição, inspeção
e remoção da crontab de um usuário é feita através do comando crontab, e opções -e, -l e -d. Cada
linha da crontab indica um comando e a periodicidade com que ele deve ser executado (minutos,
horas, dias do mês, meses e dias da semana). Por exemplo:
$ crontab -l
40 07 * * * updatedb
0 22 5 * * pagamento
0 6,12,15,18 * * * fetch
0 0 * * 6 backup
No caso a crontab contém três comandos. O updatedb deverá ser executado todos os dias às 7:40.
O comando pagamento deverá ser executado às 22:00 do dia 5 de cada mês, e o backup será
executado à zero hora de cada sábado.
Note que a crontab é um arquivo texto simples, e quando se executa o comando crontab com a
opção -e, entra-se num editor de textos para editá-la. O editor de textos utilizado normalmente será
o vi, ou aquele especificado na variável de environment EDITOR.
Configurando o terminal
O terminal pode ser um terminal no sentido estrito do termo, conectado ao computador por uma
linha serial, ou então o próprio console da máquina, ou uma aplicação como o xterm emulando um
terminal dentro do Xwindows,
A configuração do terminal é necessária para executar aplicativos como editores de texto visuais, ou
para os comandos de teclado como backspace serem corretamente reconhecidos. Essa configuração
envolve a configuração do driver do sistema, feita através do comando stty e o informe da
aplicação, normalmente feito através da variável TERM. Vejamos exemplos de situações onde uma
delas ou ambas são necessárias, e como realizá-la:
1. Ao pressionar a tecla backspace, ao invés de ser apagado o caracter anterior, surge na tela os
caracteres ``^H''. Solução:
$ stty erase ^H
2. Ao executar o more ou o vi, algumas linhas permanecem escondidas, ou o scroll comportase de forma errática. Solução: cheque quantas linhas (vamos supor: 24) e quantas colunas
(vamos supor: 80) o seu terminal/emulador possui e execute
$ stty rows 24 cols 80
3. Após o uso de alguma aplicação, os caracteres aparecem trocados ou o eco deixou de
funcionar, ou quando pressiono enter o cursor permanece na mesma linha. Tentativa de
solução:
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
25/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
$ stty sane
4. Ao tentar executar uma aplicação, a mensagem de erro terminal capability cm required, ou
Terminal type is not defined, ou Terminal type is not powerful enough, ou outra semelhante
foi exibida. Solução: cheque o tipo de terminal que você está usando ou emulando
(dificilmente será algo diferente de xterm ou vt100) e atribua para a variável de
environment TERM esse valor.
Diretórios Principais do Sistema
No Unix não há o conceito de nomes de drives, como C:, mas todos os paths partem de uma raiz
comum, o root directory ``/''. Quando a máquina possui vários discos diferentes (ou ao menos várias
partições diferentes de um mesmo disco), cada uma delas em geral corresponderá a uma subárvore
do filesystem, como /usr, /var ou ainda nomes não standard como /disco2, que são chamados de
seus pontos de montagem. O comando mount executado sem parâmetros listará os diferentes
dispositivos físicos montados (discos locais e remotos e suas partições) e a subárvore
correspondente a cada um deles. A tabela que indica todas essas montagens é o arquivo /etc/fstab.
Apesar de algumas pequenas diferenças de plataforma para plataforma, os diretórios principais do
sistema são:
/bin
Binários básicos, como sh e ls.
/sbin
Binários básicos de administração do sistema.
/etc
Arquivos de configuração do sistema e scripts de boot.
/home Os diretórios dos usuários residem aqui.
/lib
Bibliotecas básicas.
/proc
Estado corrente do sistema e dos processos.
/tmp
Arquivos temporários.
/usr
Demais binários e bibliotecas.
O termo básico aplicado acima aos diretórios /bin e /lib quer significar principalmente essenciais
para o boot e operação mínima do sistema. A separação desses elementos básicos, em contraposição
aos que são deixados no /usr, deve-se a razões práticas, principalmente para facilitar a organização
de redes de máquinas compartilhando subárvores de diretório. De fato, é comum que o diretório
/usr ao invés de estar replicado em todas as máquina da rede esteja residindo fisicamente num único
disco, e sendo compartilhado por todas as máquinas.
Atributos e Nomes de Arquivos
No Unix cada arquivo (inclusive diretórios, que são casos particulares de arquivos), conta com um
conjunto de atributos de leitura, escrita e execução, que são setáveis através do comando chmod, e
podem ser exibidos pelo comando ls -l:
$ ls -l /bin/cat
-rwxr-xr-x
1 root
root
16584 Dec 16 20:09 /bin/cat
A string -rwxr-xr-x representa os atributos do arquivo /bin/cat. O primeiro caracter (-) significa
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
26/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
que se trata de um arquivo regular, em contraposição aos diretórios (d), device special files (c) e
links simbólicos (l). Os 9 caracteres restantes informam as permissões de leitura, escrita e execução
desse arquivo relativas ao seu proprietário, ao seu grupo, e a todos os demais. O proprietário e o
grupo são informados logo à direita, e no caso são o usuário root e o grupo root.
Note que no Unix não existem os atributos de arquivo oculto ("hidden") e do sistema ("system"),
suportados no MS-DOS. Não obstante, arquivos cujo primeiro caractere é ponto (".") normalmente
são omitidos pelo ls, a não ser que se utilize a opção -a (de "all"), conforme comentamos no início.
Um atributo importantíssimo existente no Unix é o chamado setuid, através do qual um processo
adquire ao ser executado os privilégios do owner do arquivo. Isso é frequentemente utilizado por
programas que são disparados por usuários não privilegiados mas que por algum motivo necessitam
dos privilégios do superusuário, por exemplo:
$ ls -l /usr/sbin/pppd
-rwsr-xr-x 1 root
bin
104876
Apr 27
1998 /usr/sbin/pppd
Sem os privilégios de superusuário, um usuário comum não conseguiria configurar a interface ppp e
nem alterar a tabela de rotas do sistema, no momento em que se conecta ao provedor Internet.
Assim, o pppd, ao ser executado, requisitará os privilégios do owner do arquivo, que no caso é o
superusuário, e dessa forma ele poderá realizar essas operações.
No Unix via de regra são suportados nomes ``longos'' (até 64 ou às vezes até 256 caracteres), e o
``.'' não é um separador entre o nome do arquivo e sua extensão, mas um caracter como os outros.
Não obstante, a noção de ``sufixo'' é utilizada informalmente para facilitar a identificação de alguns
formatos de arquivos, por exemplo:
.tar
Archive produzido com tar
.zip
Archive comprimido produzido com zip
.Z
Arquivo comprimido com compress
.gz
Arquivo comprimido com gzip
Archives (o termo não tem correspondente em português) são concatenações de vários arquivos ou
de subárvores inteiras num único arquivo. Em Unix, tipicamente são produzidos com tar:
$ tar cvf /tmp/etc.tar /etc
$ tar tvf /tmp/etc.tar /etc
$ cd /tmp; tar xvf etc.tar
O primeiro comando irá criar o archive /tmp/etc.tar, composto por toda a subárvore /etc. O segundo
exibirá o conteúdo desse archive. O terceiro irá extrair todo o seu conteúdo dentro do diretório /tmp,
ou seja, recriará aquela mesma subárvore como uma subárvore do diretório /tmp.
Intercambiando Disquetes com o MS-DOS
Via de regra as plataformas Unix-like oferecem ferramentas para lidar com disquetes ``formatados''
no MS-DOS (ou, mais precisamente, disquetes que usam FAT). Um set de ferramentas bastante
popular é o mtools, que oferece clones das ferramentas do MS-DOS. Exemplos de uso:
$ mformat a:
$ mcopy a:relat.txt .
$ mdir a:
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
27/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
Versões recentes dessas ferramentas lidam também com o VFAT do Windows 95, que permite
nomes de arquivos ``longos''.
O intercâmbio de arquivos texto entre Unix e MS-DOS deve ser feito com cuidado. Por herança das
antigas impressoras, o fim-de-linha no MS_DOS é codificado através de dois caracteres (CR e LF),
enquanto no Unix há apenas um (o LF), além do que o final do arquivo é sinalizado no MS-DOS
por um CTRL-Z. O mcopy possui a opção -t para realizar essas conversões quando copia de ou
para disquetes.
O Kernel
O Kernel do Unix (e de virtualmente qualquer outro sistema operacional) possui um papel de que
convém ter noções, a fim de se poder compreender melhor o funcionamento do sistema, realizar
diagnósticos e procedimentos administrativos como adição de componentes de hardware. Algum
conhecimento do papel do kernel é importante também para se ter uma noção mais clara do uso de
arquivos especiais e do diretório /proc.
O Kernel ordinariamente reside no filesystem como um outro arquivo qualquer. No Linux, ele é em
geral o arquivo /vmlinuz ou /boot/vmlinuz, ou ainda /boot/vmlinuz-2.0.36. Ele é um programa,
ainda que um pouco diferente dos programas de aplicação como o /bin/ls. O kernel é carregado e
posto em execução no boot da máquina, e a sua execução somente se encerra com o shutdown.
De forma simplificada, o seu papel é num primeiro momento reconhecer o hardware e inicializar os
respectivos drivers. Em seguida ele entra num estado administrativo onde funciona como
intermediário entre as aplicações e o hardware. Por exemplo, quando uma aplicação necessita alocar
mais memória, ela solicita isso ao kernel. É o kernel que distribui o tempo de CPU aos vários
processos ativos. É ele que habitualmente realiza a entrada e saída de dados nas diferentes portas de
comunicação.
É por isso que a adição de hardware novo a uma máquina pode requerer a substituição ou ao menos
a reconfiguração do kernel. Os kernels mais recentes do Linux oferecem vários mecanismos de
configuração que os tornam sobremaneira flexíveis, a ponto de ser rara a necessidade de
substituição do kernel. Os dois mecanismos fundamentais de se configurar a operação do kernel são
a passagem de parâmetros no momento do boot (realizada pelo LILO) e a carga de módulos, feita
manualmente ou por mecanismos automáticos como o kerneld.
O diálogo entre as aplicações e o kernel realiza-se fundamentalmente através dos system calls, que
são serviços que o kernel oferece, como por exemplo read(2). Os device special files são maneiras
de se referir ao kernel os dispositivos físicos ou lógicos com que se pretende operar, por exemplo a
primeira porta serial ou a segunda unidade de fita, ou o disco principal do sistema. Neles, o
importante não é o nome, mas sim os números de dispositivo, ou mais precisamente o major e o
minor device numbers. Device special files são criados através do comando mknod, ou através de
interfaces mais amigáveis, como o comando MAKEDEV.
Os sistemas Unix-like mais recentes oferecem um outro mecanismo de comunicação com o kernel,
que é o filesystem /proc. As entradas desse filesystem são pseudo-arquivos cujo conteúdo reflete o
estado atual de inúmeras estruturas de dados internas do kernel. Assim, um programa de aplicação
passa a poder comunicar-se com o kernel através dos mecanismos ordinários de leitura e escrita de
arquivos.
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
28/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
Em muitos casos a comunicação entre as aplicações e o kernel é intermediada por bibliotecas,
principalmente a libc. Elas oferecem serviços de mais alto nível que os system calls do kernel,
tornando mais simples o trabalho de programação.
Redirecionamento da Entrada e da Saída; Pipes
Processos num sistema Unix habitualmente possuem três dispositivos de I/O ``padrões'', a ``saída
padrão'', a ``entrada padrão'' e a ``saída de erros''. O Unix permite que esses dispositivos (e outros)
sejam definidos no momento da execução, podendo escolher o console, um ``pipe'', a impressora,
um circuito virtual de rede conectando duas máquinas, uma linha física serial ou outras coisas.
Usuários de MS-DOS talvez já tenham feito coisas como
C> DIR >PRN:
para imprimir a saída de um comando. Essa sintaxe foi herdada do Unix daí a semelhança:
$ ls -l >/dev/lp1
Naturalmente tanto no MS-DOS quanto no Unix existem formas mais apropriadas para se imprimir
algo, mas no momento esse exemplo convém. Shells do estilo ``Bourne'' (sh, ksh, bash) permitem
redirecionamento da saída de erros através da seguinte sintaxe:
$ rm /bin/ls 2>/tmp/error
O ``2'' deve-se a que, internamente, a saída de erros corresponde ao descritor 2 (o 0 é a entrada
padrão e o 1 é a saída padrão).
A entrada pode ser redirecionada de forma semelhante:
$ wc </tmp/error
Os shells Unix oferecem um recurso para a ligação da saída padrão de um processo com a entrada
padrão de outro, chamado pipe:
$ ls|wc
No exemplo a saída do ls está sendo usada como entrada do wc. Note que o shell dispara os dois
processos ao mesmo tempo. Se o primeiro estiver produzindo saída numa taxa superior à que o
segundo lê, o sistema operacional paralizará o primeiro sempre que o buffer que armazena o tráfego
estiver cheio. Isso significa, por exemplo, que um pipe pode ser usado mesmo quando o volume
total da saída do primeiro processo é extraordinariamente grande, por exemplo quando se tenta
localizar informações de arquivos deletados através de um dump de todos os setores do disco.
Comunicação Serial e Paralela
O Unix apresenta as portas de comunicação seriais e paralelas na forma de arquivos especiais. Já
vimos um exemplo do seu uso no ítem Redirecionamento da Entrada e da Saída, em que fizemos a
impressão da saída de um comando.
Na comunicação entre dois computadores, utiliza-se freqüentemente portas seriais, e às vezes
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
29/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
também as paralelas. Em muitos casos, quando a distância entre os dois é grande, haverá uso de
modems, e eventualmente também de uma linha telefônica. Através de três exemplos práticos podese ter um bom panorama do uso de comunicação serial no Unix. Como os procedimentos variam
um pouco dependendo das plataformas em uso, só é possível indicá-los de forma genérica:
a) Adição de um terminal
1.
2.
3.
4.
Conectar a serial do terminal com a da máquina Unix.
Disparar no Unix a variante do getty disponível.
Logar no terminal.
Transferir arquivos se o terminal oferecer esse recurso.
b) Conexão a um sistema remoto
1.
2.
3.
4.
5.
6.
7.
Disparar algum emulador de terminal disponível.
Selecionar a serial em que o modem está conectado.
Configurar o modo de operação da serial (velocidade, bits).
Configurar o modem através de comandos AT, se necessário.
Instruir o modem para discar, com ATD
Aguardar a negociação.
Logar.
c) Estabelecimento de um link ppp
1. Executar a conexão ao sistema remoto como indicada acima.
2. Iniciar o ppp no sistema remoto.
3. Disparar o pppd localmente.
Em PCs, os conectores externos das portas seriais são conectores DB-9 ou DB-25 macho, e os das
paralelas são DB-25 fêmea.
Configuração do TCP/IP
Numa rede TCP/IP, a cada máquina está associado um número IP, que é um inteiro de 32 bits,
normalmente escrito na forma de octetos, como 192.168.0.5. A cada máquina está associado um
nome, como por exemplo marte ou pimenta.
A atribuição tanto do número quanto do nome é feita durante o processo de boot, a partir da
especificação deles feita através da edição manual de arquivos de configuração e/ou do uso de
aplicativos de gerenciamento do sistema específicos de cada plataforma.
Na verdade, o número IP não está associado à máquina, mas a uma determinada interface dela. Via
de regra, a interface envolvida é a ethernet. Tanto para exibir quanto para setar manualmente o
número IP de uma interface usa-se o comando ifconfig. Por exemplo, o comando:
$ ifconfig -a
irá listar todas as interfaces com informações de cada uma. A interface ethernet costuma chamar-se
le0 (Solaris) ou eth0 (Linux). Além do ethernet, é comum usar-se portas seriais para criar interfaces
TCP/IP, principalmente para criar links com linhas telefônicas. As placas ethernet costuma oferecer
dois ou mais tipos de conectores. Ela pode ou não descobrir automaticamente qual está em uso. Em
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
30/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
caso negativo, você deverá informá-la, o que habitualmente é feito através de um software de
configuração que acompanha a placa.
O passo seguinte é a configuração das rotas. Através delas a máquina sabe por onde enviar
datagramas a fim de que eles cheguem em seus destinos. Equivale de certa forma à sinalização do
tráfego urbano, com placas indicativas da direção a tomar para atingir cada destino (Ponte do Limão
à esquerda, ou Avenida Bandeirantes em frente, etc).
Cada rota envolve um destino, uma máscara, um gateway e uma interface. Pode-se exibir todas elas
através do comando netstat:
$ netstat -r
Destination
192.168.1.0
127.0.0.0
default
Gateway
*
*
192.168.1.1
Genmask
255.255.255.0
255.0.0.0
0.0.0.0
Iface
eth0
lo
eth0
Suponha que você deseja atingir a máquina 192.168.1.7. A aplicação da tabela de rotas indica,
através de uma operação e bit-a-bit entre 192.168.1.7 e a máscara 255.255.255.0, que deve ser
usada a primeira rota. Como não há gateway, a comunicação será feita diretamente através do
ethernet.
Se o destino agora for 200.136.35.65, as duas primeiras rotas não nos servirão (experimente aplicar
o e como no caso anterior). Portanto será usada a rota default, e como ela especifica um gateway, a
comunicação terá que ser feita através dele. Assim, toda vez que se pretender enviar alguma
informação para o 200.136.35.65, esta será enviada antes para o gateway 192.168.1.1, na esperança
de que este consiga roteá-la para o seu destino.
Serviços TCP/IP
Atualmente é comum as pessoas confundirem Internet com a teia mundial WWW, entretanto muito
antes de surgir a teia, a Internet já usava um sem-número de serviços construídos a partir dos
protocolos de transporte TCP e UDP.
Um circuito TCP entre duas máquinas equivale a um pipe duplo entre dois processos, cada um
rodando em uma das máquinas. O telnet é um típico serviço que se utiliza desse recurso, a fim de
criar sessões remotas. Pode-se exibir todas os circuitos TCP ativos através do comando netstat:
$ netstat -t
O FTP, por sua vez, cria dois circuitos, utilizando um para envio de comandos e outro de dados.
Através do uso de alguns comandos simples, permite transferir arquivos de ou para uma máquina
remota. Os principais comandos do FTP são:
asc,bin
modo de transferência texto/binário
hash
faz o display de um ``#''a cada 1kb transferido
get,put
transfere de/para a máquina remota o arquivo especificado
mget,mp
idem, múltiplos arquivos
ut
liga/desliga o modo interativo
prompt
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
31/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
Disparo do Xwindows e das suas aplicações
O disparo do X é desnecessário quando o sistema opera num runmode em que o X está
permanentemente ativo. Nesse caso, o próprio login é feito numa janela, ao invés de no console no
modo texto.
Quando for necessário disparar o X manualmente, via de regra haverá dois ou três scripts já
preparados para isso, como o startx ou o openwin. O que eles fazem basicamente é definir uma
série de parâmetros e executar o xinit, que por sua vez dispara o Xserver e o Window Manager.
Convém não perder de vista que o Xwindows é um sistema cliente-servidor. O Xserver é o
programa que conhece o hardware gráfico, é capaz de colocar o display no modo desejado, e
desenhar nele. As aplicações conectam o Xserver através de um circuito TCP (por exemplo) e
enviam a ele comandos através dos quais desenham as suas janelas e o conteúdo delas. O Window
Manager é responsável por desenhar as molduras das janelas, criar menus de aplicações, e controlar
o foco.
Assim, é natural que no disparo de cada aplicação seja necessário especificar qual é o server a ser
utilizado. Isso normalmente se faz através da opção de linha de comando -display, ou através da
variável de environment DISPLAY.
$ xterm -display 192.168.0.1:0.0
$ DISPLAY=192.168.0.1:0.0; export DISPLAY; xterm
Quando o Xserver está rodando numa máquina Unix, a permissão para um cliente usá-lo é dada
através do comando xhost:
$ xhost +192.168.1.5
$ xhost -192.168.1.5
$ xhost
(autoriza o cliente 192.168.1.5)
(desautoriza o cliente 192.168.1.5)
(lista os clientes autorizados)
Pode-se autorizar permanentemente um cliente a usar um determinado Xserver adicionando-o ao
arquivo /etc/X0.hosts (um cliente por linha).
Ao longo dos anos foram sendo criados inúmeros Window Managers diferentes para o Xwindows.
Algumas vezes além do window manager foram criadas também complexas bibliotecas oferecendo
serviços de alto nível que além de simplificar o trabalho de programação tamém permitem
estandardizar o aspecto visual e os recursos das janelas das aplicações. Um dos produtos mais
conhecidos dessa linha é o Motif. O advento do Free Software criou outras opções, sendo as mais
em voga atualmente o GTK e o QT, que são utilizados respectivamente pelo GNOME e pelo
KDE.
Procedimentos de boot e o init
O boot do Unix consiste inicialmente na carga e execução do kernel. Em seguida, é disparado o
processo init, que segue as instruções do arquivo /etc/inittab, que portanto é o ponto de partida
para tudo o que se pretenda configurar a nível de disparo de processos ao longo do boot.
O inittab não é um script como o AUTOEXEC.BAT, mas uma lista de ações, algumas delas de
valor permanente para todo o curso da operação do sistema. Cada linha válida representa um
processo que o init deve disparar. O termo respawn significa que, além de disparar, o init deverá
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
32/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
monitorar o processo e, se porventura ao longo da operação do sistema ele for encerrado, o init
deverá redispará-lo.
Via de regra as linhas do inittab referem-se ou à chamada de scripts de configuração inicial do
sistema, que são executados apenas uma vez, ou aos processos de controle de login no sistema, que
são redisparados sempre que ocorre um logout. O inittab inclui ainda o conceito de runlevel, o que
cria a flexibilidade de se poder inicializar a máquina em um de vários possíveis modos de operação.
Na prática, costuma haver três modos principais, o single-user, utilizado para manutenção, um
gráfico e um não gráfico.
Quanto aos scripts de configuração (normalmente são os arquivos e/ou diretórios /etc/rc.*,
dependendo da plataforma a mecânica de disparo deles pode ser bastante complexa. Note que cada
runlevel pode disparar ou deixar de disparar alguns scripts, a fim de estabelecer o modo de operação
desejado. Em quase todas as versões mais recentes do Linux essa mecânica segue o padrão dos
diretórios /etc/rc.d/rcN.d, onde N é cada um dos runlevels. O conteúdo desses diretórios são links
para cada um dos scripts de ativação ou desativação de serviços básicos (interfaces de rede, servidor
de email, etc), com números embutidos nos nomes dos links, a fim de definir a ordem em que
devem ser processados.
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
33/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
Referências
Virtualmente qualquer informação técnica sobre sistemas Unix-like pode ser obtida na Teia
Mundial. Estou colocando aqui apenas um referência clássica (o Livro do Bach), e um link para
uma lista de pontos de entrada de documentação sobre Linux.
[1] Bach, M. J. The Design of the Unix Operating System, Prentice-Hall, 1986.
[2] Alguns links de Linux, inclusive para materiais em português, estão disponíveis em
http://www.ime.usp.br/~ueda/ldoc/links.html .
[3] CAMPOS, Augusto. O que é uma distribuição Linux. BR-Linux. Florianópolis, março de
2006. Disponível em <http://br-linux.org/faq-distribuicao>. Consultado em [2010].
Materiais Complementares em:
1. Guia Foca Linux: http://focalinux.cipsga.org.br/
2. Projeto de Documentação do Open Office.org: http://www.openoffice.org.br/?q=docs
3. Dicas e Dúvidas do Firefox: http://br.mozdev.org/firefox/vocesabia/
4. Tutorial Linux Básico: http://www.guiadohardware.net/tutoriais/024/
5. BR-Linux : http://br-linux.org/
6. Dicas-L: http://www.dicas-l.com.br/
Este material adere ao padrão de licença em Creative Commons Atribuição não Comercial –
Compartilhamento Pela mesma Licença 2.5 Brasil, para conteúdos Iguais ou Modificados .
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
34/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
Exercícios
Quando você efetua login, o UNIX/Linux assume um determinado diretório como sendo o
diretório de trabalho inicial.
Este diretório inicial é conhecido dentro do jargão UNIX como diretório de login, diretório
home, ou simplesmente home.
ATENÇÃO: Daqui para frente, nos textos produzidos para esta disciplina, este diretório será
referenciado como home , $HOME ou ~.
1. Verificando o diretório de login. Execute o comando pwd. Ele mostra ao usuário o
diretório corrente. Imediatamente após o login, ele mostra qual é seu diretório de
login. Procure memorizar o nome deste diretório. Ele é muito importante. Outra
maneira de saber qual seu diretório <home> consiste em executar o comando echo
$HOME.
2. Monitorando sua quota. Todo usuário possui uma quota, isto é, um espaço máximo
em disco que este usuário pode ocupar com seus arquivos. O comando para verificar
este espaço utilizado e seus limites é quota.
Execute este comando com a opção -s e verifique o resultado que aparece na tela.
NOTA: No resultado apresentado pelo comando quota, a coluna blocks indica o
total de espaço em disco ocupado pelos seus arquivos. A coluna quota indica o limite
permitido. A coluna limit indica o limite de tolerância em sua quota. Enquanto o
valor da coluna blocks estiver entre os valores das colunas quota e limit, a coluna
grace mostra uma mensagem com o prazo que você tem para limpar sua área e
baixar o espaço ocupado por seu arquivos abaixo de sua quota. Durante este período
de grace, o sistema ainda deixa você criar arquivos.
Esgotado o prazo, o sistema dará sempre a mensagem de disk full ou Disk quota
exceeded sempre que você tentar criar um arquivo (via cp, emacs ou qualquer outra
forma de criação de arquivos).
3. Verificando usuários no sistema. Execute o comando who para saber quem está
compartilhando a estação com você.
4. Use o comando whoami para identificar o seu prórpio username.
5. Exibindo o conteúdo de um diretório. Execute as variantes do comando ls abaixo.
Este comando mostra o conteúdo de um diretório.
ls
ls -a
ls -l
Você consegue perceber a diferença entre os resultados da execução de cada linha de
comando acima?
6. Criando arquivos e exibindo seu conteúdo. Em seu diretório de login, crie os
arquivos fantomas, nacional_kid, incas_venusianos e macanudo usando
seu editor predileto (por exemplo, Gedit). Coloque em cada um deles qualquer texto
de sua escolha, desde que cada texto tenha pelo menos 4 linhas. Coloque textos
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
35/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
diferenciados em cada arquivo.
7. Usando cat, exiba separadamente o conteúdo de cada um dos arquivos criados no
item 6.
NOTA 1: Quando o conteúdo de um arquivo é muito extenso que não cabe todo na
tela de terminal, usa-se less ou more para exibir o conteúdo. do arquivo.
NOTA 2: Os comandos cat, less e more são usados para exibir conteúdos de
arquivos do tipo texto ou ASCII. Para exibir conteúdo de arquivos de outros tipos
outros comandos devem ser usados (por exemplo, od).
8. Criando diretórios. Usando mkdir, crie o diretório ~/teste.
9. Copiando, movendo e apagando arquivos e diretórios. Usando cp, copie o arquivo
macanudo criado no item 6 para este diretório.
DICA: cp usa pelo menos 2 argumentos: um arquivo de origem seguido de um
argumento que pode ser o nome de outro arquivo ou o nome de um diretório.
10.O comando cp (copy) cria uma cópia de um arquivo com outro nome ou copia um
arquivo de um diretório para outro. Copie fantomas para o arquivo phantomas e
liste o conteúdo do diretório após a operação. Liste também o conteúdo de
phantomas.
11.Execute cada um dos programas listados na Seção Ambiente Gráfico e procure
entender seu funcionamento.
Fonte: http://www.inf.ufpr.br/danielw/grad/ci048/20081/02-GNULinux.html
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
36/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
EXERCÍCIOS 2
LISTA 1
1.
2.
3.
4.
5.
O que é o Linux?
O que são distribuições?
Cite 4 características do Linux.
No diretório /dev, como são representados o primeiro HD, CD e disquete no Linux?
Se eu tenho um único HD com 4 partições, como essas partições são representadas no
diretório /dev do Linux?
6. O que é o KERNEL?
7. Como posso visualizar o KERNEL do meu sistema?
8. O que é o SHELL?
9. Que comando posso utilizar para saber quais processos estão rodando no sistema?
10. Qual comando completo é utilizado para finalizar um processo imediatamente?
11. Que comando é utilizado para saber a identificação do meu usuário e do meu grupo?
12. Que seqüência de teclas devo usar para acessar o terminal 4 (TTY4) do Linux?
13. Como posso saber qual usuário está logado no terminal 3 (TTY3)?
14. Como podemos saber se o usuário de um terminal qualquer é o “root” sem nenhum
comando?
15. Que comando devo usar para visualizar arquivos ocultos?
16. Qual comando é utilizado para listar arquivos detalhadamente?
17. Como faço para limpar a tela no Linux?
18. Exercícios práticos.
LISTA 2
19. Descreva a função dos diretórios abaixo:
a)
b)
c)
d)
e)
f)
g)
h)
i)
j)
/
/bin 
/dev 
/etc 
/home 
/tmp 
/lib 
/root 
/sbin 
/proc 
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
37/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
k)
/mnt 
20. Se eu digitar o nome de login e a senha para entrar no sistema Linux e ao invés de entrar no
sistema aparecer novamente na tela a palavra LOGIN, por que o usuário não consegue se
logar, o que pode estar acontecendo?
21. Cite 3 formas diferentes de sair do sistema Linux?
22. Cite 3 maneiras de desligar o Linux.
23. Cite duas formas de reiniciar o Linux.
24. Para que serve o comando man?
25. Cite o nome de dois editores de texto básicos do Linux?
26. Existe alguma forma de criar arquivos sem usar um editor de texto no Linux? Explique.
27. Se eu não consigo sair do “vi” quando estou editando um arquivo, mas desejo sair dele sem
salvar, tem como eu forçar uma saída? Explique.
28. Exercícios práticos.
LISTA 3
29. Qual a diferença entre um caminho absoluto e um caminho relativo?
30. De que maneira pode-se saber qual é o caminho completo do diretório atual?
31. De que forma eu posso remover um diretório vazio? E um diretório com conteúdo?
32. O que é o DIT?
33. Como eu faço para ir diretamente para o DIT do usuário?
34. Como faço para ir para o último diretório acessado?
35. Que comando permite visualizar de forma hierárquica o conteúdo completo de um diretório?
36. Descreva o comando completo que pode ser usado para localizar um arquivo chamado
“historia do linux” dentro de um CD, sabendo-se que o CD tem vários diretórios e eu não
tenho idéia de qual diretório está este arquivo?
37. Como eu faço para criar um diretório oculto? Dê um exemplo.
38. Descreva duas maneiras de listar o conteúdo de um diretório pausadamente quando o seu
conteúdo é muito grande e não cabe na tela.
39. Descreva uma forma de listar o conteúdo de um diretório em ordem alfabética.
40. Cite duas formas de usar vários comandos ao mesmo tempo.
41. Descreva a forma correta de enviar o resultado do comando “cal” (calendário) para dentro
de um arquivo chamado “teste”. E como enviar o resultado do comando “ls” para este
arquivo “teste”, sem apagar o calendário.
42. Exercícios práticos.
LISTA 4
43. Qual comando usado no Linux equivale ao attrib no DOS?
44. Para limpar a tela no DOS usa-se o comando “cls”, e no Linux?
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
38/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
45. Como podemos fazer para sair do terminal 3 e acessar o “tty5”?
46. Normalmente que seqüência de teclas é utilizada para retornar a interface gráfica quando se
está trabalhando em um terminal modo texto?
47. Se digitarmos o comando “Ls” no prompt, o que deve acontecer?
48. O comando “CD” pode ser utilizado no Linux? Explique.
49. De que forma pode-se cancelar um comando?
50. Como podemos compactar um arquivo no linux chamado “arquivox”através do comando
“tar”? E de que forma podemos descompactá-lo?
51. Como podemos compactar um arquivo no linux chamado “arquivox” através do comando
“gzip”? E de que forma podemos descompactá-lo?
LISTA 5
52. Como podemos saber quantos usuários estão logados no sistema e o nome de cada um
deles?
53. Descreva a forma correta de criar uma usuária chamada “ana”.
54. Continuando a questão anterior, explique como deve ser feito para fornecer uma senha para
“ana”.
55. Cite como se faz para criar um grupo chamado “alunos”.
56. Numa empresa existem 3 usuários (jose, luis e aline), explique como deve ser feito para
inserir estes usuários num grupo chamado “adm”.
57. O que deve ser feito para saber o UID e GID do usuário?
58. Descreva a forma correta para remover o usuário jose.
59. Qual o nome do arquivo que armazena informações dos usuários? Como se faz para ver o
conteúdo deste arquivo sem usar um editor de textos?
60. Que arquivo armazena informações sobre os grupos, e como visualizamos seu conteúdo sem
um editor de textos?
61. Qual a importância do arquivo /etc/shadow?
LISTA 6
62. Como podemos ver quais são as partições que estão montadas?
63. Qual diretório é usado para montar dispositivos no Linux?
64. Os periféricos são arquivos especiais no Linux. Em que diretório os periféricos ficam
armazenados?
65. Que comando é usado para montar dispositivos no Linux?
66. Que comando é usado para desmontar dispositivo no Linux?
67. Descreva a forma correta para montar o primeiro disquete do micro no diretório
“/mnt/floppy” usando o sistema “fat”.
68. Qual o nome do gerenciador de pacotes baseado no Red Hat, usado para instalar pacotes de
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
39/40
FAEC
Fundamentos de Sistemas Operacionais – prof. Roberson Araujo
programas no Linux?
69. Se a pessoa deseja saber se um programa está instalado no linux, como ela pode visualizar
os arquivos instalados através do prompt?
70. Descreva uma forma confiável para instalar um pacote no linux com o comando rpm.
71. Como deve ser feito para remover um pacote no Linux?
72. Demonstre uma forma de verificar a integridade de um pacote instalado.
LISTA 7
73. Que comando é utilizado no Linux para listar o conteúdo de um diretório detalhadamente,
permitindo visualizar as permissões, dono e grupo de arquivos e diretórios?
74. Cite 2 maneiras diferentes para alterar permissões no Linux.
75. De que forma pode-se alterar as permissões do dono, grupo e outros de um arquivo no
prompt de comando do Linux?
76. Descreva a forma correta para alterar o dono de um arquivo chamado aula.txt através do
prompt de comando.
77. Como podemos alterar o grupo do diretório chamado “teste” no prompt de comando?
78. Se eu digito no prompt “#chmod 465 teste”, qual será a permissão do dono, do grupo e
outros em relação ao diretório “teste”?
79. Se for usada a seguinte sintaxe: #chmod 723 aula.txt. Qual será a permissão do dono, do
grupo e outros em relação ao arquivo “aula.txt”?
Prof. Roberson Araujo
fonte: Casa Brasil (Conhecimento e cidadania morando juntos)
40/40
Download

Fundamentos de Sistemas Operacionais