Comandos Basicos do Linux

quarta-feira, 7 de novembro de 2007

mkdir cria um diretório exemplo: mkdir docs

rmdir exclui um diretorio (se estiver vazio)

rm -rf exclui um diretório e todo o seu conteúdo (cuidado com este comando)

cd entra num diretório (exemplo: cd docs) ou retorna para HOME

cd ~ vai direto para o diretório home do usuário logado.

cd - volta ao último diretório acessado

pwd exibe o local do diretório atual

ls listar o conteúdo do diretóriols -alh mostra o conteúdo detalhado do directório

ls -ltr mostra os arquivos no formado longo(l) em ordem inversa(r) de data (t)

ls -lha Mostra todos os ficheiros e directorias, incluindo ocultos, na directoria actual

du -msh mostra o tamanho do diretório em Megabytes

whereis mostra onde se encontra determinado arquivo (binários) exemplo: whereis samba

which mostra qual arquivo binário está sendo chamado pelo shell quando chamado via linha de comando

hdparm -I /dev/hda Mostra diversas informações do disco rigido hda

lsdev Mostra informações de vários dispositivos detectados e recursos a serem usados por esses dispositivos

useradd joao Cria um utilizador com o nome joao passwd joao - Cria ou modifica a password do utilizador joao

mount Mostra todas as partições 'montadas'

who mostra utilizadores ligados no sistema

ps Lista todos os processos/programas a serem executados pelo utilizador actual

Para quem percebe um pouco de ingles encontra na pagina http://www.ss64.com/bash/ mais um conjunto de comandos enormes

Sistema de Ficheiros Linux

domingo, 21 de outubro de 2007

O sistema de ficheiros é uma parte fundamental do sistema operativo
Linux. A configuração e a manutenção do mesmo é uma tarefa que muitas
vezes não é fácil e a qual fica sempre ao cuidado do administrador do
sistema.

Um sistema de ficheiros (filesystem) é o método e a estrutura de dados
que um sistema operativo utiliza para administrar ficheiros num disco ou
numa partição, ou seja, a forma pela qual os ficheiros estão organizados
num disco.

O Linux suporta diversos tipos de sistemas de ficheiros. Entre esses
podemos salientar os seguintes:

  • minix – o mais antigo e presumivelmente o mais credível, mas
    bastante limitado em facilidades (máximo de 30 caracteres para
    nomes de ficheiros, etc.) e restrições de armazenamento (no
    máximo 64 MB por sistema de ficheiros).
  • xia – uma versão modificada do sistema de ficheiros minix, o qual
    aumenta os limites dos nomes dos ficheiros e do sistema de
    ficheiros, mas não introduz novas facilidades. Não é muito
    popular, mas comenta-se que funciona muito bem.
  • ext2 e ext3 – os mais poderosos e populares sistemas de ficheiros
    nativos do Linux. Criados para serem facilmente compatíveis com
    os avanços das novas versões, sem ser necessário refazer os
    sistemas de ficheiros já existentes.
  • ext – uma versão antiga do ext2, a qual não é mais compatível com
    as versões actuais. É raro vê-la instalada em sistemas novos e
    mesmo os mais antigos têm sido convertidos para ext2.
    Adicionalmente, há o suporte a diversos sistemas de ficheiros de outros
    sistemas operativos, para simplificar a troca de informações com esses
    sistemas operativos.

Estes sistemas de ficheiros funcionam como se fossem nativos, excepto
pela perda de algumas facilidades presentes no UNIX, ou apresentam
algumas particularidades:

  • msdos – compatibilidade com o MS-DOS (OS/2 e Windows NT)
    através de sistemas de ficheiros FAT.
  • umsdos – sistemas de ficheiros msdos estendidos para suportar
    nomes longos, donos, permissões, ligações e ficheiros de
    dispositivos do Linux. Isso permite que um sistema de ficheiros
    msdos possa ser usado como se fosse um sistema Linux,
    removendo a necessidade de uma partição distinta para o Linux.
  • iso9660 – o sistema de ficheiros padrão do CD-ROM. A extensão
    Rock Ridge permite a utilização de nomes longos, sendo suportada
    de forma automática.
  • nfs – sistemas de ficheiros de redes que permitem compartilhar o
    acesso fácil aos ficheiros entre os diversos computadores da rede.
  • hpfs – o sistema de ficheiros do OS/2.
  • sysv – sistema de ficheiros do System V/386, Coherent e Xenix.

Ambiente Gráfico do Linux

sexta-feira, 19 de outubro de 2007

No Linux a responsabilidade pelo ambiente gráfico não é do kernel mas sim de um programa especial, o XFree86. No entanto, este programa preve apenas as funções de desenho de elementos gráficos e interação com a placa de vídeo. A interação final do utilizador com a interface gráfica da-se através de programas gerenciadores de janelas, como o KDE, o WindowMaker e o GNOME, e são eles os responsáveis pela "aparência" do Linux.
A separação do ambiente gráfico do resto do sistema apresenta muitas vantagens. Como o ambiente gráfico consome recursos do sistema, é possível desactivá-lo, principalmente em servidores, resultando assim num melhor desempenho de outras aplicações, uma vez que a quantidade de processamento da CPU que seria utilizado para o XFree86, poderá ser utilizado para essas aplicações. Além do mais, o desenvolvimento do ambiente gráfico pode ocorrer de maneira mais independente ao do kernel.
O Linux também pode funcionar em modo texto. Nesse caso a interação com o utilizador da-se por meio de um shell, como o Bash, que é capaz de interpretar e executar comandos digitados pelo usuário

Ambiente gráfico do Unix

quinta-feira, 18 de outubro de 2007

X Window System

Além do shell, o Unix suporta interface gráfica para o utilizador. Nas primeiras versões do Unix as interfaces do utilizador eram baseadas apenas em caracteres (modo texto) e o sistema compunha-se apenas do kernel, de bibliotecas de sistema, do shell e de alguns outros aplicativos. As versões mais recentes do Unix, além de manterem o shell e seus comandos, incluem o X Window System que, graças ao gerenciador de exibição e ao gerenciador de janelas, possui uma interface atraente e intuitiva que aumenta em muito a produtividade do utilizador.
Desenvolvido no MIT, o Xwindow tornou-se o sistema gráfico do Unix. O Xwindow funciona como gerenciador de exibição e por si só, não faz muita coisa. Para termos um ambiente gráfico produtivo e completo, precisamos também de um gerenciador de janelas.

Gerenciador de janelas

O gerenciador de janelas proporciona ao ambiente gráfico a aparência e as funcionalidades esperadas incluindo as bordas das janelas, botões, truques de mouse, menus etc. Como no sistema Unix o gerenciador de exibição é separado do gerenciador de janelas, dizemos que seu ambiente gráfico é do tipo cliente-servidor. O Xwindow funciona como servidor e interage directamente com o mouse, o teclado e o vídeo. O gerenciador de janelas funciona como cliente e se aproveita dos recursos disponibilizados pelo Xwindow.
O facto de o Unix possuir o gerenciador de exibição separado do gerenciador de janelas tornou possível o surgimento de dezenas de gerenciadores de janelas diferentes. Os gerenciadores de janelas mais comuns no mundo Unix são o Motif, Open Look, e o CDE.
Também existem outros gerenciadores de janelas que são bastante utilizados no Unix, principalmente nos sistemas Unix-Like. São eles: KDE, Gnome, FVWM, BlackBox, Enlightenment, WindowMaker etc.

Estrutura do Unix

quarta-feira, 17 de outubro de 2007

Um sistema Unix consiste, basicamente, de duas partes:

  • Kernel - o núcleo do sistema operacional, a parte que relaciona-se directamente com o hardware, e que executa num espaço de memória privilegiado. Agenda processos, gerencia a memória, controla o acesso a arquivos e a dispositivos de hardware. O acesso ao kernel é efectuado por chamadas de sistema, que são funções fornecidas pelo kernel. Essas funções são disponibilizadas para as aplicações pela biblioteca de sistema C (libc).
  • Programas de sistema - são aplicações, que executam em espaços de memória não privilegiados, e que fazem a interface entre o utilizador e o kernel. Consistem, principalmente, de:
    Conjunto de bibliotecas C (libc)
    Shell - um ambiente que permite que o utilizador digite comandos.
    Programas utilitários diversos - são programas usados para manipular arquivos, controlar processos, etc.
    Ambiente gráfico (GUI) - eventualmente utiliza-se também um ambiente gráfico para facilitar a interação do utilizador com o sistema.

Num sistema Unix, o espaço de memória utilizado pelo kernel é denominado espaço do kernel ou supervisor (kernel space); a área de memória para os outros programas é denominada espaço do usuário (user space). Essa separação é um mecanismo de proteção que impede que programas comuns interfiram com o sistema operacional.


Processos

Um processo, na visão mais simples, é uma instância de um programa em execução. Um programa, para ser executado, deve ser carregado em memória; a área de memória utilizada é dividida em três partes: código (text), dados inicializados (data) e pilha (stack).
Por ser um sistema multitarefa, o Unix utiliza uma estrutura chamada tabela de processos, que contém informações sobre cada processo, tais como: identificação do processo (PID), dono, área de memória utilizada, estado (status). Apenas um processo pode ocupar o processador em cada instante - o processo encontra-se no estado "executando" (running). Os outros processos podem estar "prontos" (ready), aguardando na fila de processos, ou então estão "a dormir" (asleep), esperando alguma condição que permita sua execução.
Um processo em execução pode ser retirado do processador por duas razões:
  • Necessita aceder a algum recurso, fazendo uma chamada de sistema - neste caso, após ser retirada do processador o seu estado será alterado para "a dormi", até que o recurso seja liberado pelo kernel;
  • O kernel pode interromper o processo - neste caso, o processo irá para a fila de processos (estado "pronto"), aguardando nova oportunidade para executar - ou porque a fatia de tempo esgotou-se, ou porque o kernel necessita realizar alguma tarefa.

Existem quatro chamadas de sistema principais associadas a processos: fork, exec, exit e wait. fork é usada para criar um novo processo, que irá executar o mesmo código (programa) do programa chamador (processo-pai); exec irá determinar o código a ser executado pelo processo chamado (processo-filho); exit termina o processo; wait faz a sincronização entre a finalização do processo-filho e o processo-pai.


Sistema de arquivos

Sistema de arquivos é uma estrutura lógica que possibilita o armazenamento e recuperação de arquivos. No Unix, arquivos são contidos em diretórios (ou pastas), os quais são conectados em uma árvore que começa no diretório raiz (designado por /). Mesmo os arquivos que se encontram em dispositivos de armazenamento diferentes (discos rígidos, disquetes, CDs, DVDs, sistemas de arquivos em rede) precisam ser conectados à árvore para que seu conteúdo possa ser acessado. Cada dispositivo de armazenamento possui a sua própria árvore de diretórios.
O processo de conectar a árvore de diretórios de um dispositivo de armazenamento à árvore de diretórios raiz é chamado de "montar dispositivo de armazenamento" (montagem) e é realizada por meio do comando mount. A montagem associa o dispositivo a um subdiretório.

Estrutura de diretórios

A árvore de diretórios do Unix é dividida em várias ramificações menores e pode variar de uma versão para outra. Os diretórios mais comuns são os seguintes:
/ — Diretório raiz - este é o diretório principal do sistema. Dentro dele estão todos os diretórios do sistema.
/bin — Contém arquivos programas do sistema que são usados com freqüência pelos usuários.
/boot — Contém arquivos necessários para a inicialização do sistema.
/dev — Contém arquivos usados para acessar dispositivos (periféricos) existentes no computador.
/etc — Arquivos de configuração de seu computador local.
/home — Diretórios contendo os arquivos dos usuários.
/lib — Bibliotecas compartilhadas pelos programas do sistema e módulos do kernel.
/mnt — Diretório de montagem de dispositivos.
/mnt/cdrom — Subdiretório onde são montados os CDs. Após a montagem, o conteúdo do CD se encontrará dentro deste diretório.
/mnt/floopy — Subdiretório onde são montados os disquetes. Após a montagem, o conteúdo do disquete encontrase-a dentro deste diretório.
/proc — Sistema de arquivos do kernel. Este diretório não existe, ele é colocado lá pelo kernel e usado por diversos programas.
/root — Diretório do usuário root.
/sbin — Diretório de programas usados pelo superutilizador (root) para administração e controle do funcionamento do sistema.
/tmp — Diretório para armazenamento de arquivos temporários criados por programas.
/usr — Contém maior parte de seus programas. Normalmente acessível somente como leitura.
/var — Contém maior parte dos arquivos que são gravados com frequência pelos programas do sistema.

Características do Unix

Sistema operacional multitarefa

Multitarefa significa executar uma ou mais tarefas ou processos simultaneamente. Na verdade, em um sistema monoprocessado, os processos são executados sequencialmente de forma tão rápida que parecem que estao a ser executados simultaneamente. O Unix cria uma escala de execução e atibui-lhes memoria, espaço no disco rigido, etc. O Unix é um sistema operacional de multitarefa preemptiva. Isso significa que, quando esgota-se um determinado intervalo de tempo (chamado quantum), o Unix suspende a execução do processo, guarda o seu contexto, para que ele possa ser retomado posteriormente, e coloca em execução o próximo processo da fila de espera. O Unix também determina quando cada processo será executado, a duração de sua execução e a sua prioridade sobre os outros.


Sistema operacional multiutilizador


Uma característica importante do Unix é ser multiutilizador. Bovet e Cesati definem um sistema multiusuário como capaz de executar tarefas de varios utilizadores. O Unix possibilita que vários utilizadores usem um mesmo computador simultaneamente, geralmente por meio de terminais. Cada terminal é composto de um monitor, um teclado e, eventualmente, um mouse. Vários terminais podem ser conectados ao mesmo computador num sistema Unix. Para isso usa-se o protocolo XDMCP.
O Unix gerencia os pedidos que os utilizadores fazem, evitando que um interfira com outros. Cada utilizador possui direitos de propriedade e permissões sobre arquivos.
O sistema Unix possui dois tipos de usuários: o usuário root (também conhecido como superusuário), que possui a tarefa de administrar o sistema, podendo manipular todos os recursos do sistema operacional; e os usuários comuns, que possuem direitos limitados.
Para que o sistema funcione correctamente em modo multiutilizador, existem alguns mecanismos:

  • Um sistema de autenticação para identificação de cada utilizador;
  • Sistema de arquivos com permissões e propriedades sobre arquivos;
  • Proteção de memória, impedindo que um processo de utilizador aceda a dados ou interfira com outro processo. Esse último mecanismo é implementado com a ajuda do hardware, que consiste na divisão do ambiente de processamento e memória em modo supervisor (ou modo kernel) e modo usuário.

Arquivos de dispositivo


Uma característica unica no Unix é a utilização intensiva do conceito de arquivo. Quase todos os dispositivos são tratados como arquivos e, como tais, seu acesso é obtido mediante a utilização das chamadas de sistema open, read, write e close.
Os dispositivos de entrada e saída são classificados como sendo de bloco (disco, p.ex.) ou de caractere (impressora, modem, etc.) e são associados a arquivos mantidos no diretório /dev