-- Instalação e Atualização de Sistemas GNU/Linux -> DebianInstalação e Atualização de Sistemas GNU/Linux -> Debian Debian é
Debian é a distribuição com a distribuição com a maior a maior comunidadcomunidade de e de mantenedoresmantenedores/desenvolve/desenvolvedoresdores voltada exclusivame
voltada exclusivamente para nte para software livre.software livre. Aspectos gerais da plataforma GNU/Linux Aspectos gerais da plataforma GNU/Linux Conceitos fundamentais sobre o Linux Conceitos fundamentais sobre o Linux Tipos e características de shells
Tipos e características de shells
Tipos de sistema de arquivos do Linux Tipos de sistema de arquivos do Linux Instalação do Debian GNU/Linux Instalação do Debian GNU/Linux
Customizando, compilando e instalando um novo kernel em seu servidor Customizando, compilando e instalando um novo kernel em seu servidor Configurando e instalando um Boot Manager
Configurando e instalando um Boot Manager -- Uso do ShellUso do Shell
Reúne os principais e mais usados comandos de qualquer Sistema Operacional Linux Reúne os principais e mais usados comandos de qualquer Sistema Operacional Linux Comandos para buscar e
Comandos para buscar e visualizar documenvisualizar documentação no Linuxtação no Linux Informações sobre o Sistema
Informações sobre o Sistema Comandos
Comandos administratadministrativosivos
Trabalhando com o ambiente de trabalho do usuário no shell (alias e variáveis) Trabalhando com o ambiente de trabalho do usuário no shell (alias e variáveis) Introdução a programação em Shell Script
Introdução a programação em Shell Script
Trabalhando com modos de inicialização – processo init e runlevels Trabalhando com modos de inicialização – processo init e runlevels -- Configurando e gerenciando hardwareConfigurando e gerenciando hardware
Identificação de discos e partições em sistemas GNU/Linux Identificação de discos e partições em sistemas GNU/Linux Recomendaçõ
Recomendações para es para configuraçconfiguração e ão e armazenamentarmazenamento de o de dadosdados Gerenciando hardware (disquete, cd-rom, pendrive
Gerenciando hardware (disquete, cd-rom, pendrive e partições)e partições) Configuração de partições
Configuração de partições
Conhecendo os módulos de componentes da CPU Conhecendo os módulos de componentes da CPU Configuração de dispositivo Wireless LAN
Configuração de dispositivo Wireless LAN Configurando uma rede Wireless no Linux Configurando uma rede Wireless no Linux
-- Criando e manipulando texto com o Editor VICriando e manipulando texto com o Editor VI É um editor de
É um editor de textos muito poderoso, ele pode: abrir vários arquivos ao mesmo tempo,textos muito poderoso, ele pode: abrir vários arquivos ao mesmo tempo, possui sistema de auto-correção, auto-identificação, seleção visual, macros, seleção possui sistema de auto-correção, auto-identificação, seleção visual, macros, seleção
vertical de texto, uso de expressões regulares, sintaxe colorida, e muito mais... vertical de texto, uso de expressões regulares, sintaxe colorida, e muito mais... Modo de inserção e de
Modo de inserção e de comandoscomandos
Copiando e colando textos no vi (utilizando o mouse) Copiando e colando textos no vi (utilizando o mouse) Usando o modo visual do vi
Usando o modo visual do vi
Subcomandos para localização de texto Subcomandos para localização de texto Opções para substituição de textos Opções para substituição de textos
-- Criando e gerenciando contas de usuário e gruposCriando e gerenciando contas de usuário e grupos
Conhecimentos para um bom gerenciamento de contas de usuário. Conhecimentos para um bom gerenciamento de contas de usuário. Administraçã
Administração de o de usuáriosusuários Administraçã
Administração de o de gruposgrupos
Trabalhando com a senha em grupos Trabalhando com a senha em grupos Criando quot
Criando quotas para uas para usuários suários e grupose grupos
-- Permissões de acesso a recursos, arquivos, pastas e dispositivos do SistemaPermissões de acesso a recursos, arquivos, pastas e dispositivos do Sistema Nesta etapa o participante irá compreender e
Nesta etapa o participante irá compreender e manipular as permissões de acesso amanipular as permissões de acesso a recursos,arquivos, pastas e dispositivos do Sistema.
SUIDBIT SUIDBIT SGIDBIT SGIDBIT STICKYBIT STICKYBIT
-- Manipulação de pacotesManipulação de pacotes
Instalação de pacotes (programas) Instalação de pacotes (programas) Remoção de pacotes (programas) Remoção de pacotes (programas) Correção de pacotes
Correção de pacotes Procedimentos de backup Procedimentos de backup
Empacotamento e Compressão de arquivos Empacotamento e Compressão de arquivos
Descompactação e Desempacotamento de pacotes Descompactação e Desempacotamento de pacotes Compilação de programas a partir do código fonte Compilação de programas a partir do código fonte - Servidor X – Configurando o Ambiente Gráfico - Servidor X – Configurando o Ambiente Gráfico Instalação do X Window
Instalação do X Window Configurando o X
Configurando o X
Informações sobre os módulos que devem ser carregados Informações sobre os módulos que devem ser carregados Servidor remoto: Xnest
Servidor remoto: Xnest Gerenciadores de login Gerenciadores de login
Instalação de Ambientes Gráficos Instalação de Ambientes Gráficos
Instalando e Configurando o Ambiente Gráfico KDE Instalando e Configurando o Ambiente Gráfico KDE Instalando e Configurando o Ambiente Gráfico GNOME Instalando e Configurando o Ambiente Gráfico GNOME -- Serviços básicos de redeServiços básicos de rede
Configurando a rede Configurando a rede
Procedimento de check-list dos serviços de rede Procedimento de check-list dos serviços de rede Telnet x SSH
Telnet x SSH
Aplicando regra de acesso a
Aplicando regra de acesso a servidores no sistema: TCPWrappersservidores no sistema: TCPWrappers Agendando tarefas
Agendando tarefas
Trabalhando com servidor de sincronização de horário – Trabalhando com servidor de sincronização de horário – NTPNTP Gerenciando impressão no sistema
Gerenciando impressão no sistema
-- Clientes / Estações de trabalho GNU/LinuxClientes / Estações de trabalho GNU/Linux
Fornece habilidades e o conhecimento necessário para fazer a integração entre Windows Fornece habilidades e o conhecimento necessário para fazer a integração entre Windows e Linux..
e Linux..
Compartilham
Compartilhamento de arquivos em ento de arquivos em rede Linuxrede Linux
Compartilhamento de arquivos em rede mista (Windows x Linux) Compartilhamento de arquivos em rede mista (Windows x Linux) Configuração do Servidor NFS
Configuração do Servidor NFS Redes Windows x Redes Linux Redes Windows x Redes Linux Instalação do Samba
Instalação do Samba Configurando o Samba Configurando o Samba Compartilhand
Compartilhando uma o uma estação GNU/Linux com uma estação GNU/Linux com uma estação Windowsestação Windows Configurando um PDC com Samba
Configurando um PDC com Samba Informações importantes
Informações importantes
O curso tem foco na distribuição Debian, considerada a mais estável e muito tradicional, O curso tem foco na distribuição Debian, considerada a mais estável e muito tradicional, possibilitando um ambiente que permite ao aluno capacitar-se não somente para o Linux possibilitando um ambiente que permite ao aluno capacitar-se não somente para o Linux
mais também para outros
mais também para outros sistemas Like Unix;sistemas Like Unix;
Na sala de aula o curso é ministrado em Debian, distribuição com a maior comunidade Na sala de aula o curso é ministrado em Debian, distribuição com a maior comunidade
de mantenedores/desenvo
SUIDBIT SUIDBIT SGIDBIT SGIDBIT STICKYBIT STICKYBIT
-- Manipulação de pacotesManipulação de pacotes
Instalação de pacotes (programas) Instalação de pacotes (programas) Remoção de pacotes (programas) Remoção de pacotes (programas) Correção de pacotes
Correção de pacotes Procedimentos de backup Procedimentos de backup
Empacotamento e Compressão de arquivos Empacotamento e Compressão de arquivos
Descompactação e Desempacotamento de pacotes Descompactação e Desempacotamento de pacotes Compilação de programas a partir do código fonte Compilação de programas a partir do código fonte - Servidor X – Configurando o Ambiente Gráfico - Servidor X – Configurando o Ambiente Gráfico Instalação do X Window
Instalação do X Window Configurando o X
Configurando o X
Informações sobre os módulos que devem ser carregados Informações sobre os módulos que devem ser carregados Servidor remoto: Xnest
Servidor remoto: Xnest Gerenciadores de login Gerenciadores de login
Instalação de Ambientes Gráficos Instalação de Ambientes Gráficos
Instalando e Configurando o Ambiente Gráfico KDE Instalando e Configurando o Ambiente Gráfico KDE Instalando e Configurando o Ambiente Gráfico GNOME Instalando e Configurando o Ambiente Gráfico GNOME -- Serviços básicos de redeServiços básicos de rede
Configurando a rede Configurando a rede
Procedimento de check-list dos serviços de rede Procedimento de check-list dos serviços de rede Telnet x SSH
Telnet x SSH
Aplicando regra de acesso a
Aplicando regra de acesso a servidores no sistema: TCPWrappersservidores no sistema: TCPWrappers Agendando tarefas
Agendando tarefas
Trabalhando com servidor de sincronização de horário – Trabalhando com servidor de sincronização de horário – NTPNTP Gerenciando impressão no sistema
Gerenciando impressão no sistema
-- Clientes / Estações de trabalho GNU/LinuxClientes / Estações de trabalho GNU/Linux
Fornece habilidades e o conhecimento necessário para fazer a integração entre Windows Fornece habilidades e o conhecimento necessário para fazer a integração entre Windows e Linux..
e Linux..
Compartilham
Compartilhamento de arquivos em ento de arquivos em rede Linuxrede Linux
Compartilhamento de arquivos em rede mista (Windows x Linux) Compartilhamento de arquivos em rede mista (Windows x Linux) Configuração do Servidor NFS
Configuração do Servidor NFS Redes Windows x Redes Linux Redes Windows x Redes Linux Instalação do Samba
Instalação do Samba Configurando o Samba Configurando o Samba Compartilhand
Compartilhando uma o uma estação GNU/Linux com uma estação GNU/Linux com uma estação Windowsestação Windows Configurando um PDC com Samba
Configurando um PDC com Samba Informações importantes
Informações importantes
O curso tem foco na distribuição Debian, considerada a mais estável e muito tradicional, O curso tem foco na distribuição Debian, considerada a mais estável e muito tradicional, possibilitando um ambiente que permite ao aluno capacitar-se não somente para o Linux possibilitando um ambiente que permite ao aluno capacitar-se não somente para o Linux
mais também para outros
mais também para outros sistemas Like Unix;sistemas Like Unix;
Na sala de aula o curso é ministrado em Debian, distribuição com a maior comunidade Na sala de aula o curso é ministrado em Debian, distribuição com a maior comunidade
D
Deb
eb ia
ia n
n G
GNU
NU //Li
Li nu
nu x
x
In st al açã o
In sta la çã o
e at
e at ual
ualiz
izaç
aç ão
ão
Sistema
Sistema
Operacional
Operacional
Aspectos gerais da plataforma GNU/Linux Projeto Debian
O Projeto Debian é um grupo mundial de voluntários que se esforçam para produzir um sistema operacional livre que é composto inteiramente por software livre. O produto principal do projeto é a distribuição Debian GNU/Linux, que inclui o kernel do sistema operacional Linux e centenas de aplicações pré-empacotadas. Vários tipos de processadores são suportados, incluindo o Intel i386 e superior, Alpha, ARM, Motorola 68k, MIPS, PowerPC, Sparc, e UltraSparc, HP PA-RISC, IBM S/390 e Hitachi SuperH. O Projeto Debian foi oficialmente fundado por Ian Murdock em 16 de Agosto de 1993, com a pretensão de que o Debian fosse uma distribuição criada abertamente, no mesmo espírito do Linux e do GNU. Naquele tempo, o conceito de uma "distribuição" de Linux era novo. A criação do Debian teve o apoio do projeto GNU da FSF ( Free Software Foundation ou Fundação para o Software Livre) durante um ano (Novembro de 1994 a Novembro de 1995).
A distribuição Debian pretendia ser cuidadosamente e conscientemente criada em conjunto e ser mantida e suportada com similar cuidado. Isso começou com um pequeno e forte grupo de hackers do Software Livre e gradualmente cresceu se tornando
uma grande e bem organizada comunidade de desenvolvedores e usuários.
A pronúncia oficial de Debian é 'débian'. O nome vem do nome do criador do Debian, Ian Murdock, e sua esposa, Debra.
Debra + Ian = Debian
Ian Murdock
Detalhes da distribuição Debian:
É a única distribuição que é aberta para que todo desenvolvedor e usuário
possam contribuir com seu trabalho;
É o único distribuidor significativo de Linux que não é uma entidade comercial; É o único grande projeto com uma constituição, um contrato social e
documentos com políticas para organizar o projeto;
A Debian também é a única distribuição que é micro-empacotada, usando
informações detalhadas de dependência de pacotes para garantir a consistência do sistema em atualizações.
Backups são automatizados através de ferramentas e a documentação detalha todos os elementos chaves do Debian de uma forma aberta e visível.
O Projeto de Documentação do Debian pode ser encontrado neste endereço:
http://www.debian.org/doc/index.pt.html .
Projeto GNU
O Projeto GNU foi iniciado em 1984 para desenvolver um sistema operacional completo, compatível com o Unix, que fosse software livre: o sistema GNU. (GNU é um acrônimo recursivo para “GNU Não é Unix” e é pronunciado como “guh-noo.”) Variantes do sistema operacional GNU, que incluem o kernel Linux, são hoje amplamente utilizadas; embora estes sistemas sejam frequentemente chamados de “Linux”, eles seriam mais corretamente chamados de sistemas GNU/Linux.
Se necessário obter mais informações, este é o endereço:
http://www.gnu.org/home.pt.html
Quem é quem no GNU?
Este endereço está reservado para o nome de quem escreve e escreveu software livre para o Projeto GNU:
http://www.gnu.org/people/people.pt.html
Richard M. Stallman, criador e líder do projeto GNU.
O Linux O que é o Linux?
feito por Linus Torvalds, do Departamento de Ciência da Computação da Universidade de Helsinki, Finlândia, junto com um grupo de hackers pela Internet. O Linux segue o padrão POSIX, que é usado em estações UNIX.
Linus Torvalds iniciou cortando (hacking) o kernel como um projeto particular, inspirado em seu interesse no Minix, um pequeno sistema UNIX desenvolvido por Andrew Tannenbaum. Ele se limitou a criar, em suas próprias palavras, "um Minix melhor que o Minix". E depois de algum tempo de trabalho em seu projeto, sozinho, ele enviou a seguinte mensagem para comp.os.minix:
Você suspira por melhores dias do Minix-1.1, quando homens serão homens e escreverão seus próprios "device drivers" ? Você está sem um bom projeto e esta morrendo por colocar as mãos em um S.O. no qual você possa modificar de acordo com suas necessidades ? Você está achando frustrante quando tudo trabalha em Minix ? Chega de atravessar noites para obter programas que trabalhem correto ? Então esta mensagem pode ser exatamente para você.
Como eu mencionei a um mês atrás, estou trabalhando em uma versão independente de um S.O. similar ao Minix para computadores AT-386. Ele está, finalmente, próximo do estágio em que poderá 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ão, etc. nele.
Linus Benedictus Torvalds
No dia 5 de outubro de 1991 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 ajudado a fazer do Linux o Sistema Operacional que é hoje, uma grande maravilha.
Ele inclui proteção entre processos, carregamento por demanda, redes TCP/IP, alem de nomes de arquivos com até 255 caracteres, multitarefa real, suporte a UNICODE, bibliotecas compartilhadas, memória virtual, etc.
Conceitos fundamentais sobre o Linux
O Linux como qualquer sistema baseado em Unix apresenta uma lógica de utilização que preserva a segurança do sistema. Esse é um dos aspectos fundamentais que o tem tornado o sistema operativo com maior crescimento no mundo.
Assim, na lógica nativa do Linux existe uma divisão entre o administrador da máquina (ou superusuário) e o usuário sem privilégios.
No Linux um usuário pode ser identificado de três formas diferentes:
Login do usuário - é o nome que o usuário tem no sistema e que lhe serve para a ele ter acesso quando introduzido corretamente com uma password.
Nome do usuário - é o nome de batismo que o usuário tem. Por exemplo, “Linus Torvalds”. Este nome é raramente utilizado, serve somente para acompanhar a leitura do nome completo do usuário.
ID do usuário - (User ID) é um número atribuído ao utilizador no momento da criação da sua conta de sistema. É utilizado geralmente pelas aplicações para se referirem a um usuário. Por norma, o root tem o ID 0 (zero) e um usuário pode ter, por exemplo, o número 1001 como ID.
O superusuário ou root é o administrador do sistema. Apenas ele poderá executar alguns comandos e tarefas a que o usuário normal não tem acesso.
Assim foi definido com o objetivo de um usuário não poder comprometer a estabilidade do sistema realizando operações que o coloque em perigo.
O superusuário tem uma área de trabalho definida a partir da raiz do sistema: /root.
O usuário é tipicamente uma pessoa que trabalhará regularmente no sistema, tendo uma área própria que se encontra no diretório /home/[nome do usuário].
Um usuário normal não consegue alterar, apagar, sobrescrever,... arquivos de sistema. Nenhum programa executado pelo mesmo consegue.
Assim sendo, ninguém se preocupa em fazer vírus para o Linux, pois o vírus não poderá propagar-se devido às permissões sobre os arquivos lhe ser negado.
Todos os arquivos criados pelo usuário serão guardados na sua própria área e outros usuários não têm acesso, a não ser que o superusuário o defina.
A estrutura de diretórios no Linux
A raiz do Linux fica no diretório / e dentro deste diretório existem vários outros,
cada um tem uma descrição.
A estrutura de diretórios no Linux é basicamente dividida assim:
Diretório Descrição
/bin Arquivos executáveis que são usados pelo sistema freqüentemente. Aqui encontramos por exemplo os interpretadores de comandos ( , ,
Diretório Descrição
etc), o df, chmod, date, kill, dmesg, pwd, ls e muito mais. São os
comandos essenciais :)
/boot Neste diretório ficam os arquivos de boot, como os mapas de boot e asimagens do kernel. /dev Este é um diretório que carrega consigo todos os arquivos-dispositivos.
/etc
Arquivos de configuração do Linux. Este é o diretório que carrega todas as configurações dos principais (senão todos) os programas do Linux. Ele contém por exemplo os arquivos de usuários e senhas, arquivos de inicialização, configurações de rede e mais uma bolada de configuração pra deixar qualquer um doido.
/home Diretório dos usuários. Cada usuário tem um diretório dentro destediretório :)
/lib Algumas bibliotecas essenciais para o funcionamento do Linux e tambémos módulos do kernel.
/proc Este é um diretório especial, ele contém informações que o kernel gera ealgumas configurações também. /root É um diretório HOME . Só que aqui é o do usuário administrador (root ).
/sbin
Executáveis que têm funções administrativas, geralmente usados pelo
root . Aqui se encontram programas para verificar e criar sistemas de
arquivos, optimizar o uso do HD, configurar dispositivos, gerenciar módulos do kernel, etc.
/tmp Diretório temporário. Neste diretório, vários utlitários criam arquivos quesó serão usados por um tempinho e depois descartados. Não há nenhuma informação importante aqui, pois pode ser acessado por qualquer usuário.
/usr Um dos maiores diretórios, este contém as bibliotecas e arquivos geraisdos vários programas instalados no sistema. Sua estrutura é bem parecida com a raiz em sí. Ele também tem um lib, bin,sbin e por aí vai.
/var Informações variáveis que estão sempre em constante mudança, comoarquivos de
Tipos e características de shells
O shell é o programa que permite a interação do usuário com o sistema, em modo texto. Em UNIX/Linux existem vários tipos de shell, com funcionalidades diversas. Os principais são:
• Bourne shell (sh) - o mais antigo, está presente em todos os sistemas, pois é necessário para diversas operações administrativas.
• C shell (csh) - de sintaxe mais simples, é mais fácil de usar e por isso preferido pelos usuários iniciantes.
• Korn shell (ksh) - mistura características de ambos os anteriores.
• BASH Shell (bash) - Bourne-Again Shell, é uma extensão do sh e utilizado como padrão nas máquinas linux.
Algumas características do shell no Linux:
No prompt do Linux, quando existe com o símbolo $, isto quer dizer que o login
foi feito com um usuário normal. Se estiver logado com o root, ao invés do símbolo $, no final do prompt existirá o símbolo #.
Nos nomes dos arquivos, os caracteres MAIÚSCULOS e minúsculos fazem a
diferença. Isso quer dizer que os arquivos: PROGRAMA.tar.gz e programa.tar.gz, são dois arquivos completamente diferentes. Assim como: ls é
o comando na escrita certa e LS é um comando que não existe.
No Linux, não existem extensões .EXE, .COM especial para programas
executáveis. Ao invés disso, os arquivos têm permissão de executável ou não.
Além de arquivos comuns, no Linux existem os chamados links simbólicos, que
são nada mais nada menos que uma espécie de atalhos.
O Linux é um sistema multitarefa, podendo ser acessado por vários consoles ao
mesmo tempo, assim como pode ser rodado vários programas ao mesmo tempo. Para mudar o console do 1 a 6, utilize Alt-N, onde o N corresponde ao número
do console. Exemplo: Alt-F1, Alt-F2, Alt-F3, Alt-F4, Alt-F5 e Alt-F6.
Depois de logado, se quiser sair, utilize o comando exit, ou o comando logoutou ainda a combinação de teclas Ctrl-D.
Se algum programa estiver rodando no seu console, aperte as teclas Ctrl-Z para
o comando fg. Para listar os programas suspendidos na sessão atual, utilize o
comandojobs.
Um recurso muito interessante nas shells do Linux, é o tab completion. Com ele
você pode completar comandos ou nomes de arquivos mais rapidamente sem precisar digitar tudo. Para utilizar esse recurso, basta apenas digitar as primeiras letras do comando ou arquivo e apertar a tecla Tab. O Linux irá completar o comando ou arquivo. Caso haja mais de um arquivo começando com as letras digitadas, apertando Tab mais uma vez irão ser exibidas todas as opções.
Referência:
The Linux Manual
Tipos de sistema de arquivos do Linux
Um sistema de arquivos é um conjunto de estruturas lógicas e de rotinas, que permitem ao sistema operacional controlar o acesso ao disco rígido. Diferentes sistemas operacionais usam diferentes sistemas de arquivos. Os sistemas de arquivos do GNU/Linux evoluem de forma constante, juntamente com o kernel e outros subsistemas. Muitas melhorias são introduzidas em todos os formatos de sistemas suportados pelo GNU/Linux, tornando os mesmos: mais seguros, rápidos e estáveis.
O sistema de arquivos é independente do hardware e da BIOS. É por meio de um sistema de arquivos que ocorre a gravação e a recuperação dos dados em um dispositivo de armazenamento em um computador. O sistema de arquivos é que define o modo como os arquivos são estruturados, nomeados, acessados, utilizados, protegidos e manipulados pelo sistema operacional.
Os arquivos são armazenados, no sistema de arquivos, em diretórios que são uma subdivisão lógica e que funcionam como repositórios de arquivos ou de outros diretórios.
O conjunto de diretórios e arquivos forma um sistema de arquivos raiz, ou "árvore" de diretórios, a mesma deve seguir um padrão estabelecido. O sistema de arquivos é hierárquico e admite que diversos dispositivos sejam mapeados e utilizados a partir do diretório raiz. Para o usuário toda essa estrutura é vista de forma única.
A característica de recuperação implementada em sistemas de arquivos é chamada de "journaling" (registro de ações). Sistemas que não possuem "journal" são
verificação de integridade é realizada em cada arquivo do sistema. Nas partições que possuem milhares de arquivos essa verificação pode levar horas.
Os sistemas de arquivos com suporte a "journal" são recomendados por aumentarem a disponibilidade (High Availability - HA) em servidores GNU/Linux. A alta disponibilidade é medida pelo tempo em que o servidor se encontra fora de serviço por falhas no sistema operacional ou no hardware.
Quanto menor o tempo em que o sistema estiver indisponível, maior é o índice de disponibilidade, medido em uma escala de casas decimais que tende a se aproximar de 100%.
Características de alguns sistemas de arquivos: EXT3
⇒ O sistema de arquivos EXT3 é uma versão do EXT2;
⇒ O ext3 tem as mesmas características do EXT2, mas com suporte journaling; ⇒ A evolução tornou o EXT3 um sistema de arquivos muito estável e robusto; ⇒ Podemos converter um sistema de arquivos EXT2 para EXT3, adicionado
suporte a journaling, e também podemos converter um sistema de arquivos EXT3 para EXT2, removendo o suporte a journaling.
ReiserFS
⇒ O sistema de arquivos ReiserFS foi criado recentemente; ⇒ Atualmente quase todas as distribuições Linux o suportam;
⇒ Sua performance é muito boa, principalmente para um número muito grande de
arquivos pequenos;
⇒ ReiserFS também possui suporte a journaling.
JFS
⇒ O JFS (Journaling FileSystem) é um sistema de arquivos desenvolvido pela
IBM, disponível em licença open-source, com o intuito de rodar nos "UNIXes" que a IBM vendia;
⇒ No início o JFS sofreu uma perda de credibilidade devido a constantes
⇒ Extremamente rápido e permite trabalhar com uma quantia de dados muito
superior aos demais sistemas de arquivos;
⇒ O sistema de arquivos JFS também usa a estrutura inode para armazenar a
localização dos blocos de cada arquivo nas estruturas físicas do disco, a versão JFS2 armazena esses inodes em uma árvore binária para acelerar o acesso a essas informações, esses blocos podem variar de 512 a 4096 bytes, a alocação dos inodes é feita conforme vai sendo necessário.
⇒ Além de possuir journal ele permite que as partições do sistema sejam
redimensionadas sem que seja necessário desligar o computador; XFS
⇒ XFS é um sistema de arquivos muito rápido na gravação;
⇒ Desenvolvido originalmente pela Silicon Graphics e posteriormente
disponibilizado o código fonte;
⇒ Considerado um dos melhores sistemas de arquivos para banco de dados;
⇒ Possui journaling de metadados que vem com um robusto conjunto de funções e
é otimizado para escalabilidade;
⇒ É recomendado usar este sistema de arquivos em sistemas rodando Linux com
equipamento SCSI de ponta e/ou armazenamento em canais de fibra e fonte de energia sem interrupção;
⇒ Pelo fato de o XFS criar muitos caches de dados em uso na memória RAM,
programas mal desenhados podem perder uma grande quantidade de dados se o sistema for desligado sem aviso.
LVM
⇒ LVM é um acrônimo para a expressão inglesa Logical Volume Management
para especificar um padrão de gerenciamento de partições em disco IDE/SCSI/FC;
⇒ Foi desenvolvido inicialmente pela IBM, e outras empresa e instituições, como:
HP e a Open Group;
⇒ A vantagem é permitir o redimensionamento das áreas de modo dinâmico, ou
seja, com o sistema operacional sendo utilizado;
⇒ A desvantagem é que por ser um único disco virtual, a recuperação de dados em
uma eventual pane no sistema de armazenamento é bastante prejudicada. Inode
Um inode é um identificador único que um arquivo recebe, nele contém uma lista com 12 blocos diretos de dados que o arquivo deve ter, se ele possui mais de 12 blocos, ele segue uma regra para gravar esses blocos no disco e poder achar mais tarde.
Os dados do arquivo são armazenados em unidades chamadas 'blocos'. Estes blocos podem ser numerados seqüencialmente. Um arquivo também tem um inode.
Como os blocos, os inodes são numerados seqüencialmente, embora tenham uma seqüência diferente. Uma entrada de diretório consiste do nome do arquivo e um número de inode. O inode também armazena o local dos blocos de dados.
* Os números dos blocos dos primeiros 12 blocos de dados estão armazenados diretamente no inode. Estes às vezes são chamados de blocos diretos.
* O inode contém o número do bloco de um bloco indireto. Um bloco indireto contém os números de blocos de 256 blocos de dados adicionais.
* O inode contém o número do bloco de um bloco duplamente indireto. Um bloco duplamente indireto contém os números de blocos de 256 blocos indiretos adicionais.
* O inode contém o número do bloco de um bloco três vezes indireto. Um bloco três vezes indireto contém os números de blocos de 256 blocos duplamente indiretos adicionais.
Referências:
Guia Foca GNU/Linux – Discos e Partições
http://focalinux.cipsga.org.br/guia/inic_interm/ch-disc.htm
Wikipédia
Instalação do Debian Sarge
Antes de iniciar o processo de instalação é necessário configurar a BIOS para
que a inicialização do computador ocorra pelo drive de CD-ROM;
Leia sempre e atentamente todas as telas do processo de instalação. Elas trazem
informações importantes para a compreensão do processo;
Insira o CD;
Logo na primeira tela do processo deverá ser feita a opção do tipo de instalação
a ser realizada. Como estamos em um curso básico, você deve digitar: linux26, o mesmo é o modo de instalação automática.
Obs: também é possível entrar com a palavra: expert26, que é o processo manual mas a orientação deste tipo de instalação não será repassada neste momento.
Após digitar linux26, pressione a tecla ENTER:
Obs: A tecla ENTER deverá ser pressionada sempre que desejar prosseguir.
O próximo passo é selecionar o idioma a ser usado, em seguida, pressione
Selecione o layout do teclado:
Continuação da tela:
Configuração automática da rede:
Selecione a opção continuar, pressione ENTER.
Confirme a opção: Configurar a rede manualmente. Pode ocorrer de você não
precisar ajustar esta máquina a uma rede de computadores, neste caso você seleciona Não configurara rede agora e logo em seguida será dado início ao particionamento.
Digite o IP e prossiga a instalação:
Digite o gateway e prossiga a instalação:
Para terminar de configurar a rede, digite o nome de domínio e prossiga a
instalação. Será exibida a tela para inicial do particionador:
Selecione a opção: Apagar todo o disco.
Selecione Criar uma nova partição:
Selecione como tipo de partição Primária:
Selecione ponto de montagem, pressione ENTER e em seguida selecione
/boot.
Obs: Tendo como referência a imagem abaixo, no kernel anterior era necessário criar uma partição chamada /boot. Hoje em dia, com o kernel 2.6 não é mais necessário, o sistema já o cria automaticamente. O mesmo passará a existir dentro do diretório /.
A seguir confirme a opção Finalizar a configuração da partição:
Temos uma partição criada, a partição: /boot. Neste momento realize os mesmos
passos e crie uma partição chamada / (Raiz). A mesma terá o tamanho de 400 MB.
No Espaço Livre, teremos de criar algumas partições lógicas, sempre ao início
do espaço disponível.
As partições lógicas a serem criadas são:
/usr 3.0 GB /home 3.1 GB
Após o término do particionamento, selecione Finalizar o particionamento e
Após a confirmação, será dado o início da Instalação do Sistema básico Debian.
Continuação da instalação do GRUB:
Instalação finalizada remova a mídia de instalação e confirme a opção
Continuar.
Abaixo, a tela de reinicialização da máquina, após isso o sistema passará a ser
Após a reinicialização do sistema, será exibida a seguinte tela:Após a reinicialização do sistema, será exibida a seguinte tela:
Confirme a opçãoConfirme a opção OKOK..
Selecione seu fuso horário:Selecione seu fuso horário:
Selecione a cidade ou fuso horário:Selecione a cidade ou fuso horário:
Digite um nome para a conta de usuário a ser usada para atividades não
administrativas:
Após digitar a senha, será necessário inserir o CD 2 e confirmar OK.
Logo a seguir, o sistema irá ler as informações do CD2, como mostra a imagem
Após o término da leitura do CD2, será o momento de retira-lo e inserir o CD3. Após inserir o CD3, confirme a opção SIM.
Também será feita a leitura das informações do CD3, logo a seguir teremos a
Neste momento, o sistema já possui as informações até o CD3. Os três cds são
necessários para a instalação do sistema. Na tela acima, que será exibida, você confirma a opção NÃO.
Se houver a necessidade de adicionar a leitura de outro(s) cd(s), selecione a
opção SIM. Ao término da leitura da mídia, selecione NÃO.
Será exibida a tela de login. Você terá de entrar com o usuário e a senha:
---Customizando, compilando e instalando um kernel Linux em seu servidor
O Kernel representa a camada mais baixa de interface com o Hardware, sendo responsável por gerenciar os recursos do sistema computacional como um todo. É no kernel que estão definidas funções para operação com periféricos (mouse, discos, impressoras, interface serial/interface paralela), gerenciamento de memória, entre outros. O kernel é um conjunto de programas que fornece para os programas de usuário uma interface para utilizar os recursos do sistema.
Antes de tudo:
Quais são os requerimentos mínimos de hardware?
Varia de acordo com a arquitetura e a versão do kernel. Mas tenha em mente o seguinte para ter um sistema mínimo funcional: 16 MB de RAM (memória física), 100 MHz de clock de processamento e 100 MB de espaço em disco (memória virtual).
Qual é o processador? Qual é o clock? Qual é a arquitetura? # cat /proc/cpuinfo
# arch
Qual a quantidade de memória? # cat /proc/meminfo
Baixando o pacote
Baixe o pacote que contém o código fonte mais atualizado do kernel Linux da série 2.6 em http://www.kernel.org.
Fazendo o download com o comando wget:
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.x.tar.bz2
Como superusuário (faça o login no sistema com o usuário root), descompacte e desempacote o arquivo assim:
# tar xvjf linux-2.6.x.tar.bz2 -C /usr/src
Crie o link simbólico /usr/src/linux apontando para /usr/src/linux-2.6.x assim:
# ln -sf /usr/src/linux-2.6.x /usr/src/linux
Acesse /usr/src/linux assim:
# cd /usr/src/linux
Este será o diretório raiz de compilação, ou seja, o diretório base para os passos seguintes.
Caso já exista uma compilação anterior, execute o comando 'make mrproper' para retornar ao padrão os arquivos de configuração do kernel.
Edite o arquivo Makefile para personalizar a versão de sua compilação. Altere a variável EXTRAVERSION na quarta linha para um valor que deseje como por exemplo -i386-mwsf-1. Salve este arquivo.
VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = x
EXTRAVERSION = -i386-mwsf-1
Quais são os Softwares que preciso para iniciar a compilação?
O arquivo /usr/src/linux/Documentation/Changes contém uma lista do software mínimo que deve estar corretamente instalado na máquina antes de iniciar a compilação. Não inicie a compilação do kernel sem antes obtiver a certeza de que o mínimo de
software está instalado. Existe um script que pode auxiliar nisto. O script /usr/src/linux/scripts/ver_linux imprime na tela uma lista do software mínimo e suas respectivas versões que estão instalados na máquina. Compare esta lista com a lista oferecida pelo documento /usr/src/linux/Documentation/Changes. Para executar este script, faça assim:
# sh scripts/ver_linux
Será obrigatório ter os itens da lista instalados, apenas aqueles que o kernel que você está configurando suportar.
O arquivo /usr/src/linux/.config armazena a configuração do kernel. Basicamente, este arquivo descreve o que deverá ser incorporado ao kernel (y) e o que deverá ser criado como módulo (m). Incorpore ao kernel apenas o necessário. O restante necessário, configure como módulo. O que não for necessário, retire. Por exemplo, se você não tem um determinado dispositivo em sua máquina, retire da configuração o suporte. Isto possibilita uma maior performance por parte do sistema.
O kernel Linux pode ser modular, ou seja, o suporte básico fica incorporado ao kernel constantemente e o suporte a outros dispositivos, como por exemplo, uma placa de som, pode ser configurado como módulo. Assim sendo, este módulo da placa de som é carregado na memória e plugado ao kernel apenas quando for necessário, ou seja,
apenas quando o usuário estiver utilizando som no sistema. Isto otimiza o sistema, utilizando seus recursos sabiamente.
Existe uma configuração padrão para cada tipo de arquitetura de hardware no diretório /usr/src/linux/arch. O nome do arquivo é defconfig. Supondo que sua arquitetura de hardware seja i386, faça uma cópia do arquivo defconfig para o diretório raiz de compilação com o nome .config:
# cp -f /usr/src/linux/arch/i386/defconfig /usr/src/linux/.config
Em alguns casos de arquitetura, pode existir um diretório configs contendo configurações específicas e testadas para cada modelo de máquina.
Sendo isso ocorrer, ao iniciar a ferramenta de configuração, já existirá alguns itens marcados. Não será necessário iniciar do zero uma configuração.
Execute a ferramenta de configuração assim:
# make menuconfig
ou
# make xconfig (modo gráfico)
Observe a existência de uma configuração já pré-definida, se deve ao fato de você ter copiado o arquivo defconfig para o diretório raiz de compilação com o nome de .config. Algumas dicas:
Marque com * itens que serão incorporados ao arquivo do kernel como por
exemplo, sistemas de arquivos que você utiliza ou vai utilizar em suas partições.
Marque com m itens que serão criados como módulo, ou seja, serão plugados ao
kernel apenas quando houver necessidade de uso.
Esta é uma etapa demorada e deve ser feito com atenção. Acompanhe o help de cada item para saber o que está incluindo ou não.
Após a configuração do kernel, vamos compilá-lo realmente. Para isto, execute o comando:
# make
Este passo pode levar minutos ou de um dia para o outro. Depende do poder da máquina aonde você vai compilar.
Após a compilação do kernel, vamos instalar os módulos com o seguinte comando:
# make modules_install
Vamos copiar o kernel (bzImage) para o diretório /boot. O arquivo está no diretório de acordo com a arquitetura que você estiver utilizando. Se você compilou o kernel em um PC, o que é mais comum, então execute o comando para copiar:
# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.x-i386-mwsf-1
Nomeie os arquivos de acordo com a versão do kernel que está compilando e de acordo com a arquitetura de hardware.
Agora vamos copiar o arquivo System.map para /boot:
# cp /usr/src/linux/System.map /boot/System.map-2.6.x-i386-mwsf-1
Criando um link simbólico para System.map:
# ln -sf /boot/System.map-2.6.x-i386-mwsf-1 /boot/System.map
Agora vamos copiar o .config para /boot:
# cp /usr/src/linux/.config /boot/config-2.6.x-i386-mwsf-1
Vamos criar um arquivo initrd assim:
# mkinitrd -o /boot/initrd-2.6.x-i386-mwsf-1.img 2.6.x
A opção (-o arquivo) diz onde salvar o arquivo initrd gerado. A próxima opção de parâmetro é a versão do kernel que você compilou.
O initrd é utilizado mais para kernel's genéricos que acompanham as distribuições Linux. As distribuições são lançadas com kernel's genéricos para suportar o maior número de hardware possível.
Como o kernel novo foi instalado como um pacote Debian, é uma boa hora pra usar mais uma facilidade da Debian: update-grub (se você ainda usa lilo, é uma boa hora pra mudar :).
Se for instalá-lo na MBR, isso cria um diretório /boot/grub. Depois disso, é só rodar "update-grub" que ele gera um /boot/grub/menu.lst pra você. Se você já possui um menu.lst, faça o backup e remova-o, a não ser que você tenha muitas modificações nele. Edite o menu.lst, altere configurações como:
# kopt=root=/dev/hda3 ro # groot=(hd0,0)
De acordo com seu sistema está configurado. Note que as linhas devem permanecer comentadas ("#" no começo da linha), essas são meta-configurações.
Depois de acertar isso, rode update-grub de novo e... Ele gera as entradas no menu do grub automaticamente, a partir das imagens de kernel instaladas e das meta-configurações que você fez.
Reinicie o Sistema
Configurando e instalando um Boot Manager
É um programa que gerencia as partições que serão inicializadas em um sistema computacional. As versões atuais deste programa são instaladas no Setor de Boot Mestre (MBR - Master Boot Record) do disco rígido, fazendo com que um menu interativo seja apresentado toda a vez em que você inicializa o micro, perguntando ao usuário que partição ele deseja para boot. Se existir sistemas operacionais diferentes instalados em partições separadas, conseqüentemente terá de escolher qual sistema operacional o micro carregará em memória.
Iremos, portanto, configurar o nosso boot loader (responsável por carregar o sistema) para que o kernel seja chamado na inicialização, juntamente com o atual.
LILO (Linux Loader)
É um aplicativo responsável pela carga (boot) do sistema operacional na máquina, sendo que você pode trabalhar com ele tanto para discos IDE ou SCSI. Ele é considerado o gerenciador de boot padrão dos sistemas Linux.
Editando seu arquivo de configuração:
# nano /etc/lilo.conf
Após terminar de instalar, execute o liloconfig. Editando o seu arquivo de configuração:
# nano /etc/lilo.conf
Adicione as seguintes linhas ao final do arquivo:
---image=/boot/[caminho da imagem gerada]
label=”Novo Kernel”
initrd=/boot/initrd-2.6.x-i386-mwsf-1.img read-only
---Para que as alterações sejam lidas pelo sistema, precisamos dar o comando lilo:
# lilo
GRUB
GRUB (GRant Unified Bootloader) é um outro gerenciador de boot, desenvolvido pelo projeto GNU, também muito utilizado pelos sistemas Linux.
Assim como o Lilo, o Grub possui um arquivo centralizado para configurar o menu utilizado por ele. Vamos editar este no arquivo:
# nano /boot/grub/menu.lst
Adicione as seguintes linhas ao final do arquivo:
---root (hd0,0) kernel /boot/vmlinuz-2.6.x-i386-mwsf-1 initrd /boot//initrd-2.6.x-i386-mwsf-1.img root=/dev/hdx1 ro savedefault boot ---Depois de alterar o arquivo, precisamos atualizar o GRUB na MBR:
# grub-install /dev/hdx
U s o
d o
S hell
Sistema Operacional GNU/Linux SHELLUsando o Shell Usando o Shell Qual é seu shell?
Qual é seu shell?
#
# echo $SHELLecho $SHELL
Abrindo uma nova sessão para um usuário. Esta nova sessão assume o perfil do Abrindo uma nova sessão para um usuário. Esta nova sessão assume o perfil do usuário, com todas as características associadas a ele:
usuário, com todas as características associadas a ele:
# login # login
Tem como função desconectar um usuário de uma determina sessão: Tem como função desconectar um usuário de uma determina sessão:
# logout # logout
O objetivo é encerrar uma sessão de trabalho: O objetivo é encerrar uma sessão de trabalho:
# exit # exit Desligar: Desligar: # halt # halt # shutdown -h now # shutdown -h now # shutdown 18:00 # shutdown 18:00 # shutdown -h 10 # shutdown -h 10 # init 0 # init 0 #
# shutdown shutdown <opções> <opções> <hora> <hora> <mensagem><mensagem>
Reiniciar: Reiniciar: # reboot # reboot # shutdown -r now # shutdown -r now # shutdown -r 15 now # shutdown -r 15 now # init 6 # init 6
Exibe a quantidade de tempo desde a última reinicialização do sistema: Exibe a quantidade de tempo desde a última reinicialização do sistema:
# uptime # uptime
Página de manual e de informações sobre os comandos: Página de manual e de informações sobre os comandos:
# man
# man shutdownshutdown
ou ou
# info
# info shutdownshutdown
Processos em tempo real: Processos em tempo real:
# top # top
Processos em execução no sistema: Processos em execução no sistema:
Matando um processo: Matando um processo:
# kill -15 pid # kill -15 pid
Modificar data e hora do sistema: Modificar data e hora do sistema:
# date
# date MMDDHHMMYYMMDDHHMMYY
Atualizar a hora da bios de acordo com a hora do S.O: Atualizar a hora da bios de acordo com a hora do S.O:
# # hwclock -whwclock -w Arquitetura de máquina: Arquitetura de máquina: # arch # arch
Mostra o diretório corrente: Mostra o diretório corrente:
# pwd # pwd
Comando que muda um subdiretório corrente a partir do diretório atual: Comando que muda um subdiretório corrente a partir do diretório atual:
# cd [
# cd [diretóriodiretório]] # cd /root
# cd /root # cd
-# cd - (volta ao último diretório acessado)(volta ao último diretório acessado) # cd ..
# cd .. ((acessaacessa o diretório anterior na árvore deo diretório anterior na árvore de diretórios)
diretórios)
Este comando acima mudará o diretório atual de onde o usuário está. Há também Este comando acima mudará o diretório atual de onde o usuário está. Há também algumas abreviações de diretórios no Linux para facilitar a identificação, estes são:
algumas abreviações de diretórios no Linux para facilitar a identificação, estes são: Abreviação Significado
Abreviação Significado . . (ponto) (ponto) Diretório Diretório atualatual
..
.. (dois (dois pontos) pontos) Diretório Diretório anterior anterior ~
~ (til) (til) Diretório Diretório HOME HOME do do usuáriousuário / / (barra) (barra) Diretório Diretório RaizRaiz
-
- (hífen) (hífen) Último Último diretóriodiretório Listar diretório: Listar diretório: /# ls /# ls /# ls --color /# ls --color Parâmetro Significado Parâmetro Significado -l
-l Lista Lista os os arquivos arquivos em em formato formato detalhado.detalhado. -a
-a Lista Lista os os arquivos arquivos ocultos ocultos (que (que começam começam com com um um .).) -h
-h Exibe Exibe o o tamanho tamanho num num formato formato legível legível (combine (combine com com -l)-l) -R
-R Lista Lista também também os os subdiretórios subdiretórios encontradosencontrados Mostra o conteúdo detalhado do diretório:
# ls –lah [
# ls –lah [diretóriodiretório]]
Mostra os arquivos no formato longo em ordem inversa de Mostra os arquivos no formato longo em ordem inversa de data:data:
#ls –ltr #ls –ltr #ls –ltr [ #ls –ltr [diretóriodiretório]] l = l = longolongo t = t = datedate r = r = inversainversa
Criar novo diretório: Criar novo diretório:
# mkdir [
# mkdir [diretóriodiretório]] # mkdir
# mkdir freefree
Remover diretório vazio: Remover diretório vazio:
# rmdir
# rmdir [diretório][diretório]
Remover um diretório e todo o
Remover um diretório e todo o seu conteúdo (cuidado com este comando):seu conteúdo (cuidado com este comando):
# rm –rf [
# rm –rf [diretóriodiretório]] # rm –rf /
# rm –rf / ( Não faça isso! )( Não faça isso! )
Mostra o tamanho do diretório em Megabytes Mostra o tamanho do diretório em Megabytes
# du -msh # du -msh #
# du –msh du –msh [diretório][diretório]
du
du = É a abreviação de se referir a= É a abreviação de se referir a ddisk isk uusage (uso do disco). Indica o sage (uso do disco). Indica o espaço usado emespaço usado em disco pelos arquivos ou diretórios dados. Sintaxe:
disco pelos arquivos ou diretórios dados. Sintaxe: du [diretório].du [diretório]. Indica onde estão os binários, fontes e páginas de manual de um
Indica onde estão os binários, fontes e páginas de manual de um comandocomandodado:dado:
# whereis ls # whereis ls
Indica o caminho completo para
Indica o caminho completo para o comando dado:o comando dado:
# which ls # which ls
É geralmente utilizado para atualizar a hora e
É geralmente utilizado para atualizar a hora e a data de a data de um determinado arquivo.um determinado arquivo. Caso este arquivo não exista, ele será criado pelo
Caso este arquivo não exista, ele será criado pelo touchtouch, porém sem conteúdo algum. A, porém sem conteúdo algum. A sua sintaxe do comando touch é:
sua sintaxe do comando touch é:
Sintaxe: touch [opções] [arquivos] Sintaxe: touch [opções] [arquivos] # touch arquivo
# touch arquivo
Atualizando hora e data de um arquivo: Atualizando hora e data de um arquivo:
# touch -t
# ls - -color
# ls –color [diretório]
Criando um arquivo:
# : > [arquivo] # : > linux
Criando vários arquivos:
# touch gnu linus unix hurd
Linkando arquivos:
ln -s [arquivo_origem] [link simbólico]
Este comando é usado para gerar links simbólicos, ou seja, que se comportam como um arquivo ou diretório, mas são apenas redirecionadores que mandam seu comando para outro arquivo ou diretório, por exemplo:
$ ln -s /etc /home/user/atalho
Este comando criará o link /home/user/atalho, se você digitar o comando ls -l você verá que o diretório /home/user/atalho está apontando para /etc. Se você for para o /home/user/atalho, você na verdade estará no /etc, mas como é um link, não há diferença.
Movendo um arquivo:
# mv /root/debra /home/user/
Movendo um arquivo para o diretório local:
/home/user# mv /root/debra .
Copiando um arquivo:
# cp gnu /home/user/
# cp /root/gnu /home/user
Copiando um arquivo para o diretório local:
/home/user# cp /root/gnu .
Listando em detalhes todos os arquivos de um diretório:
: # ls -lah --color
Simulação de resultado do comando:
-rw-r--r-- 2 user user 100k 2007-02-24 11:00 gnu
Exibe um calendário:
# cal
Mostra o conteúdo de um arquivo binário ou texto:
# cat gnu
Mostra o arquivo na ordem invertida de leitura:
# tac ian
Exibe as primeiras linhas de um determinado arquivo:
# head [arquivo] # head –n [arquivo] # head -3 gnu
Exibe as ultimas linhas de um determinado arquivo:
# tail [arquivo] # tail –n [arquivo] # tail -3 gnu
Localiza um determinado arquivo especificado:
# locate linus
Atualiza a base de dados do locate:
# updatedb
O comando cat possibilita exibir o texto de um arquivo. Com o more existirá uma pausa a cada tela cheia, possibilitando a leitura do arquivo. Exemplo:
# cat [arquivo] | more # more [arquivo]
Possibilita exibir o arquivo de maneira paginada, com opção de rolagem para trás e para frente:
# cat /proc/cpuinfo | less
Para redirecionar a saída de um comando para o less use o pipe. Exibindo um arquivo em linhas numeradas:
# nl gnu
Contador de linhas, palavras e bytes:
# wc [opções] [arquivo] # wc gnu
# wc -l gnu # wc -w gnu # wc -c gnu
Visualiza de forma crescente as informações do arquivo:
# sort gnu
Visualiza de forma decrescente as informações do arquivo:
# sort -r gnu
Mostra informações de um arquivo:
# file [arquivo] # file gnu
Indica o tipo de arquivo:
# type [arquivo] # type gnu
Mostra inode com atributos MAC (Modify, Access, Changes):
# stat [arquivo] # stat gnu
Exibe a árvore de diretórios:
/# tree
Para exibir informações do sistema, tais como: o sistema operacional, versão do kernel, arquitetura da máquina e muitos outros:
# uname [opções] Versão de kernel: # uname -r Arquitetura de máquina: # uname -m Mostra o hostname: # uname -n
Mostra a data da versão do kernel: Mostra a data da versão do kernel:
# uname -v # uname -v
Mostra o nome
Mostra o nome do Sistema Operacional:do Sistema Operacional:
# uname -o # uname -o
Mostra o nome do Kernel: Mostra o nome do Kernel:
# uname -s # uname -s
Mostra uma listagem de entrada e saída de usuários no sistema: Mostra uma listagem de entrada e saída de usuários no sistema:
# last # last Exibe o histórico: Exibe o histórico: # history # history
Logins mal sucedidos: Logins mal sucedidos:
# lastb # lastb Alias e Variáveis Alias e Variáveis Alias Alias O que é alias? O que é alias?
Alias significa atalho, “nome falso” ou “pseudônimo” e pode ajudar em muito Alias significa atalho, “nome falso” ou “pseudônimo” e pode ajudar em muito sua vida no Linux.
sua vida no Linux.
Um alias para todos os usuários você edita em: Um alias para todos os usuários você edita em:
# vi
# vi /etc/bash./etc/bash.bashrcbashrc
Um alias para root você edita em: Um alias para root você edita em:
# vi /root/.bashrc # vi /root/.bashrc
Atualize o arquivo toda vez que você adicionar conteúdo ao arquivo: Atualize o arquivo toda vez que você adicionar conteúdo ao arquivo:
source /etc/bash.bashrc source /etc/bash.bashrc ou ou source /root/.bashrc source /root/.bashrc Exemplos: Exemplos: alias opencd=”eject
alias opencd=”eject; sleep 5s; ; sleep 5s; eject -t”eject -t” alias
alias ls=”ls ls=”ls --color --color -lah”-lah”
OBS: sempre editar ao final do arquivo. OBS: sempre editar ao final do arquivo.
Variáveis Variáveis
O shell é executado no sistema controlado por variáveis de ambiente (espaços de O shell é executado no sistema controlado por variáveis de ambiente (espaços de
Variáveis locais - são as variáveis disponíveis somente pelo shell corrente e que Variáveis locais - são as variáveis disponíveis somente pelo shell corrente e que não está sendo acessado por subprocessos do sistema.
não está sendo acessado por subprocessos do sistema.
Variáveis globais - estão disponíveis tanto para o shell corrente como para os Variáveis globais - estão disponíveis tanto para o shell corrente como para os subprocessos que fazem uso delas.
subprocessos que fazem uso delas.
Descrição de algumas variáveis de ambiente, que são importantes para facilitar o Descrição de algumas variáveis de ambiente, que são importantes para facilitar o entendimento:
entendimento:
HOMEHOME - Esta variável identifica o diretório do usuário doméstico, use o- Esta variável identifica o diretório do usuário doméstico, use o
comando
comando echo $HOMEecho $HOME para saber qual é o para saber qual é o seu diretório HOME.seu diretório HOME.
PATHPATH - Esta é a variável de ambiente que define quais diretórios pesquisar e a- Esta é a variável de ambiente que define quais diretórios pesquisar e a
ordem na qual eles são pesquisados para encontrar um determinado comando, ordem na qual eles são pesquisados para encontrar um determinado comando, para saber como o sistema faz esta pesquisa e quais diretórios ele procura um para saber como o sistema faz esta pesquisa e quais diretórios ele procura um
comando use o comando
comando use o comando echo $PATHecho $PATH..
OSTYPEOSTYPE - Essa variável define o tipo de sistema operacional em uso. Para- Essa variável define o tipo de sistema operacional em uso. Para
saber qual é o sistema operacional em uso use o comando
saber qual é o sistema operacional em uso use o comando echo $OSTYPEecho $OSTYPE..
SHELLSHELL - Esta variável identifica qual shell está sendo usado, use o comando- Esta variável identifica qual shell está sendo usado, use o comando
echo $SHELL
echo $SHELL para saber qual é o para saber qual é o shell que o seu sistema está usando.shell que o seu sistema está usando.
TERMTERM - Esta variável define o tipo de terminal que está sendo usado, use o- Esta variável define o tipo de terminal que está sendo usado, use o
comando
comando echo $TERMecho $TERM para saber qual o tipo de terminal está sendo usado pelopara saber qual o tipo de terminal está sendo usado pelo sistema.
sistema.
USERUSER - Pré-define o nome de conta como variável de ambiente, ou seja, ao se- Pré-define o nome de conta como variável de ambiente, ou seja, ao se
logar ao sistema a ID do usuário é combinada com um nome de conta, para logar ao sistema a ID do usuário é combinada com um nome de conta, para saber qual é o
saber qual é o usuário corrente use o comandousuário corrente use o comando echo USERecho USER..
MAILMAIL - Esta é a variável de correio eletrônico. Para saber como seu mail está- Esta é a variável de correio eletrônico. Para saber como seu mail está
definido use o comando
definido use o comando echo $MAILecho $MAIL..
LOGNAMELOGNAME - Esta variável é um sinônimo para USER. Para saber qual é o seu- Esta variável é um sinônimo para USER. Para saber qual é o seu
logname use o comando
logname use o comando echo $LOGNAMEecho $LOGNAME..
Existem vários tipos de shell, entre os quais podemos visualizá-los no arquivo Existem vários tipos de shell, entre os quais podemos visualizá-los no arquivo /etc/shells com os seguintes comandos:
/etc/shells com os seguintes comandos: # cat /etc/shells
Para visualizar as variáveis de ambiente no sistema podemos utilizar os Para visualizar as variáveis de ambiente no sistema podemos utilizar os comandos a seguir: comandos a seguir: Variáveis locais: Variáveis locais: $ set $ set Variáveis globais: Variáveis globais: $ env $ env ou ou $ printenv $ printenv
Para atribuir um valor a
Para atribuir um valor a uma variável local. Exemplo:uma variável local. Exemplo: $$ LINUX=freeLINUX=free
$$ echo $LINUXecho $LINUX free
free
O comando echo exibe o valor de uma variável de ambiente. O comando echo exibe o valor de uma variável de ambiente.
Vamos verificar se a variável aparece na relação de variáveis locais. Exemplo: Vamos verificar se a variável aparece na relação de variáveis locais. Exemplo:
$ set | grep LINUX $ set | grep LINUX LINUX=free
LINUX=free
Agora vamos transformar esta variável local uma variável global. Para isso Agora vamos transformar esta variável local uma variável global. Para isso devemos usar o comando export:
devemos usar o comando export:
# export LINUX # export LINUX # env | grep LINUX # env | grep LINUX LINUX=free
LINUX=free
Para deletar uma variável de ambiente, usamos o comando unset e para Para deletar uma variável de ambiente, usamos o comando unset e para verificarmos se a variável foi
# unset LINUX
# echo $LINUX
Agora vamos editar o nosso prompt de comando que é representado pela variável PS1. Podemos utilizar os seguintes argumentos para esta tarefa:
Argumento Descrição
\h Host da máquina.
\W Diretório corrente.
\w Caminho completo do diretório corrente.
\u Nome do usuário.
\t Hora do sistema.
\d Data.
\\$ $ para usuário comum e # para root. # export PS1="[\h@\w]\\$" [trabalho@~]#
Observe que o prompt mudará, ele deve mostrar o host (trabalho), o caminho completo do diretório corrente (~) e o tipo de caractere que faz referência ao prompt.
Podemos criar variáveis globais editando-as no arquivo /etc/profile: # vi /etc/profile
Podemos criar variáveis que são executadas somente no ambiente do usuário editando o arquivo ~/.bash_profile, sendo executadas automaticamente no login:
Introdução a programação em Shell Script Passos para criar um Shell Script
Escolha um nome para o script
Use apenas letras minúsculas e evite acentos, símbolos e espaço em branco.
nome: sistema
Escolha o diretório onde colocar o script
Para que o script possa ser executado de qualquer parte do sistema, mova−o para
um diretório que esteja no seu PATH. Para ver quais são estes diretórios, use o comando:
echo $PATH
Se não tiver permissão de mover para um diretório do PATH, deixe−o dentro de
seu HOME.
Crie o arquivo e coloque nele os comandos
Use o editor de textos de sua preferência para colocar todos os comandos dentro do arquivo.
Coloque a chamada do Shell na primeira linha
A primeira linha do script deve conter: # !/bin/bash para que ao ser executado, o sistema saiba que é o Shell quem irá interpretar estes comandos.
Use o seguinte comando para que seu script seja reconhecido pelo sistema como um comando executável:
chmod +x sistema
Problemas na execução do Script "Comando não encontrado" Descrição:
O Shell não encontrou o seu script. Verifique se o comando que você está chamando tem exatamente o mesmo nome do seu script. Lembre−se que no Linux as letras
maiúsculas e minúsculas são diferentes, então o comando "SISTEMA" é diferente do comando "sistema".
Caso o nome esteja correto, verifique se ele está no PATH do sistema. O comando echo $PATH mostra quais são os diretórios conhecidos, mova seu script para dentro de um deles, ou chame−o passando o caminho completo.
Se o script estiver no diretório corrente, chame−o com um ./ na frente. Exemplo:
$ ./sistema
Caso contrário especifique o caminho completo desde o diretório raiz: $ /tmp/scripts/sistema
"Permissão Negada" Descrição:
O Shell encontrou seu script, mas ele não é executável.
Use o comando chmod +x nome_escript para torná−lo um arquivo executável.
"Erro de Sintaxe" Descrição:
O Shell encontrou e executou seu script, porém ele tem erros.
Um script só é executado quando sua sintaxe está 100% correta. Verifique os seus comandos, o erro pode ser algum IF ou aspas que foram abertos e não foram fechados. A própria mensagem informa o número da linha onde o erro foi encontrado.
Criando um Shell Script
Executar vários comandos seguidos resulta num bolo de texto na tela, misturando as informações e dificultando o entendimento. Vamos trabalhar um pouco, fazendo a saída do script de uma forma legível.
O comando echo serve para mostrar mensagens na tela. Vamos criar uma mensagem de cada comando antes de executá-lo:
Crie um diretório: mkdir /tmp/shells Acesse o diretório: cd /tmp/shells Escreva o arquivo: nano msg.sh
Para usar o echo, basta colocar o texto entre "aspas". Se nenhum texto for colocado, uma linha em branco será exibida.
Para o script ficar melhor, vamos colocar uma interação com o usuário, solicitando uma confirmação antes de executar os comandos:
O comando "read" leu o que o usuário digitou e guardou na variável RESPOSTA. Logo em seguida, o comando "test" checou se o conteúdo dessa variável era "n". Se afirmativo, o comando "exit" foi chamado e o script foi finalizado. Nessa linha há vários detalhes importantes:
O conteúdo da variável é acessado colocando−se um cifrão "$" na
O comando test é muito útil para fazer vários tipos de checagens em
textos e arquivos;
O operador lógico "&&", só executa o segundo comando caso o
primeiro tenha sido OK. O operador inverso é o "||".
Com o tempo, os scripts crescem e quanto maior, mais difícil encontrar o ponto certo onde fazer a alteração ou corrigir algum erro.
Para poupar horas de estresse e facilitar as manutenções futuras, é necessário deixar o código visualmente mais agradável e espaçado, devemos colocar comentários esclarecedores.
Basta iniciar a linha com um "#" e escrever o texto do comentário em seguida. Estas linhas são ignoradas pelo Shell durante a execução. O cabeçalho com informações sobre o script e seu autor também é importante para se ter uma visão geral do que o script faz, sem precisar decifrar seu código. Exemplo:
Alguns dos conceitos vistos no script anterior Variáveis
As variáveis são a base de qualquer script. É dentro delas que os dados obtidos durante a execução do script serão armazenados. Para definir uma variável, basta usar o sinal de igual "=" e para ver seu valor, usa−se o "echo":
Não podem haver espaços ao redor do igual "="
Ainda é possível armazenar a saída de um comando dentro de uma variável. Ao invés de aspas, o comando deve ser colocado entre "$(...)", veja:
O comando "unset" apaga uma variável. Para ver quais as variáveis que o Shell já define por padrão, use o comando:
env
Trabalhando com modos de inicialização Processo init
O init é o primeiro processo iniciado no Linux, logo após a carga do kernel do sistema. Quando é disparado, o init continua a carga do sistema, geralmente executando vários scripts que irão verificar e montar sistemas de arquivos, configurar teclado e iniciar servidores, entre outras tarefas.
O init utilizado no Linux permite que existam diversos níveis de execução no sistema. Um nível de execução é uma configuração de software do sistema que define quais processos devem ser inicializados e quais não devem, e também de que modo são inicializados.
O administrador do sistema é quem define qual será o nível de execução em que o sistema e os processos serão executados.
Runlevels
Toda a inicialização do sistema é baseada em runlevels, ou seja, níveis de execução. Os sistemas Linux possuem 6 runlevels:
Níveis de Execução Ação
0 desligar o sistema
1 modo monousuário, também chamado de modo single
2 modo multiusuário, texto
3 modo multiusuário, texto, com serviços
4 não utilizado
5 modo gráfico (X11)