terça-feira, 4 de janeiro de 2011

Estrutura de diretórios

Estrutura de diretórios

É importante que se conheça a utilização dos diretórios do Linux para podermos administrar nossos sistemas de forma correta. A instalação de arquivos ou programas em locais diferentes do padrão pode resultar em funcionamento incorreto ou não funcionamento do seu sistema.
A estrutura dos sistemas de arquivos UNIX prevê um agrupamento de acordo com o propósito. Os comandos ficam em local /bin , enquanto os arquivos de configuração ficam em outro /etc enquanto os dados pessoais ficam em /home.
O sistema de arquivos raiz / deve geralmente ser pequeno, pois ele contém somente os arquivos fundamentais para a inicialização e funcionamento do sistema. Esse sistema sendo pequeno e pouco modificado tem a uma chance maior de não ter problemas.
No diretório / (raiz) via de regra só contém diretórios, mas em algumas distros pode haver a imagem de inicialização do sistema chamada vmlinuz. (Isso mesmo com z).
Além deste teremos, variando ainda de distro para distro, os seguintes diretórios:

/bin
Comandos necessários durante a inicialização do sistema que podem ser usados pelos usuários (root ou não)
Ex:
cat, chmod, cut, date, ls, gunzip, gzip, tar, hostname, netstat, ping, além de outros.

/boot
Aqui ficam os arquivos destinados à inicialização do computador, o kernel (vmlinuz) e módulos (initrd) necessários à carga da máquina. Em geral este diretório é alocado em uma partição exclusiva para este fim com tamanho variando em 32 e 100MB.

/dev
Todos os dispositivos de hardware instalados no seu computador precisam de arquivos especiais que mapeiam a sua existência neste diretório.
-, hda, video0, cdrom, dvd...


/etc
Todas as configurações utilizadas pelo seu equipamento e seus serviços normalmente são armazenas neste diretório.
Arquivos importantes:
fstab
/apt/sources.list
e outros.

/home
Neste diretório ficam armazenadas as “tralhas” dos usuários. Devem ser criados diretórios para cada usuário que terá o mesmo nome de seu login. Uma boa prática é separar esta partição, para em futuras formatações seus dados ficarem salvos.

/lib

Bibliotecas dinâmicas compartilhadas, necessárias ao funcionamento básico de quase todas as aplicações Linux, além dos módulos do kernel.

/mnt
Utilizada para acessar mídias externas como cd's, dvd's, pendrives. Em algumas distribuições como as Debian-like este diretório poderá ser /media.

/opt

Este arquivo armazena programas de terceiros e que normalmente não fazem parte das distribuições Linux, ex:
Google Chrome, talkplugin

/proc

Diretório utilizado para acessar o sistema de arquivos virtual com informações do estado de processamento de sua máquina. Os arquivos aqui não estão fisicamente em seu hd, mas sim em áreas protegidas da memória, sendo alguns destes arquivos podem ser alterados de forma a modificar o funcionamento de seu sistema Linux.
Ex:
cpuinfo: traz informações sobre o processador;
meminfo: informações da sua memória RAM.
ioports: identificação das portas io em uso no seu equipamento.

/root

Diretório pessoal do root. Assim como o /etc não deve ser colocado em partição separada.


/sbin
Arquivos executáveis destinados à inicialização do equipamento bem como para administração, acrescentando funcionamento aos aplicativos existentes em /bin.
ifconfig: configuração das interfaces de redes;
shutdown: desligamento do sistema;
route: definição de rotas:

/sys
Assim como /proc é um diretório virtual que tende a substitui-lo provendo novos recursos e funcionalidades.

/tmp
Arquivos temporários criados por aplicativos iniciados por qualquer usuário ou por serviços disponíveis no equipamento. Normalmente este arquivos são removidos automaticamente ao término da aplicação porém, caso algum arquivo não seja removido, apenas o usuário criados ou root poderão fazê-lo.
Ex. Imagem de gravação de mídia feitas com o K3b.

/usr
Estrutura secundária de diretórios replicando toda a estrutura original. Inicialmente foi utilizada como local de instalação para programas que não faziam parte da distribuição original. A intenção para a sua criação é que qualquer novo aplicativo ou serviço que seja instalado não cause conflito com os recursos existentes, podendo ser facilmente removidos sem afetar a estrutura original.

/var
Dados variáveis resultantes de aplicativos em uso como cache de instalação de programas ou de acesso à internet, arquivos de controle de processos em memória como em /var/run/pid

terça-feira, 7 de dezembro de 2010

Limpando memória cache.

Olá, mais um artigo para vocês. Espero que seja proveitoso.
Muitos usuários de GNU/Linux já devem ter reparado que às vezes o sistema fica muito pesado, independente da quantidade de memória existente no computador.
Isso na verdade vem de uma macete que o sistema Linux tem para futuros acessos aos programas.
Toda vez que você abre um programa o processador carrega na memória RAM as informações, os softwares presentes no HD. O Linux, com sua memória cache, reserva um espaço para os programas executados com maior frequência, assim quando for executado novamente aquele programa será aberto em um menor tempo, já que está presente na memória cache, que é uma memória bastante rápida.
Até ai tudo bem, parece ótimo contar com esse recurso, mas o problema é que às vezes ficam armazenados programas que nós abrimos, agora, mas não vamos precisar, com uma brevidade. Isso faz com que a memória fique usada de maneira desnecessária.
É para isso que eu estou escrevendo este artigo. Vou mostrar uma maneira, simples, como limpar a memória cache, para você ter um desempenho mais eficiente.

São apenas dois comandos, mas antes de usá-los use:
$ free -mt
para verificar o uso da memória. Use depois também para verificar o quê aconteceu.
Estes são os comandos para limpar a memória cache.
# echo 3 > /proc/sys/vm/drop_caches
e
# sysctl -w vm.drop_caches=3

domingo, 28 de novembro de 2010

fstab

fstab
Localização /etc/fstab
Este é um arquivo de extrema importância no GNU/Linux. É nele que são feitas as montagens do sistema, partições, unidades de disco.
Neste artigo vou mostrar como inserir uma linha, para que uma partição seja montada na inicialização do sistema.
A primeira coisa a fazer é ver as partições que existem, a melhor e mais fácil forma de fazer isso é aplicando o comando:
$ df -h
Sist. Arq.............Tam....Usad...Disp.......Uso%...Montado em
/dev/sda6............38G....3,0G....35G.......8% ….........../
tmpfs..................233M...0..... 233M...….0%.......... /lib/init/rw
varrun.................233M..104K.. 233M....1%.......... /var/run
varlock...............233M... 0......233M......0%........... /var/lock
udev.................... 233M..160K..233M....1%........... /dev
tmpfs.................. 233M.. 12K...233M....1%.......... /dev/shm
lrm..................... 233M.. 2,2M..231M.....1%....... /lib/modules/***
/dev/sda1........... 973M... 58M..916M....6% ….../boot
/dev/sda5...........323G...105G...218G....33%...... /media/part
/dev/sda7...........104G...33M....104G ...1%......... /media/cem
/dev/sdb1...........38G....176M...36G ….1%........ /media/quarenta


Pronto já conhecemos as partições, agora basta saber qual vamos montar ou quantas vamos montar.
Para uma fácil compreensão deste artigo vou usar como exemplo sempre a partição /dev/sda5, mas os procedimentos poderão ser adotados em qualquer das outras que ai se encontram, que não estejam montadas e você deseje fazê-lo.
Próximo passo é saber a UUID da partição, isso é importante já que elas não se alteram caso haja um mudança na partição, como aconteceria se simplesmente você usasse /dev/sda5, por exemplo. Ao usar desta também funcionaria, mas toda vez que fosse feita alguma alteração na partição o arquivo fstab teria que ser editado já que aquela partição não seria mais encontrada.

Procedimentos para saber a UUID da partição.
Primeiro execute o comando:
blkid

osiel@kubuntu:~$ blkid
/dev/loop0: TYPE="squashfs"
/dev/sda1: UUID="fafaeb94-9357-45ca-a5d1-8e7ecd8b4075" TYPE="reiserfs"
/dev/sda2: TYPE="swap" UUID="5e5a3b35-2a6b-4435-98b9-70f329d462fe"
/dev/sda5: UUID="6CDB8179203DA145" LABEL="part" TYPE="ntfs"
/dev/sda6: UUID="e493409f-2ab2-4e24-9fa1-96dbaadbe87f" TYPE="reiserfs"
/dev/sda7: UUID="67b751c4-9d2d-4b9b-ad90-b09c51ba5b2d" LABEL="cem" TYPE="reiserfs"
/dev/sdb1: LABEL="quarenta" UUID="68d12ee9-6f57-4d72-b8db-b2c00d648496" TYPE="ext4"


6CDB8179203DA145
Esta é a UUID da partição /dev/sda5
Se ao executar o comando ficar faltando alguma partição listada, tente esse outro abaixo, pois também terá o mesmo resultado.

osiel@kubuntu:~$ ls -lah /dev/disk/by-uuid/
total 0
drwxr-xr-x 2 root root 160 2010-11-28 22:29 .
drwxr-xr-x 6 root root 120 2010-11-28 22:29 ..
lrwxrwxrwx 1 root root 10 2010-11-28 22:29 5e5a3b35-2a6b-4435-98b9-70f329d462fe ->../../sda2
lrwxrwxrwx 1 root root 10 2010-11-28 22:29 67b751c4-9d2d-4b9b-ad90-b09c51ba5b2d ->../../sda7
lrwxrwxrwx 1 root root 10 2010-11-28 22:29 68d12ee9-6f57-4d72-b8db-b2c00d648496 ->../../sdb1
lrwxrwxrwx 1 root root 10 2010-11-28 22:29 6CDB8179203DA145 -> ../../sda5
lrwxrwxrwx 1 root root 10 2010-11-28 22:29 e493409f-2ab2-4e24-9fa1-96dbaadbe87f ->../../sda6
lrwxrwxrwx 1 root root 10 2010-11-28 22:29 fafaeb94-9357-45ca-a5d1-8e7ecd8b4075 ->../../sda1


Pronto já sabemos as partições que possuímos e também sabemos as UUIDs das mesmas.
Vamos para o quê interessa.
Eu gosto do editor vim, mas você fique à vontade com a escolha para sua comodidade.
Começando:
$ sudo vim /etc/fstab

# /etc/fstab: static file system information.
#
# Use 'vol_id --uuid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#
proc /proc proc defaults 0 0
# / was on /dev/sda6 during installation
UUID=e493409f-2ab2-4e24-9fa1-96dbaadbe87f / reiserfs relatime 0 1
# /boot was on /dev/sda1 during installation
UUID=fafaeb94-9357-45ca-a5d1-8e7ecd8b4075 /boot reiserfs notail,relatime 0 2
# swap was on /dev/sda2 during installation
UUID=5e5a3b35-2a6b-4435-98b9-70f329d462fe none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0


Percebe-se, claramente, como deve ser feita a edição do arquivo.
Na última linha coloque UUID, igualando ao valor dela, que você descobriu executando o comando blkid, ex:
osiel@kubuntu:~$ blkid
/dev/sda5: UUID="6CDB8179203DA145" LABEL="part" TYPE="ntfs"

No arquivo deve ficar:
UUID= 6CDB8179203DA145
Seguindo na mesma linha coloque o ponto de montagem:
/media/part
Mais a frente, ainda na mesma linha o sistema de arquivo, que será visto na execução do comando blkid
/dev/sda5: UUID="6CDB8179203DA145" LABEL="part" TYPE="ntfs"

Continuando na mesma linha escolha a opção defaults, seguida de dois zeros, (0 0).
A linha deverá ficar desta forma:
UUID=6CDB8179203DA145 /media/part ntfs defaults 0 0

Pronto se tudo foi feito conforme explicado aqui, sua partição /media/part será montada na inicialização do sistema.

Obrigado pela visita e boa sorte.

limits.conf

A grande possibilidade de configuração é um dos carros-chefes do GNU/Linux. Isso já é de notório conhecimento.
Essa dica tem por objetivo mostrar o que é um arquivo de configuração àqueles que ainda não conhecem, e como configurá-lo. Este especificamente para limites aos usuários.

Localização do arquivo:
/etc/security/limits.conf

Este arquivo que vamos estudar tem a seguinte descrição e deve ser editado com os seguintes atributos:
-domínio -tipo -item -valor

domínio
Este espaço deve ser substituído por um usuário, um grupo, um coringa “*” ou “%”(os dois sem aspas).
tipo
No tipo vamos definir o grau de limite que vamos atribuir ao domínio, grau esse que pode ser hard, para limites máximo ou soft para limites mínimos.
item
Já no campo item encontraremos a parte “X” da questão é aqui que estará marcada a tarefa que por algum motivo o usuário root vai restringir, limitar a um usuário normal.
Para isso temos como opções de item:
core – limita o tamanho do arquivo core (kb)
data – limita o tamanho máximo de dados (kb)
fsize – limita o tamanho máximo dos arquivos (kb)
memlock – refere-se ao espaço máximo de endereços bloqueados na memória (kb)
notfile – limita o número máximo de arquivos aberto
stack – tamanho máximo de pilha (kb)
rss – tamanho máximo de programas residentes (kb)
cpu – limita o tempo usado na CPU (min)
nproc – número máximo de processos
as – limite de endereços
maxlogins – limita logins de um usuário
priority – prioridade que os programas deste usuários serão executados.

valor
Por fim, temos o último campo valor. Este por seu nome já demonstrar a que veio, ajuda bastante ao estudante que aqui veio buscar informação.
Valor é onde se limita realmente.
Ex. Tamanho máximo de arquivo que usuário, “manuel” poderá armazenar na sua conta, tempo máximo que poderá usar a CPU.
Segue abaixo um exemplo de como configurar o arquivo.
Imagine que você cria uma conta, mas esta conta só precisa ser usada 3 vezes, isso é apenas um exemplo, pois achei que fosse de mais fácil compreensão.
Não cabe aqui explicar procedimento para criação de contas já que isso é assunto que estudante de GNU/Linux aprende em suas primeiras aventuras pela linha de comando, mas desconhecendo o fato: pergunte ao Google.
Abra o arquivo com um editor de sua preferência.
Ex: vi, emacs, kate.
Lembre-se que só usuário root tem poder de administrador. Portanto é preciso está logado como root #.


domínio___tipo_______item_________valor
manuel______hard_________maxlogins_________3
chico_______soft_________nproc_____________20
jose________hard_________rss_______________10000
*___________hard_________core______________0

No primeiro exemplo o usuário manuel terá direito a 3 logins. A partir daí será exibida uma mensagem para que o mesmo entre em contato com o administrador.

Espero que as informações estejam de fácil compreensão. Até breve, prometo postar com mais brevidade.