Baixe Introdução ao Linux: Sistema Operacional Multitarefa e Livre e outras Notas de estudo em PDF para Informática, somente na Docsity!
1 Sistema Operacional GNU/Linux^1
De maneira simples pode-se dizer que o Linux é um sistema operacional
multiusuário, multitarefa e multiprocessado, de livre distribuição, baseado no sistema
operacional UNIX - o nome Linux vem do nome de seu criador, o finlandês Linus
Torvalds. Ser multiusuário significa que várias pessoas podem utilizar o mesmo
computador ao mesmo tempo, através de conexões remotas ou de terminais.
O termo multitarefa significa que o Linux é capaz de executar diversos
programas ou serviços ao mesmo tempo. Já o termo multiprocessado se refere ao
fato de que ele pode ser instalado em máquinas com mais de um processador e é
capaz de utilizar inteligentemente esses vários processadores, obtendo o melhor
desempenho possível.
E o mais importante, é de livre distribuição, o que significa que o Linux pode ser
copiado e distribuído sem que se tenha que comprar licenças ou pagar por isso. O
código-fonte do sistema está ao alcance de quem quiser vê-los e modificá-los.
O termo Linux representa apenas o kernel do sistema. Muitos dos aplicativos
que acompanham o kernel , como compiladores e editores de texto, foram criados pela
GNU, por isso, é comum se referir ao sistema como GNU/Linux.
Embora o kernel seja uma parte importante do Linux, ele sozinho não constitui o
sistema GNU/Linux. O kernel é o “núcleo” do sistema e é responsável pelas funções
de mais baixo nível, como o gerenciamento de memória, gerenciamento de processos
e da CPU. O kernel também é o responsável pelo suporte aos sistemas de arquivos,
dispositivos e periféricos conectados ao computador, como placas SCSI, placas de
rede, de som, portas seriais, e outros.
1.0 Histórico
No ano de 1991 um dos estudantes da Universidade de Helsinki na Finlândia
chamado Linus Benedict Torvalds, na época com 21 anos, queria rodar o UNIX em
casa, mas pelo alto custo do hardware e das versões comerciais do UNIX, ele
resolveu escrever o seu próprio sistema operacional UNIX para rodar em um PC, o
Linux (junção do próprio nome do Linus com UNIX).
Após escrever o primeiro kernel (núcleo do sistema operacional) com base no
Minix
2
, ele percebeu que ele não conseguiria fazer tudo sozinho. Então para resolver o
problema, utilizou a Internet para publicar suas intenções juntamente com o código-
fonte do LINUX, convocando todos aqueles que se interessassem para juntar-se a ele.
mensagem enviada por Linus em 5 de outubro de 1991 para o grupo
comp.os.minix:
Você suspira pelos melhores dias do Minix-1.1, quando homens eram
homens e escreviam seus próprios drivers de dispositivos? Você está sem um
bom projeto e esta morrendo por colocar as mãos em um S.O. que possa ser
modificado de acordo com suas necessidades? Você está achando frustrante
quando tudo funciona no Minix? Não está atravessando noites para deixar
programas interessantes funcionando? Então esta mensagem pode ser
exatamente para você.
Como eu mencionei, há um mês atrás, estou trabalhando em uma versão
independente de um S.O. similar ao Minix para computadores AT-386. Ele
(^1) Trecho extraído da apostila Oficina II: Linux em Rede. Autores: A. Ferrasa, D. C. Foltran Jr, M. Severich – 2004. (^2) Minix: um pequeno sistema operacional UNIX desenvolvido por Andrew S. Tanenbaum,
finalmente chegou em um estágio em que pode ser utilizado (embora possa
não ser o que você esteja esperando), e eu estou disposto a colocar os fontes
para ampla distribuição. Ele está na versão 0.02... contudo eu tive sucesso
rodando bash, gcc, gnu-make, gnu-sed, compress, etc. nele.
Com esta mensagem Linus Torvalds anunciou a primeira versão oficial do Linux,
versão 0.02. Desde então muitos programadores têm respondido ao seu chamado, e
têm contribuído não somente ajudando com as novas versões do kernel, mas também
com programas das mais diversas áreas, todos de livre distribuição ( free software ).
Apesar das contribuições de vários programadores ao redor do mundo, as novas
versões estáveis do kernel são somente liberadas pelo próprio Linus após sua revisão.
1.0 Distribuições
Uma distribuição Linux é o conjunto dos vários programas que compõem o
Linux, o kernel e, com freqüência, um sistema gerenciador de programas e um
instalador. As distribuições Linux podem ser tão pequenas a ponto de caber em
apenas alguns disquetes ou grandes e completas a ponto de utilizar vários CDs.
1.0.0 Conectiva
É a distribuição brasileira de maior destaque e com certeza a distribuição
brasileira mais usada. Até mesmo em outros países da América Latina essa
distribuição tem seu destaque. Existem escolas que são credenciadas a darem cursos
e certificados reconhecidos pela Conectiva SA. Toda sua documentação está em
Português.
1.0.0 Debian
É uma das únicas distribuições que não é mantida por uma empresa. O Debian é
todo desenvolvido por voluntários e estudantes de uma universidade. Foi inovador
criando uma ferramenta chamada apt-get que atualiza o sistema resolvendo todas
as dependências de pacotes. Esta ferramenta está presente, inclusive, na distribuição
brasileira Conectiva.
1.0.0 Gentoo
O grupo brasileiro (GentooBR http://www.gentoobr.org/) de usuários desta
distribuição descreve o Gentoo Linux como: “uma meta-distribuição Linux com um
grande enfoque na otimização e flexibilidade”. Neste caso, a palavra “enfoque“ se
refere à automatização dos processos envolvidos em otimização e flexibilidade.
Por exemplo, a otimização é obtida através da compilação do código-fonte do
software. Como esta pode não ser uma tarefa intuitiva para o usuário iniciante, o
Gentoo Linux compila automaticamente o software usando opções (que podem ser
modificadas) voltadas para a sua arquitetura/preferência.
A “flexibilidade” é obtida através de uma ferramenta de gerenciamento de
software eficiente, bem como a disponibilidade de um conjunto abrangente de
softwares.
1.0.0 Mandrake
Mandrake é a distribuição preferida e a mais indicada para quem está iniciando
em Linux. A empresa francesa MandrakeSoft aposta num sistema com muitas
ferramentas que vão auxiliar quem está iniciando em Linux.
Comando
no MS-DOS
Similar
no Linux
Função no Linux
ATTRIB chmod Alterar restrições de acesso a arquivos e diretórios
CD cd (^) Caminhar entre diretórios
CLS clear (^) Limpar a tela
COMP diff (^) Verificar diferenças entre arquivos
COPY cp (^) Copiar arquivos e diretórios
DATE date Mostrar/alterar data do sistema
DEL rm (^) Remover arquivos
DELTREE rm -r Remover diretórios recursivamente
DIR ls (^) Listar arquivos/diretórios
ECHO echo (^) Imprimir texto na saída padrão
EDIT mcedit, vi, pico (^) Editores de texto
EDLIN ed (^) Editor de linha de texto
HELP man Consulta manuais disponíveis no sistema
MD mkdir (^) Criar diretório
MORE more, less (^) Visualizar arquivos, pausa na saída de comandos
MOVE mv (^) Mover arquivos/diretórios
PRINT lp, lpr (^) Mandar arquivos para fila de impressão
RD rmdir Remover diretório vazios
REN mv (^) Renomear arquivos
SORT sort Ordenar entrada padrão, arquivos
TIME date (^) Date
TYPE cat (^) Listar conteúdo de arquivos
VER uname –a (^) Mostrar versão do sistema em uso
XCOPY /S cp –r (^) Copiar diretórios recursivamente
1.0.0 Ajuda do sistema
Para obter ajuda sobre comandos, serviços, dispositivos, arquivos de
configuração, entre outras informações, pode-se utilizar em um shell o comando man
ou no ambiente gráfico a ferramenta xman para caminhar entres as diferentes seções
de manuais, que são tradicionalmente divididas em 8 seções principais, como mostra
a Tabela 1-2.
F Pré-requisitos: Para acessar os manuais verifique se os pacotes necessários
estão instalados executando o seguinte comando em um shell :
rpm –q man man-pages man-pages-pt_BR XFree86-progs
A consulta realizada pelo comando rpm vai listar o nome de todos os pacotes
instalados, bem como sua versão. Se os pacotes não forem listados você pode instalá-
los (em um shell ) com o comando:
apt-get install man man-pages man-pages-pt_BR XFree86-progs
Tabela 1-2: Seções de manuais do UNIX
Número Descrição
1 Comandos de usuário
2 Chamadas de sistema
3 Subrotinas (programação)
4 Dispositivos
5 Formatos de arquivos
6 Jogos
7 Miscelânea
8 Administração do sistema
man – Consulta os manuais on-line do sistema
Sintaxe: man [-adfkwP] [seção]
Opções Descrição -a Encontra todas as páginas que coincidam com o padrão -d (^) Mostra informações de debug -f (^) Equivalente ao comando whatis -k (^) Equivalente ao comando apropos -P paginador Indica um programa alternativo a ser usado para mostrar as páginas -w (^) Mostra a localização física das páginas seção (^) Especifica em qual seção dos manuais buscar a informação
nome O man mostrará ajuda referente a um nome
Exemplo: [root@asterix root]# man rpm, da acesso ao manual do rpm.
Outra forma de obter ajuda é acessar a documentação disponível no diretório
/usr/share/doc. Muitos pacotes de software instalam documentação adicional (não
somente páginas do man) neste local.
1.0 Manipulando arquivos e diretórios
cd – Muda o diretório de trabalho, ou diretório corrente
Sintaxe: cd [diretório]
Sem parâmetros, o diretório HOME (casa) do usuário será acessado.
Se usarmos “~user” o diretório HOME de user será acessado. Se ao invés
disso utilizarmos o símbolo “-“, será retornado ao último diretório acessado.
chgrp – Muda o grupo de um arquivo ou diretório
Sintaxe: chgrp [-Rcvf] [arquivo ...]
A mudança pode ser efetuada pelo administrador do sistema (um super-
usuário) ou pelo dono do arquivo. O grupo pode ser especificado pelo seu
número de identificação (ID) ou pelo seu nome.
Opções Descrição -c (^) Mostra informações sobre os arquivos modificados -f (^) Não mostra mensagens de erro
X – permissão de execução 1
Para o dígito E temos a seguinte representação:
Significado Valor octal Nenhum atributo ligado 0 Bit sticky ligado 1 Bit setgid ligado 2 Bit setuid ligado 4
Atributos especiais:
Bit Significado setuid O arquivo é executado como se fosse invocado pelo proprietário; não faz sentido para diretórios setgid O arquivo é executado sob seu grupo, mesmo que o usuário invocador não participe do dele; todo arquivo criado em um diretório setgid é criado com o mesmo grupo do diretório sticky Um arquivo criado sob um diretório com o bit sticky ligado pode ser removido ou renomeado apenas pelo proprietário (ou o root). Em arquivos executáveis o bit sticky faz com que estes arquivos sejam mantidos na área de swap do sistema
chown – Muda o proprietário e opcionalmente o grupo de um arquivo ou diretório
Sintaxe: chown [-Rcvf] [dono][[:.]grupo] arquivos
Dono e o grupo podem ser especificados por seu ID ou por seus nomes.
Opções Descrição -c Mostra o nome dos arquivos que o dono está sendo alterado -f (^) Não mostra mensagens de erro -R (^) Altera o dono dos arquivos nos subdiretórios (recursivamente) -v (^) Descreve cada mudança de maneira detalhada
cp – Copia um ou vários arquivos
Sintaxe: cp [-abdfilprsuxvPS] [arquivo...]
Quando vários arquivos estiverem sendo copiados, destino deve se
referir a um diretório.
Opções Descrição -a (^) Preserva as características originais do arquivo sempre que possível -b (^) Cria um backup dos arquivos antes de sobrescrevê-los -d Copia o link , não o arquivo ao qual foi feita referência -f Força a cópia e sobrescrita de arquivos -i (^) Pede a confirmação antes de sobrescrever um arquivo existente -l (^) Cria hard links em de cópias dos arquivos -P (^) Copia arquivos criando também os elementos (diretórios) intermediários do caminho ( path ) -p Também copia as permissões e data de modificação dos arquivos -r, -R Copia o conteúdo do diretório e seus subdiretórios (recursivamente) -s (^) Cria links simbólicos em vez de copiar arquivos. O caminho até os arquivos fonte deve ser absoluto -S sufixo (^) Anexa no nome dos arquivos de backup a extensão definida por sufixo -u (^) Previne a sobrescrita de arquivos com o mesmo nome quando o destino tem data mais recente -v Mostra o nome de cada arquivo antes de copiá-lo -x (^) Copia somente os arquivos que estiverem no mesmo sistema de arquivos do diretório corrente
ls – lista o conteúdo do diretório
Sintaxe: ls [opções] [arquivo...]
Opções Descrição -C (^) Lista arquivos em colunas, ordenados verticalmente.
-F Sufixa o nome de cada diretório com '/', cada nome de FIFO com '|', e cada
nome de executável com '*'.
-R Lista os diretórios encontrados, recursivamente.
-a Inclue os arquivos com o nome iniciando com '.' na listagem.
-c (^) Usa o tempo de alteração ao invés do tempo de modificação para ordenar (com
-t) ou listar (com -l).
-i Precede a saída para o arquivo pelo seu número serial (número do inode).
-l (^) Lista no formato longo o tipo e modo de acesso do arquivo, o número de ligações para o arquivo, o nome do proprietário, o nome do grupo, o tamanho do arquivo (em bytes), o rótulo de tempo, e o nome do arquivo.
Os tipos de arquivos podem ser: ‘-‘ para um arquivo comum, ‘d’ para um
diretório, ‘b’ para um dispositivo de bloco, ‘c’ para um dispositivo de caractere,
‘l’ para uma ligação simbólica, ‘p’ para um FIFO, ‘s’ para um socket.
Por padrão, o rótulo de tempo exibido é aquele da última modificação; as
opções -c e -u selecionam outros dois rótulos de tempo. Para arquivos de
dispositivos especiais o tamanho do campo é geralmente substituído pelos números de dispositivos maior e menor. -q (^) Mostra caracteres não imprimíveis no nome do arquivo como ponto de interrogação. (Isto é permitido como padrão para a saída em um terminal.) -r Inverte a ordem da ordenação. -t (^) Ordena a exibição pelo rótulo de tempo. -u (^) Usa o tempo do último acesso no lugar do tempo de modificação para ordenar
(com -t) ou listar (com -l).
-1 (^) Para saída em coluna simples.
mkdir – Cria diretórios
Sintaxe: mkdir [-pm] <diretório> [diretório...]
Opções Descrição -m mode (^) Cria um novo diretório com as especificações de permissões -p (^) Se um caminho de diretórios for especificado onde algum subdiretório não existir, ele então também será criado.
mount – Monta novos sistemas de arquivos na árvore de diretórios
Sintaxe: mount [opções] [origem] [ponto_montagem]
Um sistema de arquivos é anexado no diretório definido por
ponto_montagem. Parâmetros que não forem especificados serão lidos de
/etc/fstab.
Opções Descrição
-a Monta todos os sistemas de arquivos especificados em /etc/fstab
-f (^) Efetua uma montagem falsa. Para efeito de testes
-n Suprime entradas em /etc/mtab
-r (^) O sistemas de arquivos é montado com o status de somente leitura
-t tipo Monta um sistema de arquivos de um certo tipo. (ext2, msdos, hpfs, proc,
nfs, iso9660, vfat, smbfs)
-v Mostra mensagens de saída
mv – Move ou renomeia arquivos ou diretórios
Sintaxe: mv [-bfiuSv] [arquivo...]
Tabela 1-3: Teclas de acesso a funções do mcedit
Tecla
Console Linux
(interface texto)
Finalidade
F2 (^) Salvar o arquivo atual
F3 +<movimentação>
Pressione para marcar o ponto inicial e final de uma seleção. A área selecionada poderá ser copiada, movida, ou apagada. A seleção também pode ser feita com o mouse.
F
Acesso à janela Substituir. Digite a expressão a ser pesquisada e sua substituição e pressione
F
+ (copia)
+ (cola)
Copia a área selecionada para a posição do cursor.
F
+ (recorta)
+ (cola)
Move a área selecionada para a posição do cursor.
F7 Acesso à janela Procurar. Digite a expressão a ser pesquisada e pressione
F8 + (^) Apaga a área selecionada ou a linha atual.
F9 Acesso a barra de menus
F10 (^) Sair do mcedit.
F12 Salvar arquivo como (digite o nome do arquivo quando surgir a janela Salvar).
Ctrl-u (^) Desfaz a última ação efetuada.
1.0.0 vi
F Pré-requisitos: Para utilizar este editor verifique se os pacotes necessários estão
instalados executando o seguinte comando no shell : rpm –q --whatprovides
vi
O vi é o editor de texto padrão do UNIX, ele é simples e rápido, embora não seja
muito intuitivo. Ele foi criado por William Joy da Universidade de Berkeley, seus
comandos são baseados em combinações de teclas, e é por esse motivo que sua
utilização não é intuitiva.
Sintaxe: vi [nome_arquivo]
O vi possui dois modos, o modo de edição e modo de comando, para entrar no
modo de edição tecle e para entrar no modo de comando tecle .
Existem dois tipos de comandos, os comandos de linha e os comandos visuais.
Para ativar os comandos de linha tecle <:> e então digite o comando desejado no
prompt , os comandos visuais são digitados diretamente no modo de comando.
Como há muitos comandos no vi, vamos destacar apenas os principais nas
tabelas a seguir.
Tabela 1-4: Principais comandos de linha no editor vi
Comandos de linha Significado
help ou h Ajuda.
write ou w Gravar arquivo.
read ou r Ler um arquivo. Ex.: r /etc/hosts
print ou p Imprime o arquivo atual.
close ou c Fechar o vi.
quit ou q Sair do vi, para sair sem salvar use q!
wquit ou wq Salva e sai.
Tabela 1-5: Principais comandos visuais no editor vi
Comandos visuais Significado
_/ Busca por uma palavra do ponto atual para frente no documento.
_? Busca por uma palavra do ponto atual para trás no documento.
_n Repete busca.
_N Repete busca na direção oposta.
_^ Posiciona o cursor no início da linha.
_$ Posiciona o cursor no fim da linha.
_X Apaga o caracter à esquerda do cursor.
_x Apaga o caracter que estiver sob o cursor.
_R Escreve sobre as palavras.
_D Apaga o texto a partir do cursor até o final da linha.
_u Desfaz o último comando.