• Nenhum resultado encontrado

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

N/A
N/A
Protected

Academic year: 2021

Share "SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar"

Copied!
29
0
0

Texto

(1)

1

- Módulo 5 - GERÊNCIA DE SISTEMA

Linux é um sistema operacional tipo Unix que foi desenvolvido por Linus Torvalds inspirado no sistema Minix, que é uma versão simplificada do Unix, e que por fim veio do sistema Multics. O Linux é um exemplo de desenvolvimento com código aberto e de software livre. O seu código fonte está disponível sob licença GPL para qualquer pessoa utilizar, estudar, modificar e distribuir livremente.

Um sistema Linux é capaz de funcionar em um grande número de arquiteturas computacionais. É utilizado em supercomputadores, computadores pessoais e até em aparelhos celulares.

O sistema operacional linux não amarra ambiente ou contexto a condições prefixadas de fábrica pelos seus fornecedores.

A idéia de uso de um software livre e a de customizar e configurar as necessidades do seu usuário.

Alguns sistemas operacionais têm seu Kernel prefixado de fábrica, exigindo o upgrade ou até troca de sistema a cada

bug

corrigido pelo fornecedor. Nesse contexto o linux permite que possa ser feito um estudo e compilação de recursos segundo as necessidades de uso.

Inicialmente um sistema linux tem um nível de segurança considerável. Todo usuário tem uma identificação personalizada tendo roles de acesso às funcionalidades.

Por questões de operacionalidade é criado um usuário denominado como root (raiz) que não possui limitações operacionais.

Diante do “poder” do superusuário, a NSA (

National Security Agency

) dos estados unidos determinou que os sistemas linux não deverão possuir a funcionalidade de identificação de usuário como

root

diretamente. Quando necessário, um super usuário pode ser invocado para executar uma atividade a partir do comando sudo, onde emula a identificação de superusuário na hora de executar atividades:

#sudo ls-la /etc

Assim, gerenciar o sistema operacional Linux bem como manipulá-lo passa pela correta compreensão dos comandos no

prompt

de comandos.

1. GERENCIAMENTO DE PROCESSOS

Comandos no Linux para administração de processos:

a) top

Permite que sejam visualizadas as informações dos processos e estados de memórias e processadores.

É uma ferramenta de tempo real e, portanto não precisa ser atualizada para ver os diferentes momentos de leitura.

Permite a verificação de trabalho de cada um dos processadores em forma opcional.

Os parâmetros mais importantes são:

-p id só visualiza os dados desse processo

(2)

2 -H mostra as threads vinculadas com tal processo

b) htop

Possui recursos similares aos do comando top.

O comando htop pode não estar disponível nas instalações padrão do Linux. O uso de aplicativos como apt-get (para distribuições Debian e derivadas) ou yum (para Red-hat ou derivadas) podem fazer a instalação do item em questão de poucos minutos.

c) ps

Permite a visualização de um ou todos os processos em andamento. A variedade de parâmetros faz impossível a reprodução dos mesmos aqui. Destacam-se:

-e para a visualização de todos os parâmetros;

-H para a visualização em forma de árvore hierárquica de processos;

-F para visualização de threads

d) kill e killall

São comandos que acabam com processos em andamento. O comando kill mata um único processo informado pelo id.

O comando killall matará todos os comandos que obedeçam a um nome determinado.

e) renice

Altera a prioridade de funcionamento de um determinado processo. Os processos podem ser individuais, de um usuário ou de um grupo.

f) strace

Este comando realiza o trace (roteamento) de todas as chamadas de sistema que são feitas num determinado comando.

A saída deste comando pode ser realizada a um arquivo. Os dados resultantes são a seqüência de chamadas de threads, com sua posição de memória, id de processos e um conjunto de dados vinculados.

2. GERENCIAMENTO DE MEMÓRIA

Os comandos abaixo permitem a visualização e gerenciamento da memória:

a) free

Mostra espaços livres e ocupados da memória RAM e

SWAP

. Parâmetros:

-b Visualiza os dados em bytes -k Visualiza os dados em kilobytes -m Visualiza os dados em megabytes -g Visualiza os dados em gigabytes

(3)

3

Como se vê na figura abaixo há 249 Mb livres de memória RAM e, portanto não há uso de memória SWAP.

Figura 1 - Comando Free

Na linha Mem é mostrada a memória física, em -/+ buffers/cache são mostrados somente os processos que estão em execução e quanto tem disponível, ignorando os resíduos de outros processos e em SWAP é mostrada a área de troca usada.

b) memstat

Lista todos os processos, executáveis e

Libraries

partilhadas que usam memória virtual.

Identifica quem está usando a memória virtual alta. De acordo com o manual do Linux, este comando tem as seguintes opções de visualização:

-w Mostra os resultados estendidos sem truncar informações em 80 colunas

A desvantagem experimentada com o comando memstat é a quantidade de informações que ele retorna. Por este motivo pode ser avaliada a praticidade de concatenar comandos com filtros específicos.

Exemplo:

memstat -w | grep /var/cache

O resultado obtido mostra o consumo de memória por módulo, o nome de cada um deles e os processos ao qual está vinculado.

c) pmap

Reporta o mapa de memória de um determinado processo. Este comando é específico de um processo em particular. Ele poderá mostrar os módulos que são carregados nesse processo.

Para obter as informações deverá ser usado o comando ps para que seja visualizado o id do processo para depois fornecê-lo como atributo do pmap.

3. GERENCIAMENTO DE MEMÓRIA VIRTUAL

Um comando útil para verificação da memória virtual no Linux é o vmstat. Como seu nome sugere, são relatórios de estatísticas de memória virtual. Isso mostra o quanto de memória virtual existe, quanto é livre e atividade de paginação. É possível ainda observar

Page-ins

e

Page-

outs

.

(4)

4

Para monitorar a atividade de memória virtual em seu sistema, é melhor usar o vmstat com um atraso. Um atraso é o número de segundos entre as atualizações. Se não for fornecido um atraso, o relatório constará as médias desde a última inicialização. Dessa forma, cinco segundos é o intervalo de atraso recomendado.

A sintaxe do comando é:

vmstat [

intervalo

] [

contagem

]

Para executar vmstat com um atraso de cinco segundos, digite:

vmstat 5

Ainda é possível especificar uma contagem, que indica quantas atualizações deseja-se visualizar antes do comando ser encerrado.

Para executar vmstat com dez atualizações, cinco segundos de diferença, o comando é o seguinte:

vmstat 5 10

Se não for especificado nenhum parâmetro, o vmstat mostra o status da memória virtual e volta imediatamente para a linha de comando. A descrição dos campos do vmstat são as seguintes:

Processos

r - Número de processos aguardando execução.

b - Número de processos em espera não interrompíveis.

w - Número de processos extraí-dos do arquivo de troca ou caso contrário em execução.

Memória

swpd - A quantidade de memória virtual usada em Kb.

free - Quantidade de memória livre em Kb.

buff - Quantidade de memória usada como buffer em Kb.

Memória Virtual

si - Quantidade de memória gravada para o disco Kb/s.

so - Quantidade de memória retirada do disco em Kb/s.

Entrada/Saída

bi - Blocos enviados para um dispositivo de bloco (medido em blocos por segundo).

bo - Blocos recebidos de um dispositivo de bloco (em blocos por segundo).

Sistema

in - Número de interrupções por segundo, incluindo o

clock

. cs - Número de mudanças de contexto por segundo.

Porcentagem do total de tempo da CPU us - Tempo do usuário

sy - Tempo do sistema id - Tempo ocioso

Pode-se também usar o comando top para mostrar memória e estatísticas

swap

como vimos no módulo anterior.

(5)

5 4. GERENCIAMENTO DE SISTEMA

Durante a utilização cotidiana do Linux é necessário acessar a algumas informações do sistema, bem como alterar configurações. Para o administrador Linux bem desempenhar suas funções é essencial poder identificar espaços livres, verificar os comandos, hora do sistema, partições, etc.

a) df

O comando df mostra o espaço livre/ocupado de cada partição. Pode ser utilizado junto com várias opções, se for utilizado sozinho, mostrará o espaço usado e disponível de todos os sistemas de arquivos atualmente montados.

A sintaxe é: df [opções]

Opções:

-a - inclui sistema de arquivos com 0 blocos

-h - mostra o espaço livre/ocupado em MB, KB, GB em vez de bloco.

-k - lista em Kbytes

-l - somente lista sistema de arquivos locais -m - lista em Mbytes

-T - lista o tipo de sistema de arquivos de cada partição.

Exemplo:

# df -a

b) du

O comando du é utilizado para saber o espaço utilizado em disco, por pastas ou arquivos, de maneira rápida e fácil, diretamente no terminal.

A sintaxe é: du [opções] [arquivo|diretório]

Opções:

-a - Mostra todos os arquivos e não somente os diretórios.

-c - Mostra um total no final da listagem.

-h - Mostra as informações de maneira mais amigável.

-s - Mostra um sumário do diretório especificado e não o total de cada subdiretório.

-S - Exclui os subdiretórios da contagem.

Exemplo:

# du –h /home

c) durep

Cria relatórios de uso de disco com gráficos de barras, permitindo que se possa deduzir facilmente que os diretórios estão usando mais espaço. Embora durep pode produzir saída de texto semelhante ao du, o seu poder real reside na capacidade de armazenar relatórios em um arquivo, que pode então ser visto como uma página web com o script fornecido cgi. Necessita ser instalado.

d) last

Mostra a listagem dos últimos usuários logados.

(6)

6 A sintaxe é: last [opções]

Opções:

-n [num] - Mostra [num] linhas. Caso não seja usada, todas as linhas são mostradas.

-R - Não mostra o campo HostName.

-a - Mostra o

hostname

na última coluna. Será muito útil se combinada com a opção -d.

-d - Usa o DNS para resolver o IP de sistemas remotos para nomes DNS.

-x - Mostra as entradas de desligamento do sistema e alterações do nível de execução do sistema.

Exemplos:

# last - Mostra a listagem geral

# last -a - Mostra a listagem geral incluindo o nome da máquina

# last aluno - Mostra somente atividades do usuário aluno

# last reboot - Mostra as reinicializações do sistema

# last tty1 - Mostra todas as atividades no tty1

e) history

O comando history (histórico) mostra a lista dos últimos comandos executados pelo usuário corrente. Isso é útil quando há a necessidade de executar um comando extenso, com muitos parâmetros, do qual não consigamos nos lembrar, ou para fazer auditoria.

A sintaxe é: history [opções]

Opções:

-c – Limpa os últimos comandos digitados.

-r – Recupera os últimos comandos digitados.

Exemplo:

# history

# history -c

# history -r

f) dmesg

O comando dmesg reapresenta as mensagens explicitadas pelo kernel durante a inicialização do sistema, permitindo examiná-las já com o sistema iniciado.

A sintaxe é: dmesg [opções]

Opções:

-n num - mostra apenas mensagens de inicialização do nível num.

-c - apaga as mensagens após exibi-las (apenas o root pode usar este parâmetro).

Exemplo:

# dmesg -n1

g) arch

Exibe a arquitetura do computador. Equivale ao comando “uname –m”

Exemplo:

# arch

(7)

7 h) date

Mostrar a hora atual no formato dado, ou definir a data do sistema.

A sintaxe é: date [opção] ... [ +format] [format +]

date [ -u|--utc|--universal ] [ MMDDhhmm [[ CC ] YY ][ .ss ]] data [-u | - utc

| - universal] [. MMDDhhmm [[CC] YY] [ss]]

Opções:

-D, - date - tempo de exibição descrito por STRING.

-r , --reference - exibir a última modificação de ARQUIVO -R , --rfc-822 - tempo definido descrito por STRING

-u , --utc , --universal - imprimir ou conjunto de Tempo Universal Coordenado Parâmetros:

%A - dia da semana (domingo,..., sábado).

%B - nome do mês (janeiro,..., dezembro).

%H - hora do dia (0 a 23).

%M - minuto (0 a 59).

%S - segundos (0 a 61).

%T - hora no formato hh:mm:ss.

%Y - ano.

%a - dia da semana abreviado (dom,..., sab).

%b - nome do mês abreviado (jan,..., dez).

%c - dia da semana, data e hora.

%d - dia do mês (00-31).

%j - dia ano (1 a 366).

%m - mês (1 a 12).

%s - número de segundos desde das zero horas de 01/01/1970.

%w - dia da semana, onde 0 = domingo, 1 = segunda,..., 6 = sábado.

%x - representação da data local.

%y - os dois últimos dígitos do ano.

%r - formato de 12 horas completo (hh:mm:ss AM/PM)

Exemplos:

# date +%d/%m/%y

# date "+%d %B %Y"

# date mmddHHMMYYYY

# date

Para definir e sincronizar com o relógio do hardware:

# date 091418302008 | hwclock -w

i) hwclock

Consulta ou define o relógio do hardware.

A sintaxe é hwclock [Opção]

Opções:

-a – Adiciona ou subtrai tempo ao relógio.

(8)

8

--date=data – Data e a hora que dever atribuída ao relógio. Serve como argumento para o comando date.

- r – Consulta o relógio do hardware.

- w – Atribui ao hardware a data/hora atuais do sistema.

Exemplos:

# date 091418302008

# hwclock -w

j) fdisk/sfdisk

Os comandos fdisk e sfdisk na verdade são utilitários completos para criar/remover/alterar partições de um ou mais discos. Enquanto o fdisk, mais popular, lida com o usuário de forma interativa, o sfdisk aceita somente linhas de comandos e parâmetros.

O parâmetro -l destes dois comandos mostram informações sobre um disco e sua lista de partições com detalhes. Por isso, estes comandos são extremamente úteis para saber qual o atual esquema de particionamento de um computador.

A sintaxe é: fdisk [Opção] [disco|partição]

Opções:

-v - Mostra o número da versão do fdisk -l - Lista a tabela de partições

-b - Na listagem de tabelas de partições, imprime uma coluna de início.

-u - Na listagem de tabelas de partições, mostra os tamanhos em setores ao invés de cilindros.

-s partição - O tamanho da partição (em blocos) Exemplos:

# fdisk –l

# fdisk /dev/hda

k) tty

Imprimir o nome do arquivo do terminal conectado à entrada padrão.

A sintaxe é: tty [Opções]

Opções:

--help - Mostra mensagem de ajuda e sai.

-s ou --silent ou –quiet - Não mostra nada na saída padrão, mas retorna um estado de saída.

--version - Mostra informações sobre a versão e sai.

Exemplo:

# tty

l) runlevel

Mostra o

runlevel

anterior e o atual. Seguindo o padrão anterior atual. Se o anterior for "N"

é porque não houve alteração.

Para altetar o runlevel utiliza-se o comando init.

A sintaxe é: runlevel

(9)

9 Exemplo:

#runlevel

#init 0 (

Desliga a máquina

)

m) rcconf

Utilitário usado para gerenciar os serviços do seu servidor. Necessita ser instalado. Depois de instalado abrirá uma tela azul. Marque para ativar a inicialização e desmarque para desativar a inicialização.

4.1. Parar e inicializar serviços

Primeiramente é necessário diferenciar

service

,

daemon

e

process

.

-

Service

(serviço), como a própria tradução para português diz, tem a função de oferecer serviços à outros programas. Ele geralmente é iniciado/controlado por um

shell script

(arquivo executável que contém várias linhas de comandos em shell). Exemplo, para colocar o serviço SSH no ar, utilizamos o comando "/etc/init.d/ssh start". Esse arquivo "/etc/init.d/ssh" nada mais é do que um

shell script

que, dentre suas várias linhas, executa o daemon

"sshd"

que fica em

background

oferecendo serviços à quem precisar (por exemplo, um cliente ssh).

-

Daemon

(tarefa) é um arquivo binário executável que quando chamado pelo serviço correspondente (ex: /etc/init.d/ssh) se torna um processo em

background

. Um exemplo é o

"/usr/sbin/sshd" que é um daemon do SSH que abre a porta 22 TCP, oferecendo serviços de conexão remota segura.

-

Process

(processo) é um binário executável que está na memória. Esse binário executável pode ser um daemon ou qualquer outro tipo binário executável. Além disso, ele pode está

background

ou não ou pode está oferecendo serviços ou não.

O daemon "/usr/sbin/sshd" quando executado é enviado para a memória do computador, virando um processo do sistema. Numa outra mão, temos os binários que não são daemons, como o soffice.bin (OpenOffice) que são processos que ficam em

foreground

, ou seja, é possível vê-los na tela do meu computador e geralmente não oferecem serviços à outros programas.

Exemplos:

# /etc/init.d/ssh start

# /etc/init.d/ssh stop

# /etc/init.d/ssh restart

# /etc/init.d/ssh reload

5. GERENCIAMENTO DE HARDWARE

A forma como o sistema operacional trabalha com o hardware é fator decisivo no desempenho e estabilidade do sistema.

Um processador pode ser muito rápido por possuir diversos recursos, mas se o sistema operacional não tiver suporte a esses recursos, não será possível extrair o máximo de desempenho do processador.

(10)

10

Da mesma forma, um sistema pode ter muita memória RAM disponível, mas se o gerenciamento de memória do sistema operacional for ineficaz, inevitavelmente teremos problemas de lentidão e até mesmo travamentos.

Uma grande vantagem do GNU/Linux sobre outros sistemas operacionais está na quantidade de itens de hardware que são suportados nativamente, ou seja, que não requerem a instalação de drives externos. Geralmente, ao término da instalação de um sistema GNU/Linux todos os itens já estão instalados, configurados e funcionando, isso porque, quando se desenvolve o suporte a um novo item de hardware, ele é adicionado ao kernel Linux, tornando-se nativo. “

Entre o sistema operacional e o sistema computacional existem diversas camadas que conversam umas com as outras permitindo uma resposta em conjunto.

Quando instalado um hardware podem existir atualizações de determinadas camadas para aproveitamento maior dos recursos produzidos. No ambiente UNIX/Linux estas camadas são denominadas de

Hardware Abstraction Layer

ou HAL. O HAL permite que aplicações

desktop

façam a descoberta e uso do hardware dos sistemas computacionais a traves de simples, portáveis e abstratas API´s.

Figura 2 - Hardware Abstraction Layer

O Linux se refere aos itens de hardware como dispositivos (

devices

), e os referencia como arquivos. Os arquivos de dispositivo ficam no diretório /dev/. Dentro desse diretório existem vários arquivos, um para cada dispositivo, além de subdiretórios que agrupam dispositivos de mesmo tipo.

Veja abaixo alguns exemplos de arquivos de dispositivo:

/dev/fd0: Primeira unidade de disquete;

/dev/hda1: Primeira partição do primeiro disco rígido IDE;

/dev/psaux: Mouse PS/2;

/dev/dsp: Placa de som;

/dev/ttyS0: Primeira porta serial de comunicações, geralmente aquela utilizada pelo mouse serial (COM1);

/dev/usb/lp0: Primeira impressora ligada USB;

/dev/video0: Primeira placa de captura de vídeo;

/dev/lp0: Primeira porta paralela, geralmente usada por impressoras;

/dev/null: Dispositivo nulo, usado para descartar saídas de programas;

(11)

11 5.1. Criando novos dispositivos

As distribuições GNU/Linux atuais possuem sistemas que criam automaticamente os arquivos de dispositivos para os novos itens de hardware que são instalados.

Entretanto, como já dito, isso só é válido para o hardware que possui suporte nativo no kernel Linux. Os demais vão requerer uma instalação manual, incluindo, eventualmente, a criação do arquivo de dispositivo correspondente no diretório /dev/.

Para isso, vamos utilizar duas ferramentas:

a) MAKEDEV

O MAKEDEV fica localizado em /sbin/, possuindo um link simbólico dentro do diretório /dev/. Ele é utilizado para criar, remover e atualizar novos arquivos de dispositivo no diretório /dev/.

b) mknod

O mknod é usado para criar manualmente um arquivo de dispositivo dos tipos caracter ou bloco. Os dispositivos de bloco são os que trabalham com armazenamento de dados, como unidades de disco rígido, CD-R/RW, disquete, etc., e utilizam

buffer

.

Para MAKEDEV, basta acessar o diretório /dev/ e executá-lo com os devidos parâmetros.

# cd /dev

# ./MAKEDEV [opções] [parâmetros]

As opções do MAKEDEV são:

-n: Não atualiza os arquivos de dispositivo, apenas exibe as ações que seriam feitas;

-d: Apaga os dispositivos existentes;

-v: Exibe mensagens informando o que está sendo feito durante a execução do MAKEDEV.

Os principais parâmetros são:

update: Atualiza os dispositivos, criando arquivos para os novos e apagando os que não existem mais;

generic: Cria uma lista genérica de dispositivos, o básico para o uso do sistema;

ram: Cria os dispositivos de ramdisk;

initrd: Cria a ramdisk que será carregada pelo sistema operacional durante a inicialização;

cpu ou microcode: Cria os dispositivos da interface de atualização do microcódigo do processador no diretório /dev/cpu/;

rom: Cria os dispositivos de memória ROM (somente leitura);

console: Cria novos consoles virtuais (terminais);

std: Cria os dispositivos do tipo mem, kmem, port, core, full, random, urandom, tty e loop.

Para criar um novo dispositivo, acesse o diretório /dev/, e utilize o mknod seguido dos parâmetros adequados.

# cd /dev

# mknod [opções] [nome] [tipo] [maior] [menor]

(12)

12 As principais opções são:

-m: Determina as permissões do arquivo gerado;

--help: Exibe os principais parâmetros do mknod;

--version: Exibe a versão do mknod.

Em [nome], coloque o nome do arquivo de saída. Pode ser qualquer nome formado de apenas uma palavra, sem espaços ou caracteres especiais, e de preferência todo em minúsculas.

Os tipos que podem ser usados são:

b: Cria um dispositivo de bloco;

c ou u: Cria um dispositivo de caracter;

p: Cria um FIFO, que possibilita monitorar o tráfego de informações através de um determinado dispositivo.

Depois, temos que colocar o número maior e o menor do dispositivo. Para isso, veja o arquivo /proc/devices, procure o dispositivo que você criar, e anote o número que aparece na primeira coluna.

5.2. Ferramentas para visualização e alteração do ambiente computacional

Algumas das funcionalidades mais práticas que os ambientes operacionais abertos oferecem de forma transparente é que o administrador do ambiente operacional, seja ele um usuário de um único equipamento ou de uma vasta rede de computadores, tem comandos que lhe permitem realizar verdadeiras “fotografias” do sistema computacional que se encontra em suas mãos.

A seguir são apresentadas algumas ferramentas que permitem a visualização e alteração do ambiente computacional:

a) lspci

Identificar o hardware de um computador. Obtém onde (qual barramento PCI) o hardware está localizado, o tipo de hardware, sua marca e modelo.

A sintaxe é: lspci[Opções]

Opções:

-b – Exibe os IRQ’s e os endereços conforme são vistos pelas placas no barramento PCI.

-d[fabricante]:[id] – Exibe apenas os dispositivos com o fabricante e o ID de dispositivo especificados.

-M – Aciona o mapeamento do barramento PCI, para localizar todos os dispositivos.

-t – Exibe os barramentos PCI em formato de árvore.

-v – Exibe informações detalhadas sobre os dispositivos.

Exemplo:

# lspci -v

b) lsusb

Exibe informações sobre os barramentos USB do computador e sobre os dispositivos a eles conectados.

(13)

13 A sintaxe é lsusb[Opções]

Opções:

-D – Exibe informações sobre um dispositivo.

-t – Exibe os barramentos USB em um formato de árvore.

-v – Exibe informações detalhadas sobre os dispositivos.

Exemplo:

# lsusb –t

c) disktype

Exibe qual sistema de arquivos está sendo utilizado. Necessita ser instalado.

A sintaxe é disktype[Opções]

Exemplo:

# disktype /dev/hda1

d) lshw

Fornece informações detalhadas da configuração do hardware de uma máquina. Ele pode relatar a exata configuração da memória, versão do firmware, configuração da placa mãe, versão e velocidade da CPU, configuração da memória cache, velocidade do barramento, etc.

A sintaxe é lshw[Opções]

Opções:

-short - Lista o hardware de forma resumida.

-businfo - Mostra as informações do barramento.

-C xxxxx - Lista apenas os dispositivos de uma determinada classe, exemplo:

-C disk -C storage - Essas classes estão explicadas no arquivo gerado pelo meu hardware e disponível no artigo.

-enable xxx - Habilita o modo de detecção de hardware, exemplo: lshw -enable dmi

-disable xxx - Habilita e desabilita os modos de detecção de hardware, exemplo:lshw - disable dmi

-html - Gera um relatório em html.

-xml - Gera um arquivo em xml.

Exemplo:

Para gerar os relatórios basta redirecionar a saída do lshw para um arquivo, exemplo:

# lshw -html >> hardware.html

# lshw -short >> hardware_short.txt

# lshw -xml -C system >> hardware.xml

# lshw >> hardware.txt

e) hwinfo

Exibe informações sobre todos, ou um hardware em específico.

A sintaxe é hwinfo[Opções]

Opções:

--short – Exibe uma pequena lista.

--hw_item – Exibe informações de um hardware em específico.

(14)

14

hw_item pode ser

all, bios, block, bluetooth, braille, bridge, camera, cdrom, chipcard, cpu, disk, dsl, dvb, fingerprint, floppy, framebuffer, gfxcard, hub, ide, isapnp, isdn, joystick, keyboard, memory, modem, monitor, mouse, netcard, network, partition, pci, pcmcia, pcmcia-ctrl, pppoe, printer, scanner, scsi, smp, sound, storage-ctrl, sys, tape, tv, usb, usb-ctrl, vbe, wlan, zip

Dentro do diretório /proc/ estão diversos arquivos que contém informações avançadas sobre o sistema. Para ver essas informações, basta usar o cat.

f) cat /proc/interrupts

Exibe os IRQ’s em uso no sistema.

Exemplo:

# cat /proc/interrupts

g) cat /proc/dma

Exibe os canais de DMA em uso no sistema.

Exemplo:

# cat /proc/dma

h) cat /proc/ioports

Exibe os endereços de

I/O

, em uso no sistema.

Exemplo:

# cat /proc/ioports

i) cat /proc/iomem

Mostra o mapa de memória de sistema para cada periférico físico instalado. Na coluna da esquerda tem os endereços de memória ocupados e na coluna da direita tem o recurso que a ocupa.

Exemplo:

# cat /proc/iomem

j) cat /proc/cpuinfo

Exibe informações sobre o processador. Apresenta um relatório de cada um dos núcleos de processamento do sistema computacional.

Exemplo:

# cat /proc/cpuinfo

k) cat /proc/swaps

Mensura o tamanho da memória swap em uso e a sua localização.

Exemplo:

# cat /proc/swaps

l) cat /proc/meminfo

Exibe informações sobre o total da memória e seu uso por outros aplicativos.

(15)

15 Exemplo:

# cat /proc/meminfo

m) cat /proc/partitions

Exibe informações as partições do disco rígido.

Exemplo:

# cat /proc/partitions

n) memtest86+

Memtest86 e Memtest86+ são softwares de código aberto que permitem o teste físico e de

stress

de memórias RAM nos sistemas computacionais.

Figura 3 - Memtest86+

6. GERENCIAMENTO DE KERNEL

Para o gerenciamento e inserção de alguns recursos no sistema operacional, em alguns casos é necessária a recompilação do kernel. Para poder realizar esta tarefa são apresentados conceitos e comandos que venham contribuir com o melhoramento da performance de recursos do sistema computacional.

Uma distribuição Linux como Debian, Red Hat, SuSE, Slackware, dentre outras, utiliza um kernel que foi compilado pelos desenvolvedores da distribuição. Esse kernel deve ser capaz de rodar em praticamente qualquer computador e dar suporte a qualquer tipo de recurso que o usuário pretenda utilizar. O desenvolvedor compila um kernel que fornece todas as funcionalidades básicas e, em separado, compila pedaços de código que dão suporte a funcionalidades mais específicas denominadas módulos. Dessa forma, quando o sistema é carregado, um kernel básico se coloca na memória e passa a controlar a máquina.

(16)

16

Neste ponto são verificadas outras funcionalidades como as que permitem ao kernel dar suporte a uma partição XFS. Se o kernel não possuir suporte nativo a esse sistema de arquivos, é necessário que tal módulo seja compilado e instalado. Se esse módulo for encontrado, ele será carregado expandindo as funcionalidades do kernel.

6.1. Comandos para Gerenciamento do Kernel

a) lsmod

Lista os módulos que estão carregados em memória. Cada módulo não chega a ser um

device

, porem são

libraries

que contribuem com o melhoramento de serviço de recursos.

Na imagem ao lado podem ser vistos módulos como ip_tables (segurança) e usb_storage (para manuseio de armazenamentos em usb) convivendo no sistema operacional.

Figura 4 – lsmod

b) insmod

Programa que permite inserir módulos no kernel para posterior compilação.

A sintaxe é insmod [filename] [module options ...]

Opções:

-f force - Força a remoção

-v verbose - mostra o andamento -s syslog - manda log ao sistema -V version - mostra a versão

c) rmmod

Programa que permite remover módulos no kernel para posterior compilação.

A sintaxe é rmmod [-f] [-w] [-s] [-v] [modulename]

(17)

17 d) modprobe

Programa que permite adicionar e remover módulos no kernel. O modprobe verifica no diretório /lib/modules/'uname -r' por todos os módulos e arquivos que estão disponíveis, exceto pelos opcionais que se encontram na configuração do arquivo /etc/modprobe.conf e do diretório /etc/modprobe.d

Figura 5 - modprobe.d

e) depmod

Os utilitários depmod e modprobe são orientados a fazer um kernel modular e manipulável pelos usuários autorizados para tal fim. depmod cria um arquivo de dependências similar ao

"Makefile", baseado em símbolos que procuram um conjunto de módulos mencionados na linha de comando ou dos diretórios especificados no arquivo de configurações. Este arquivo de dependências será usado pelo modprobe para ser carregar automaticamente no módulo certo da pilha de módulos.

f) /etc/modules

A função deste arquivo é carregar módulos especificados na inicialização do sistema e mantê-los carregado todo o tempo. É útil para módulos de placas de rede que precisam ser carregados antes da configuração de rede feita pela distribuição e não podem ser removidos quando a placa de rede estiver sem uso.

Seu conteúdo é uma lista de módulos (um por linha) que serão carregados na inicialização do sistema. Os módulos carregados pelo arquivo /etc/modules pode ser listados usando o comando lsmod.

Se o parâmetro auto estiver especificado como um módulo, o kmod será ativado e carregará os módulos somente em demanda, caso seja especificado noauto o programa kmod será desativado. O kmod é ativado por padrão nos níveis de execução 2 ao 5.

Ele pode ser editado em qualquer editor de textos comum ou modificado automaticamente através do utilitário modconf.

6.2. Atualização de kernel/Aplicando

patches

no kernel

Patches

são modificações geradas pelo programa diff em que servem para atualizar um programa ou texto. Este recurso é muito útil para os desenvolvedores, pois podem gerar um arquivo contendo as diferenças entre um programa antigo e um novo (usando o comando diff) e enviar o arquivo contendo as diferenças para outras pessoas.

As pessoas interessadas em atualizar o programa antigo, podem simplesmente pegar o arquivo contendo as diferenças e atualizar o programa usando o

patch

.

(18)

18

Isto é muito usado no desenvolvimento do kernel do GNU/Linux em que novas versões são lançadas freqüentemente e o tamanho kernel completo compactado ocupa cerca de 18MB. Para atualizar o kernel é possível fazê-lo baixando um

patch

em ftp://ftp.kernel.org/.

Para aplicar um

patch

que atualizará o kernel 2.6.23 para a versão 2.6.24 o procedimento será o seguinte:

- Descompactar o código fonte do kernel 2.6.23 em /usr/src/linux ou certificar-se que existe um link simbólico do código fonte do kernel para /usr/src/linux.

- Copiar o arquivo patch-2.6.24.gz de ftp://ftp.kernel.org/ para /usr/src.

- Usar o comando gzip -dc patch-2.6.24|patch -p0 -N -E para atualizar o código fonte em /usr/src/linux para a versão 2.6.24.

Alternativamente pode-se primeiro descompactar o arquivo patch-2.6.24.gz com o gzip e usar o comando patch -p0 -N -E <patch-2.6.24 para atualizar o código fonte do kernel. O GNU/Linux permite que se obtenha o mesmo resultado através de diferentes métodos.

Para a atualização em questão é necessário aplicar os

patches

em seqüência (do

patch

2.6.20 ao 2.6.24). Vale a pena observar se o tamanho total dos

patches

ultrapassa ou chega perto o tamanho do kernel completo, pois dependendo da quantidade de alterações pode ser mais viável baixar diretamente a nova versão.

7. COMPACTAÇÃO DE ARQUIVOS

Os compactadores são programas que diminuem o tamanho de um arquivo (ou arquivos) através da substituição de caracteres repetidos. Para entender melhor como eles funcionam, veja o próximo exemplo:

A frase “

compactadores compactam e deixam arquivos compactados

.” após a compactação seria vista da seguinte forma:

%dores %m e deixam arquivos %dos

Para controle dos caracteres que são usados nas substituições, os programas de compactação mantêm cabeçalhos com todas as substituições usadas durante a compactação. O tamanho do cabeçalho pode ser fixo ou definido pelo usuário, depende do programa usado na compactação.

Este é um exemplo bem simples para entender o que acontece durante a compactação, os programas de compactação executam instruções muito avançadas e códigos complexos para atingir uma alta taxa de compactação.

Observações:

- Não é possível trabalhar diretamente com arquivos compactados! É necessário descompactar o arquivo para usá-lo. Note que alguns programas atualmente suportam a abertura de arquivos compactados, mas na realidade eles apenas simplificam a tarefa descompactando o arquivo, abrindo e o recompactando assim que o trabalho estiver concluído.

- Arquivos de texto têm uma taxa de compactação muito melhor que arquivos binários, porque possuem mais caracteres repetidos. É normal atingir taxas de compactação de 10 para 1 ou mais quando se compacta um arquivo texto. Arquivos binários, como programas, possuem uma taxa de compactação média de 2:1.

(19)

19

- Note que também existem programas compactadores especialmente desenvolvidos para compactação de músicas, arquivos binários, imagens, textos.

7.1. Extensões de arquivos compactados

As extensões identificam o tipo de um arquivo e assim o programa o programa necessário para trabalhar com aquele tipo de arquivo. Existem dezenas de extensões que identificam arquivos compactados. Quando um arquivo (ou arquivos) é compactado, uma extensão correspondente ao programa usado é adicionada ao nome do arquivo (caso o arquivo seja compactado pelo gzip receberá a extensão .gz, por exemplo). Ao descompactar acontece o contrário: a extensão é retirada do arquivo. Abaixo segue uma listagem de extensões mais usadas e os programas correspondentes:

a) .gz

Arquivo compactado pelo gzip. Use o programa gzip para descompactá-lo.

b) .bz2

Arquivo compactado pelo bzip2. Use o programa bzip2 para descompactá-lo.

b) .Z

Arquivo compactado pelo programa compress. Use o programa uncompress para descompactá-lo.

c) .zip

Arquivo compactado pelo programa zip. Use o programa unzip para descompactá-lo.

d) .rar

Arquivo compactado pelo programa rar. Use o programa rar para descompactá-lo.

e) .tar.gz

Arquivo compactado pelo programa gzip no utilitário de arquivamento tar. Para descompactá-lo, pode-se usar o gzip e depois o tar ou somente o programa tar usando a opção -z.

f) .tgz

Abreviação de .tar.gz.

g) .tar.bz2

Arquivo compactado pelo programa bzip2 no utilitário de arquivamento tar. Para descompactá-lo, pode-se usar o bzip2 e depois o tar ou somente o programa tar usando a opção - j.

(20)

20 h) .tar.Z

Arquivo compactado pelo programa compress no utilitário de arquivamento tar. Para descompactá-lo, pode-se usar o uncompress e depois o tar ou somente o programa tar usando a opção -Z.

7.2. Ferramentas para compactação/descompactação

A seguir algumas das ferramentas mais comumente utilizadas na compactação de arquivos:

a) gzip

É praticamente o compactador padrão do GNU/Linux, possui uma ótima taxa de compactação e velocidade. A extensão dos arquivos compactados pelo gzip é a .gz, na versão para DOS, Windows NT é usada a extensão .z.

A sintaxe é gzip [opções] [arquivos]

Onde:

Arquivos

Especifica quais arquivos serão compactados pelo gzip. Caso seja usado um -, será assumido a entrada padrão. Curingas podem ser usados para especificar vários arquivos de uma só vez.

Opções

-d, --decompress [arquivo] - Descompacta um arquivo.

-f - Força a compactação, compactando até mesmo links.

-l [arquivo] - Lista o conteúdo de um arquivo compactado pelo gzip.

-r - Compacta diretórios e sub-diretórios.

-c [arquivo] - Descompacta o arquivo para a saída padrão.

-t [arquivo] - Testa o arquivo compactado pelo gzip.

-[num], --fast, --best - Ajustam a taxa de compactação/velocidade da compactação.

Quanto melhor a taxa menor é a velocidade de compactação e vice versa. A opção --fast permite uma compactação rápida e tamanho do arquivo maior. A opção --best permite uma melhor compactação e uma velocidade menor.

O uso da opção -[número] permite especificar uma compactação individualmente usando números entre 1 (menor compactação) e 9 (melhor compactação). É útil para buscar um bom equilibro entre taxa de compactação/velocidade (especialmente em computadores muito lentos).

Quando um arquivo é compactado pelo gzip, é automaticamente acrescentada a extensão .gz ao seu nome.

O gzip também reconhece arquivos compactados pelos programas zip, compress, compress -H e pack. As permissões de acesso dos arquivos são também armazenadas no arquivo compactado.

(21)

21 Exemplos:

gzip -9 texto.txt - Compacta o arquivo texto.txt usando a compactação máxima (compare o tamanho do arquivo compactado usando o comando ls -la).

gzip -d texto.txt.gz - Descompacta o arquivo texto.txt

gzip -c texto.txt.gz - Descompacta o arquivo texto.txt para a tela gzip -9 *.txt - Compacta todos os arquivos que terminam com .txt gzip -t texto.txt.gz - Verifica o arquivo texto.txt.gz.

b) tar

Na verdade o tar não é um compactador e sim um "arquivador" (ele junta vários arquivos em um só), mas pode ser usado em conjunto com um compactar (como o gzip ou zip) para armazená-los compactados. O tar também é muito usado para cópias de arquivos especiais ou dispositivos do sistema. É comum encontrar arquivos com a extensão .tar, .tar.gz, .tgz, .tar.bz2, .tar.Z, .tgZ, o primeiro é um arquivo normal gerado pelo tar e todos os outros são arquivos gerados através tar junto com um programa de compactação (gzip (.gz), bzip2 (.bz2) e compress (.Z).

A sintaxe é tar [opções] [arquivo-destino] [arquivos-origem]

Onde:

Arquivo-destino

É o nome do arquivo de destino. Normalmente especificado com a extensão .tar caso seja usado somente o arquivamento ou .tar.gz/.tgz caso seja usada a compactação (usando a opção - z).

Arquivos-origem

Especifica quais arquivos/diretórios serão compactados.

Opções

-c, --create - Cria um novo arquivo .tar -t, --list - Lista o conteúdo de um arquivo .tar

-u, --update - Atualiza arquivos compactados no arquivo .tar

-f, --file [HOST:]F - Usa o arquivo especificado para gravação ou o dispositivo /dev/rmt0.

-j, --bzip2 - Usa o programa bzip2 para processar os arquivos do tar

-l, --one-file-system - Não processa arquivos em um sistema de arquivos diferentes de onde o tar foi executado.

-M, --multi-volume - Cria/lista/descompacta arquivos em múltiplos volumes. O uso de arquivos em múltiplos volumes permite que uma grande cópia de arquivos que não cabe em um disquete, por exemplo, seja feita em mais de um disquete.

-o - Grava o arquivo no formato VT7 ao invés do ANSI.

-O, --to-stdout - Descompacta arquivos para a saída padrão ao invés de gravar em um arquivo.

--remove-files - Apaga os arquivos de origem após serem processados pelo tar.

-R, --record-number - Mostra o número de registros dentro de um arquivo tar em cada mensagem.

--totals - Mostra o total de bytes gravados com a opção --create.

(22)

22

-v - Mostra os nomes dos arquivos enquanto são processados.

-V [NOME] - Inclui um [NOME] no arquivo tar.

-W, --verify - Tenta verificar o arquivo gerado pelo tar após gravá-lo.

-X - Extrai arquivos gerados pelo tar

-X [ARQUIVO] - Tenta apagar o [ARQUIVO] dentro de um arquivo compactado .tar.

-Z - Usa o programa compress durante o processamento dos arquivos.

-z - Usa o programa gzip durante o processamento dos arquivos.

--use-compress-program [PROGRAMA] - Usa o [PROGRAMA] durante o processamento dos arquivos. Ele deve aceitar a opção -d.

-[0-7][lmh] - Especifica a unidade e sua densidade.

A extensão precisa ser especificada no arquivo de destino para a identificação correta:

- Arquivos gerados pelo tar precisam ter a extensão .tar

- Caso seja usada a opção -j para compactação, a extensão deverá ser .tar.bz2 - Caso seja usada a opção -z para compactação, a extensão deverá ser .tar.gz ou .tgz - Caso seja usada a opção -Z para a compactação, a extensão deverá ser .tar.Z ou .tgZ

É importante saber qual o tipo de compactador usado durante a geração do arquivo .tar pois será necessário especificar a opção apropriada para descompactá-lo.

Exemplos:

tar -cf index.txt.tar index.txt - Cria um arquivo chamado index.txt.tar que armazenará o arquivo index.txt. Pode-se notar digitando ls -la que o arquivo index.txt foi somente arquivado (sem compactação), isto é útil para juntar diversos arquivos em um só.

tar -xf index.txt.tar - Desarquiva o arquivo index.txt criado pelo comando acima.

tar -czf index.txt.tar.gz index.txt - O mesmo que o exemplo de arquivamento anterior, só que agora é usado a opção -z (compactação através do programa gzip).

Você agora pode notar digitando ls -la que o arquivo index.txt foi compactado e depois arquivado no arquivo index.txt.tar.gz (você também pode chamá-lo de index.txt.tgz que também identifica um arquivo .tar compactado pelo gzip)

tar -xzf index.txt.tar.gz - Descompacta e desarquiva o arquivo index.txt.tar.gz criado com o comando acima.

gzip -dc index.tar.gz | tar -xf - Faz o mesmo que o comando acima só que de uma forma diferente: Primeiro descompacta o arquivo index.txt.tar.gz e envia a saída do arquivo descompactado para o tar que desarquivará o arquivo index.txt.

tar -cjf index.txt.tar.bz2 index.txt - Arquiva o arquivo index.txt em index.txt.tar.bz2 compactando através do bzip2 (opção -j).

tar -xjf index.txt.tar.bz2 - Descompacta e desarquiva o arquivo index.txt.tar.bz2 criado com o comando acima.

bzip2 -dc index.txt.tar.bz2 | tar -xf - Faz o mesmo que o comando acima só que de uma forma diferente: Primeiro descompacta o arquivo index.txt.tar.bz2 e envia a saída do arquivo descompactado para o tar que desarquivará o arquivo index.txt.

tar -t index.txt.tar - Lista o conteúdo de um arquivo .tar.

(23)

23

tar -tz index.txt.tar.gz - Lista o conteúdo de um arquivo .tar.gz.

c) bzip2

É um novo compactador que vem sendo cada vez mais usado porque consegue atingir a melhor compactação em arquivos texto se comparado aos já existentes (em conseqüência sua velocidade de compactação também é menor; quase duas vezes mais lento que o gzip). Suas opções são praticamente as mesmas usadas no gzip e também pode-se usá-lo da mesma forma. A extensão dos arquivos compactados pelo bzip2 é a .bz2

A sintaxe é bzip2 [opções] [arquivos]

Onde:

Arquivos

Especifica quais arquivos serão compactados pelo bzip2. Caso seja usado um -, será assumida a entrada padrão. Curingas podem ser usados para especificar vários arquivos de uma só vez (veja Curingas, Seção 2.3).

Opções

-d, --decompress [arquivo] - Descompacta um arquivo.

-f - Força a compactação, compactando até mesmo links.

-l [arquivo] - Lista o conteúdo de um arquivo compactado pelo bzip2.

-r - Compacta diretórios e sub-diretórios.

-c [arquivo] - Descompacta o arquivo para a saída padrão.

-t [arquivo] - Testa o arquivo compactado pelo bzip2.

-[num], --fast, --best - Ajustam a taxa de compactação/velocidade da compactação.

Quanto melhor a taxa menor é a velocidade de compactação e vice versa. A opção --fast permite uma compactação rápida e tamanho do arquivo maior. A opção --best permite uma melhor compactação e uma velocidade menor.

O uso da opção -[número] permite especificar uma compactação individualmente usando números entre 1 (menor compactação) e 9 (melhor compactação). É útil para buscar um bom equilibro entre taxa de compactação/velocidade (especialmente em computadores muito lentos).

Quando um arquivo é compactado pelo bzip2, é automaticamente acrescentada a extensão .bz2 ao seu nome. As permissões de acesso dos arquivos são também armazenadas no arquivo compactado.

Exemplos:

bzip2 -9 texto.txt - Compacta o arquivo texto.txt usando a compactação máxima (compare o tamanho do arquivo compactado usando o comando ls -la).

bzip2 -d texto.txt.bz2 - Descompacta o arquivo texto.txt

bzip2 -c texto.txt.bz2 - Descompacta o arquivo texto.txt para a saída padrão (tela) bzip2 -9 *.txt - Compacta todos os arquivos que terminam com .txt

bzip2 -t texto.txt.bz2 - Verifica o arquivo texto.txt.bz2.

(24)

24 8. COMPILAÇÃO DE PROGRAMAS

A compilação é a transformação de um programa em código fonte (programa escrito pelo programador) em linguagem de máquina (programa executável).

Existem centenas de linguagens de programação diferentes umas das outras, cada uma oferece recursos específicos para atender melhor uma necessidade ou características particulares, algumas são voltadas para bancos de dados, outras somente para a criação de interfaces comunicação (

front-ends

), aprendizado, etc. Cada linguagem de programação possui comandos específicos que desempenham alguma função, mas todas trabalham com variáveis de memória para a manipulação de dados de entrada/processamento.

A compilação de programas é uma tarefa necessária quando se deseja instalar um programa na qual só se tem os fontes. Assim sendo o que deve fazer é descompactar, compilar e instalar o programa.

Para essa tarefa é necessário ter acesso root ao sistema assim como possuir o(os) arquivo(os) fontes já descompactados.

No exemplo abaixo adotamos a instalação de uma calculadora científica que pode ser encontrada em ftp.gnu.org/gnu/bc/.

Como regra geral entre no diretório onde os fontes foram descompactados e leia o arquivo README e INSTALL, pois neles contém informações sobre o programa e a instalação.

A sequência de comandos é a seguinte:

#./configure

#make

#make install

O comando ./configure é na verdade um

script

, uma série de instruções gravadas em um arquivo texto que são entendidas pelo Linux como comandos. O que estes comandos fazem basicamente é verificar a existência de uma série de arquivos do sistema operacional, imprescindíveis para que se possa gerar o arquivo executável. O produto final do comando é um arquivo chamado Makefile que contém parâmetros que serão lidos pelo comando make, detalhado a seguir.

O comando make gera o programa final através da checagem de diversas dependências e da execução de programas de compilação e link-edição.

A grande maioria dos programas para o ambiente Linux é codificada nas linguagens C e C++. Por exemplo, dois módulos que compõem o bc são o numeric.c e o string.c, cada um contendo funções que executam tarefas específicas: o numeric.c faz todo o tratamento de operações aritméticas, enquanto o string.c trata as cadeias de caracteres digitadas.

O comando make checa ainda os módulos e os includes dos quais os módulos dependem, para verificar se não houve nenhuma mudança, comparando as datas de criação de cada um. O comando make é bastante poderoso e genérico. Ele é um dos integrantes da “caixa de ferramentas” do Linux. Seu principal objetivo é o de automatizar as tarefas relativas à geração de programas, desde a compilação até a instalação dos programas no sistema. O make não serve apenas para programas escritos em linguagem C/C++, mas para virtualmente qualquer linguagem.

Com o make install está literalmente instalando o programa bc em seu sistema.

(25)

25 9. LOGS

Muitas são as vezes que em é necessário avaliar o acontecido diante de um fato indesejado. O acesso indevido a uma parte de informações por um usuário ou um

deadlock

produzido pela exclusão mútua de uma ação sempre requer uma avaliação do acontecido para prevenir futuras repetições do fato. Para isso o registro de eventos em arquivos, geralmente de texto, torna-se uma ferramenta muito útil. Estes arquivos recebem o nome de

log

.

Em linux existem alguns

logs

específicos que são incluídos nas distribuições como procedimento natural, podendo o administrados inibir a existência deles.

No geral os

logs

que estão vinculados a um sistema operacional Linux são armazenados no diretório /var/log.

Os sistemas Unix-like possuem um serviço exclusivo de manutenção de

logs

que pode ser utilizado por qualquer aplicação. Na maioria das vezes esse mecanismo é utilizado pelo

kernel

e pelos serviços conhecidos como

deamons

, pois eles não têm o terminal como saída para suas mensagens, uma vez que são executados em

background

.

Os

daemons

de

log

do sistema registram as mensagens de saída do

kernel

(klogd) e sistema (syslogd) nos arquivos em /var/log.

A classificação de qual arquivo em /var/log receberá qual tipo de mensagem é controlado pelo arquivo de configuração /etc/syslog.conf através de facilidades e níveis.

Assim como todo servidor o syslog é iniciado como um

daemon

, ou seja, inicia automaticamente durante o

boot

. Sendo um

daemon

, normalmente, será inicializado com as rotinas que são incluídas em /etc/init.d. Para o caso do syslog será iniciado com o

daemon

de /etc/init.d/syslog.

9.1. O sistema de

Logs

do Linux 9.1.1. SYSLOGD

O syslog é um

daemon

simples porém de utilidade incomparável, que fornece a ambientes Unix a opção comum de gravação de registros para programas mais diferentes, ele por si só determina o que fazer com qual registro, estes registros são muito importantes, para analises de problemas, ocorrências e segurança da maquina.

Todas as mensagens gravadas pelo syslog por um recurso e também por um nível específico. Todas as regras do programa syslog são definidas no arquivo /etc/syslog.conf conforme os parâmetros definidos a seguir.

Os recursos de syslog é a definição para que um programa relate em que grupo de registros se enquadra. Os recursos são:

- auth - Mensagens de segurança/autorização (é recomendável usar authpriv ao invés deste).

- authpriv - Mensagens de segurança/autorização (privativas).

- cron - Daemons de agendamento (cron e at).

- daemon - Outros daemons do sistema que não possuem facilidades específicas.

- ftp - Daemon de ftp do sistema.

- kern - Mensagens do kernel.

(26)

26 - lpr - Subsistema de impressão.

- local0 a local7 - Reservados para uso local.

- mail - Subsistema de e-mail.

- news - Subsistema de notícias da USENET.

- security - Sinônimo para a facilidade auth (evite usa-la).

- syslog - Mensagens internas geradas pelo syslogd.

- user - Mensagens genéricas de nível do usuário.

- uucp - Subsistema de UUCP.

- * - Confere com todas as facilidades.

O registro de

log

de sistema pode ser armazenado segundo níveis, isto é, não é necessário armazenar eventos definidos dependendo o uso do sistema computacional.

Os Programas usam cada entrada dos registros com um nível de registro, de tal maneira que o

daemon syslog

possa registrá-lo ou apenas ignorá-lo, dependendo somente da configuração. Os níveis de registros são classificados em ordem de grau crítico:

- emerg: O sistema está inutilizável.

- alert: Deverá ser providenciada algum tipo de ação logo de imediato.

- crit:Condições críticas.

- err: Condições de erro.

- warning: Condições de alerta.

- notice: Condições normais do sistema.

- info: Mensagens de informação.

- debug: Mensagens de depuração.

Além dos níveis, podem ser tratados 3 grupos de mensagens que poderão ser habilitadas ou inibidas.

- Error: Sinônimo para o nível err.

- Panic: Sinônimo para o nível emerg.

- Warn: Sinônimo para o nível warn.

Para gerência de

logs

a sintaxe do comando é syslogd [opções].

Opções

-f - Especifica um arquivo de configuração alternativo ao /etc/syslog.conf.

-h - Permite redirecionar mensagens recebidas a outros servidores de

logs

especificados.

-l [computadores] - Especifica um ou mais computadores (separados por ":") que deverão ser registrados somente com o nome de máquina ao invés do FQDN (nome completo, incluindo domínio).

-m [minutos] - Intervalo em minutos que o syslog mostrará a mensagem --MARK--. O valor padrão é 20 minutos, 0 desativa.

-n - Evita que o processo caia automaticamente em background. Necessário principalmente se o syslogd for controlado pelo init.

-p [soquete] - Especifica um soquete UNIX alternativo ao invés de usar o padrão /dev/log.

(27)

27

-r - Permite o recebimento de mensagens através da rede através da porta UDP 514. Esta opção é útil para criar um servidor de

logs

centralizado na rede. Por padrão, o servidor syslog rejeitará conexões externas.

-s [domínios] - Especifica a lista de domínios (separados por ":") que deverão ser retirados antes de enviados ao log.

-a [soquetes] - Especifica soquetes adicionais que serão monitorados. Esta opção será necessária se estiver usando um ambiente

chroot

. É possível usar até 19 soquetes adicionais.

-d - Ativa o modo de depuração do syslog. O syslog permanecerá operando em primeiro plano e mostrará as mensagens no terminal atual.

No geral, os

logs

são registrados por

default

na pasta /var/log. Porém, administradores podem alterar o registro destes arquivos em pastas diversas.

Este motivo é no sentido de limitar os direitos de consulta e leitura às pessoas que realmente tem a função de administrar o ambiente computacional.

Para configuração de

logs

, o caminho mais prático é o de delimitar o que será armazenado dentro do arquivo /etc/syslog.conf. Dentro deste poderão ser informadas as categorias que o administrados deseja registrar os eventos que acontecem no sistema computacional.

O formato de registro no arquivo /etc/syslog.conf será algo do tipo:

- recurso.nível destino

Figura 6 - syslog.conf

Recurso - É usada para especificar que tipo de programa está enviando a mensagem.

9.1.2. KLOGD

O klogd é outro daemon que controla o registro de mensagens do

kernel

. Ele monitora as mensagens do

kernel

e as envia para o

daemon

de monitoramento syslogd, por padrão.

(28)

28 A sintaxe do comando é klogd [opções].

Opções:

-d - Ativa o modo de depuração do

daemon

-f [arquivo] - Envia as mensagens do

kernel

para o arquivo especificado ao invés de enviar ao

daemon

do syslog

-i - Envia um sinal para o

daemon

recarregar os símbolos de módulos do

kernel

.

-I - Envia um sinal para o

daemon

recarregar os símbolos estáticos e de módulos do

kernel

.

-n - Evita a operação em segundo plano. Útil se iniciado pelo init

-k [arquivo] - Especifica o arquivo que contém os símbolos do

kernel

. Exemplos deste arquivo estão localizados em /boot/System.map-xx.xx.xx.

-o - Faz com que o

daemon

leia e registre todas as mensagens encontradas nos

buffers

do

kernel

, após isto o

daemon

é encerrado.

-p - Ativa o modo paranóia. Isto fará o klogd somente carregar detalhes sobre os módulos quando os caracteres ‘Oops’ forem detectados nas mensagens do

kernel

. É recomendável ter sempre a última versão do klogd e evitar a utilização desta opção em ambientes críticos.

-s - Força a utilização da interface de chamadas do sistema para comunicação com o

kernel

.

-x - Esconde tradução EIP, assim ele não lê o arquivo /boot/System.map-xx-xx-xx.

A especificação de um arquivo com a opção -k é necessária se desejar que sejam mostradas a tabela de símbolos ao invés de endereços numéricos do

kernel

.

9.1.3. LOGCHECK

É um programa usado para enviar um e-mail periodicamente ao administrador do sistema (através do

cron

ou outro

daemon

com a mesma função) alertando sobre os eventos que ocorreram desde a última execução do programa.

As mensagens do

logcheck

são tratadas por arquivos em /etc/logcheck e organizadas em categorias antes de ser enviada por e-mail, isto garante muita praticidade na interpretação dos eventos ocorridos no sistema.

As categorias são organizadas das mais importantes para as menos importantes, e vão desde "

Hacking

em andamento" (providências devem ser tomadas imediatamente para resolver a situação) até "eventos anormais do sistema" (mensagens de inicialização, mensagens dos

daemons

do sistema, etc.).

O tipo de mensagem que será incluída/ignorada nos

logs

enviados podem ser personalizadas pelo administrador do sistema através dos arquivos/diretórios dentro de /etc/logcheck. Nomes de arquivos/diretórios contendo a palavra "ignore" são usados para armazenar expressões regulares que NÃO serão enviadas pelo

logcheck

. É permitido o uso de expressões regulares perl/sed para especificar as mensagens nos arquivos de

log

.

(29)

29 9.1.4. LOGROTATE

Usado para fazer

backups

dos

logs

atuais do sistema (programado via

cron

, ou outro

daemon

com a mesma função) e criando novos arquivos de

logs

que serão usados pelo sistema.

Opcionalmente os arquivos de

logs

antigos serão compactados para diminuir a utilização de espaço em disco ou enviados por email ao administrador. A rotação dos arquivos de

logs

proporciona maior agilidade quando precisamos encontrar algum detalhe útil (que seria mais difícil de achar em um arquivo de

log

de 10MB ou maior).

A rotação de

logs

é feita de acordo com o tamanho do arquivo de

logs

especificado, mas a opção -f pode ser usada para "forçar" a rotação de

logs

. A opção -d fornece mais detalhes sobre o que o

logrotate

está fazendo. Seu arquivo principal de configuração é o /etc/logrotate.conf.

Referências

Documentos relacionados

Os objetivos do presente trabalho foram (i) caracterizar genótipos de milho quanto à resistência a virose mosaico-comum causada pelo SCMV e (ii) introgredir a resistência

DA COMPETIÇÃO - O DEVER PRINCIPAL DE QUEM QUER O PODER Assim como nos capítulos anteriores, extraída do capítulo XIV, “Dos deveres do príncipe para com suas tropas”,

Quem gosta de rodeio bate forte com a mão Alô galera de cowboy. Alô galera

Entre as placas, há um aumento da quantidade de movimento em módulo, enquanto na região do campo magnético há alteração na di- reção e

Através dos exemplos da Banda Sinfônica e da Semana Universitária, observa-se que a identificação de patrimônios culturais, daquilo que é memorável para

Tarefas de casa e classe: Trabalho 1: Observação de estruturas vegetais - folhas Trabalho 2: Desenvolvimento do mapa conceitual da fotossíntese Simulado.. Será analisado todos

§2º Caso o estudante tenha vínculo empregatício no setor público, o EPP poderá ser dispensado pelo orientador, com posterior validação pelo Colegiado do

As instalações do cable modem poderão ser feitas pela OPERADORA ou uma de suas credenciadas ou ainda por terceiros. Opcionalmente, poderá ser realizada também a instalação de