quinta-feira, 5 de abril de 2012

LVM2 em servidores: obrigatório!



Particionar um disco, formatar uma partição e acessar seu sistema de arquivos é a forma mais rápida de utilizar o armazenamento em qualquer computador, seja ele um laptop, desktop ou servidor. No entanto, para qualquer tarefa que envolva o deslocamento desse sistema de arquivos ou dessa partição, será obrigatório parar o disco rígido e interromper todos os serviços que dependam dele. Para evitar isso existe o LVM2, e eu proponho fortemente que você o use sempre.

Já faz vários anos desde que o LVM2 começou a ser usado no Linux. Desenvolvido pela empresa britânica Sistina Software — a mesma que desenvolveu o sistema de arquivos para clusters GFS e depois foi adquirida pelaRed Hat— o LVM foi integrado ao kernel Linux desde o princípio. No kernel 2.4, ele foi implementado em sua encarnação LVM1. O LVM1 residia inteiramente no kernel e dependia de alguns programas de espaço de usuário para o gerenciamento.

O kernel 2.6 recebeu a excelente adição do device mapper, um subsistema capaz de abstrair trechos de qualquer dispositivo de armazenamento e representá-los em dispositivos virtuais (geralmente localizados sob /dev/mapper/). O LVM2, nova implementação que surgiu no espaço de usuário, emprega unicamente o device mapper para criar, gerenciar e apagar volumes LVM.

O mesmo device mapper é usado para implementar o recurso de multipath de dispositivos de armazenamento em sistemas Linux, o que confirma sua versatilidade.

As ferramentas do LVM2, portanto, funcionam unicamente como interface para interagirmos com o subsistema device mapper. Outra forma de interagir com o device mapper é por meio do comando   [dmsetup http://docs.redhat.com/docs/pt-BR/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/dmsetup.html] , mas isto requer uma maior intimidade com essa ferramenta e vai muito além do uso do LVM2.

Resistência
Mesmo com suas diversas vantagens e facilidades de gerenciamento, no entanto, o LVM2 ainda encontra resistência entre alguns administradores. "Aumenta a complexidade", já ouvi alguns dizerem, ou "diminui o desempenho do disco". Eu mesmo já tive "medo do LVM2" durante algum tempo, até me familiarizar melhor com ele.

Segundo medições abrangentes, a perda de desempenho causada pelo emprego do LVM2, em comparação com a escrita direta no disco rígido, é de 10%. No entanto, medições mais recentes apontam para um ganho de desempenho ao usar LVM2 em sistemas Fedora. Segundo os autores dos benchmarks, esta diferença a favor do LVM2 deve ter sua causa na inativação das write barriers pelo LVM2nessa distribuição — algo que compromete potencialmente a confiabilidade dos dados armazenados nesses volumes.

Independentemente da velocidade de leitura ou gravação, algumas tarefas com LVM2 se tornam tão mais rápidas e fáceis, com frequentes vantagens operacionais, que o saldo é visivelmente positivo.
Vejamos alguns exemplos de casos em que o uso do LVM2 cai como uma luva.

Cenário 1: Migração de dispositivo
Digamos que você precise migrar os dados armazenados no seu servidor de um disco para outro. Para dar nomes, você deseja transferir tudo de sda5 para sdb2, por exemplo. E a aplicação afetada por isso é o Apache, que usa esse sistema de arquivos (um ext4) para abrigar seu document root.
Sem LVM2, você precisará parar a aplicação (o Apache) que utiliza esses dados, formatar o novo sistema de arquivos ( sdb2 ) transferir os dados do sistema de arquivos original ( sda5 ) para o  sdb2 (via  rsync ,  dd ou qualquer outro utilitário que você desejar), desmontar o sistema de arquivos  /dev/sda5  onde eles estão armazenados, acrescentar ao /etc/fstab  o registro do novo sistema de arquivos e retirar dele o registro do antigo.

Com LVM2, basta você formatar sdb2  como volume físico ( pvcreate /dev/sdb2 ), adicioná-lo ao grupo de volumes já existente ( vgextend nome_do_vg /dev/sdb2 ) e migrar os extents de  sda5  para  sdb2  ( pvmove /dev/sda5 /dev/sdb2 ). Seu Apache não precisa sair do ar — ele nem sequer vai perceber que os dados estão "em trânsito" de um disco para outro. Ao final do processo, basta retirar o disco antigo do grupo de volumes ( vgreduce nome_do_vg /dev/sda5 ). Nada de alterar o fstab, parar aplicação, desmontar sistema de arquivos etc. Muito mais simples.

Cenário 2: Crescimento de sistema de arquivos em disco com espaço disponível
Digamos que seu servidor de e-mail precise de mais espaço para armazenar as caixas de mensagem. Como o número de mensagens armazenadas sempre tende a crescer indefinidamente, servidores de e-mail são uma vítima comum deste tipo de problema.

Sem LVM2, você precisará desmontar o sistema de arquivos que abriga os e-mails, editar a tabela de partições do disco rígido onde ele reside (um risco sempre muito grande), remontar o sistema de arquivos e estendê-lo ( resize2fs , no caso do ext2/3/4).

Com LVM2, você talvez ainda tenha espaço no seu VG (grupo de volumes) para aumentar o LV (volume lógico) que abriga os e-mails. Se esse for o caso, basta estender o LV ( lvextend ) e depois estender o sistema de arquivos residente nele ( resize2fs ). Nada de parar o servidor de e-mails, nada de manipular a tabela de partições, nada de desmontar sistemas de arquivos. Tudo é feito sem parar o serviço.

Ainda com LVM2, se o VG que abriga seu LV estiver esgotado, você pode simplesmente usar outro PV (do mesmo disco ou de outro) para estender esse VG ( vgextend ) e em seguida estender o LV ( lvextend ) e seu sistema de arquivos ( resize2fs ). Novamente, nada de parar o serviço, desmontar o sistema de arquivos ou redimensionar partições. Talvez você ainda precise editar a tabela de partições do disco caso precise criar uma nova partição para agir como PV (volume físico) ou alterar o tipo de uma partição já existente (para 8e, o tipo Linux LVM2).

Cenário 3: Backup de um serviço com dados muito dinâmicos
Imagine que o seu servidor de e-mail tenha tráfego intenso: centenas de mensagens por minuto. Você precisa fazer backup das mensagens armazenadas no servidor, mas é muito problemático efetuar isso com o serviço em execução, já que as mensagens em constante alteração se tornam um "alvo móvel".

Sem LVM2, você teria que interromper o recebimento de mensagens — ou, se preferir, parar o servidor de e-mail completamente — e realizar o backup. Em seguida, você restauraria o funcionamento do servidor e as mensagens voltariam a circular normalmente.

Com LVM2, adivinhe: nada de parar o servidor de e-mail nem de interromper o recebimento das mensagens. Bastaria você criar um snapshot do LV que abriga as mensagens, realizar o backup apontando a origem como o snapshot (que é estático) e, ao final, destruir o snapshot sem cerimônia. Mais uma vez, o serviço permaneceu no ar sem sequer perceber que algo estava sendo feito com suas mensagens.
Adoção

Sem surpresa nenhuma, volumes LVM2 já são usados por padrão em várias distribuições GNU/Linux. No Fedora, por exemplo, o esquema automático de particionamento durante a instalação já põe até mesmo o sistema de arquivos raiz sobre um volume lógico LVM2.

Conclusão
O LVM2 oferece vantagens significativas no gerenciamento de storage. Desde o planejamento inicial dos volumes — é possível criar e redimensionar volumes a qualquer momento — até todos os tipos de manipulação que se desejar, o LVM2 é um ótimo recurso para servidores e até para alguns desktops e laptops.

 Artigo de Pablo Hess - phess@redhat.com, gentilmente cedido para nosso blog.

quarta-feira, 4 de abril de 2012

Frase do Dia

"Você pode descobrir mais sobre uma pessoa em uma hora de brincadeira,
 do que em um ano de conversa"
Platão

Respostas do Exercício 4 - Shell - Particularidades e Configurações


Se você ainda não fez o Exercício, acesse ele neste link e faça antes de ver as respostas:

Toda a teoria necessária para a realização deste exercício encontra-se no link
abaixo:

Você pode encontrar todos os resumos de aula no link abaixo:


1 - Quando o usuário root logar, deverá aparecer uma vaquinha (programa cowsay) dando as boas vindas junto com a hora e data.

Resposta:
Primeiro vamos instalar a simpatica vaquinha
# apt-get instsall cowsay
ou
# yum install cowsay

Faça um teste:
# cowsay "Eu sei falar!"

Caso não funcione, tente assim:
# /usg/games/cowsay "Eu sei falar!"

Para o root receber as boas vidas toda vez que logar, coloque a mensagem no /root.bashrc

# vi /root/.bashrc
Ao final do arquivo, insira:

# A variável HORAS irá armazenar a hora a Variável Minuto o minuto atual
HORAS=`date +%H`
MINUTOS=`date +%M`
DIA=`date +%d`
MES=`date +%B`
ANO=`date +%Y`

/usr/games/cowsay "Olá $LOGNAME. $DIA, de $MES de $ANO. São $HORAS horas e $MINUTOS Minutos"

Salve o arquivo e teste com o comando:

# source /root/.bashrc

2 - Para fazer o registro do logon
# vi /root/.bashrc

echo "O Usuário $LOGNAME fez logon: `date`" >> /etc/cartaodeponto.log

Salve o arquivo e teste com o comando:

# source /root/.bashrc

Depois confira com cat /etc/cartaodeponto.log se a data e hora foi gerado.

Para fazer o registro do logout
# vi /root/bash_logout

Salve o arquivo e teste com o comando:

# source /root/.bashrc

echo "O Usuário $LOGNAME fez logoff: `date`" >> /etc/cartaodeponto.log

Salve o arquivo e teste com o comando:

# source /root/.bashrc

Depois confira com cat /etc/cartaodeponto.log se a data e hora foi gerado.


3 - Para fazer o registro de que o servidor foi ligado, vamos editar o arquivo /etc/rc.local ou /etc/bash.bashrc (No Debian) ou ainda /etc/bashrc (No Redhat, Fedora)

# vi /etc/bash.bashrc

Insira esta linha:

echo "O Servidor foi ligado as `date +%T` hs do dia `date +%D`" >> /etc/servidor.log

Salve o arquivo e teste com o comando:

# source /etc/bash.bashrc

Depois confira com cat /etc/servidor.log se a data e hora foi gerado.

Ao final de tudo, reinicie a máquina e faça todos os testes sempre checando com os comandos

# cat /etc/cartaodeponto.log
# cat /etc/servidor.log

Exercício da Aula 4 - Shell


Exercício da Aula 4 - Shell

Toda a teoria necessária para a realização deste exercício encontra-se no link abaixo:
http://dailson.blogspot.com.br/2012/04/aula-4-shell-particularidades-e.html

Você pode encontrar todos os resumos de aula no link abaixo:
http://www.dailson.com.br/2009/05/indice-mini-tutoriais-usados-em-aula.html

Dica para este exercício: 
Exemplos de Personalização:
echo "São `date +%H` horas e `date +%M` minutos"
echo "Recife, `date +%d`, de `date +%B` de `date +%Y`"

1 - Quando o usuário root logar, deverá aparecer uma vaquinha (programa cowsay) dando as boas vindas junto com a hora e data.

2 - Crie um log de registros de entradas e saídas do usuário root da seguinte forma:
O usuário root fez logon  às 10:00hs do dia 22/03/2012
O usuário root fez logoff às 10:00hs do dia 22/03/2012
Este log deve ser gravado no arquivo /etc/cartaodeponto.log

3 - Faça um log no arquivo /etc/servidor.log registrando todas as vezes que o servidor é ligado, usando o seguinte modelo:

O Servidor foi ligado as 10:00hs do dia 22/03/2012

Obs: Testar tudo sem ter que reiniciar a máquina e nem logar

Aula 4 - Shell - Particularidades e Configurações


Segue o resumo de comandos e conceitos vistos em Sala de Aula.
Este é um material de apoio aos meus alunos que tem todo embasamento durante as aulas presenciais.

O Exercício de fixação desta aula, pode ser acessado no seguinte link:
http://dailson.blogspot.com.br/2012/04/exercicio-da-aula-4-shell.html

Existem diversos arquivos no Linux que fazem o controle de algumas funções pertinentes ao Shell e a interatividade com o usuário.

Citaremos alguns deles, a função e a localização deles.

Para visualizar estes arquivos, use editores como o vi, mcedit ou nano.

1 - Arquivos de Mensagens:

Mensagem da tela de login
/etc/issue

Mensagem quando o usuário loga pela rede como por exemplo via SSH
/etc/issue.net

Exibe uma mensagem quando o usuário loga:
/etc/motd
Obs: motd quer dizer - Message of Today (Mensagem do dia)

2 - Arquivos do Diretório do Usuário

Quando o usuário faz logon, os seguintes arquivos são executados:

.profile ou .bash_profile --> Perfil do usuário (variáveis...)
.bashrc --> bash RC - run commands

Quando o usuário faz logout o seguinte arquivo é executado:
.bash_logout

Guarda o histórico de comandos executados pelo usuário
.bash_history

3 - Na inicialização da Máquina.

Quando a máquina é ligada, os seguintes arquivos são executados:

/etc/profile -> Usado para carregar perfil, Path entre outros

/etc/bash.bashrc -> Usado para executar comandos, preparar alias, autocompletar

/etc/rc.local -> Usado para iniciar comandos.

/etc/environment --> Usado para carregar o PATH e também o idioma do shell
Ex: 
 LANG=pt_BR
 LC_ALL=pt_BR
 LC_MESSAGES=pt_BR

4º Outros Arquivos
/etc/bash_completion - Ativar o autocomplet­ar comandos.

/etc/nologin --> Se criado, impede que qualquer usuário logue no sistema.

NO Debian:
/etc/init.d/bootmisc.sh --> Script de inicialização. Neste arquivo você pode colocar serviços para ser iniciados.

Resumindo...

~/.bashrc - Executa comandos, alias, autocompletar ... Mas só é executado quando o usuário loga. A Vantagem de usar o .bashrc ao invés do .bash_bashrc é porque o .bashrc é executado mesmo na interface gráfica ao abrir um terminal.

~/.profile - Carrega ítens relativo ao perfil. Mas só é executado quando o usuário loga.

/etc/profile  - Carrega ítens relativo ao perfil. É executado quando a máquina é ligada.

/etc/bash.bashrc - Executa comandos, alias, autocompletar ... É executado quando a máquina é ligada.

/etc/rc.local -. Executa comandos. É executado quando a máquina é ligada.

Obs: Os caracteres ~/. indicam que é o arquivo no diretório do usuário.

Vejam nas duas principais distribuições do mercado, como os arquivos são executados:

No Debian e Derivados:
1º /etc/init.d/bootmisc.sh
2º /etc/rc.local
3º /etc/bash.bashrc
4º /etc/profile
5º ~/.bashrc
6º ~/.profile

No Redhat e derivados:
1º /etc/rc.local
2º /etc/profile
3º ~/.bash_profile 
4º ~/.bashrc
5º /etc/bashrc

Note as difereça dos nomes dos arquivos entre as duas distribuições:

Debian
Redhat
/etc/profile
/etc/profile
/etc/bash.bashrc
/etc/bashrc
/etc/rc.local
/etc/rc.local
~/.bashrc
~/.bashrc
/ .profile
~/.bash_profile

Os arquivos .bash_profile pode ter o seu conteúdo modificado conforme as necessidades (preferências) de cada usuário. As alterações não ocorrem até que o arquivo seja lido novamente pelo shell. Para isto, devemos deslogar e logar novamente ou executar o seguinte comando:

# source
ou
# .

Veja os exemplos abaixo:

source .bashrc
source .profile
source .bash_logout
source /etc/bash.bashrc
source /etc/profile
source /etc/bash_completion
ou através do comando .
. .bashrc
. .profile
. .bash_logout
. /etc/bash.bashrc
. /etc/profile
. /etc/bash_completion

Fontes:

Infra-estrutura (FreeBSD) Unix no (Mac) OS X



Excelente Artigo sobre Sistemas Operacionais, Kernel, MicroKernel, Unix e Mac OS.

Recomendadíssimo!

http://www.fug.com.br/content/view/738/9/

quarta-feira, 14 de março de 2012

Frase do Dia

"A nossa maior glória não reside no fato de nunca cairmos, 
mas sim em levantarmo-nos sempre depois de cada queda."
Confúcio

Linux From Scratch 7.1 publicado


Quer saber como fazer uma distribuição linux do Zero?? 
Quer aprender de fato com grandes distribuições como Redhat, Ubuntu e Debian fazem seus Linux?


O projeto Linux From Scratch (LFS) publicou a versão 7.1 de seu manual para construção de uma instalação Linux personalizada. O novo guia tem 345 páginas e usa mais componentes atualizados do que versões anteriores, por exemplo, o Linux kernel 3.2.6 e GNU Compiler Collection 4.6.2 (GCC). 

Confira online: http://www.linuxfromscratch.org/lfs/view/7.1/

Fonte: http://www.noticiaslinux.com.br/nl1330999408.html


Os salários de 15 áreas de TI nas cinco regiões do Brasil



O levantamento inédito, feito pelo Catho Online, serviço que reúne ofertas de empregos e currículos, teve como fonte mais de 260.000 profissionais.

Pela primeira vez vi uma pesquisa deste tipo chegar perto da realidade do mercado de Pernambuco.

Vale a pena conferir. Os resultados estão no álbum de imagens da reportagem.

http://exame.abril.com.br/carreira/noticias/os-salarios-de-15-areas-de-ti-nas-cinco-regioes-do-brasil


terça-feira, 13 de março de 2012

Frase do Dia

"Eu não procuro saber as respostas, 
procuro compreender as perguntas"
Confúcio

Ubuntu e Banco o Brasil



Fazer o Internet Banking do BB funcionar agora é simples, basta instalar o browser plugin do icedtea. Numa instalação padrão do ubuntu, executar:

# sudo apt-get install icedtea6-plugin

e correr pro abraço.

Icedtead é uma implementação da VM Java 100% Open Source. Como o OpenJDK virou a implementação de referência do Java, faz sentido tudo começar a funcionar perfeitamente no icedtea, que é baseado no OpenJDK.

Dica de Eden Caldas

segunda-feira, 12 de março de 2012

Respostas do Exercício 3 - Manipulação de Arquivos

Respostas do Exercício da Aula 3 - Manipulação de Arquivos

Se você ainda não fez o Exercício, acesse ele neste link e faça antes de ver as respostas:

Toda a teoria necessária para a realização deste exercício encontra-se no link
abaixo:

Você pode encontrar todos os resumos de aula no link abaixo:

1 - Crie a seguinte árvore na Raiz do Disco:

# cd /
# mkdir exercicio
# cd exercicio
# mkdir arquivos
# mkdir arquivos/1letra
# mkdir arquivos/2letra
# mkdir arquivos/3letra
# mkdir configuracoes
# mkdir configuracoes/conf
# mkdir configuracoes/dll
# mkdir configuracoes/lib
# mkdir letras
# mkdir letras/a
# mkdir letras/b
# mkdir letras/c
# mkdir letras/d
# mkdir letras/e
# mkdir -p numeros/1/2/3/4/5
# mkdir programas/
# mkdir programas/gimp
# mkdir programas/scribus
# mkdir programas/tuxpaint

2 - Vá para o diretório /exercicio
# cd /exercicio

3 - Crie um arquivo em branco chamado aula.txt.
# touch aula.txt

4 - Crie uma cópia deste arquivo chamada prova.txt
# cp aula.txt prova.txt

5 - Mude o nome de prova.txt para avaliacao.doc
# mv prova.txt avaliacao.doc

6 - Copie todos os arquivos de 3 letras no nome do diretório /etc para 3letras
# cp /etc/??? /exercicio/arquivos/3letras
ou
# cp /etc/??? arquivos/3letras

7 - Copie todos os arquivos de extensão conf do diretório /etc para o diretório
conf
# cp /etc/*.conf /exercicio/configuracoes/conf
ou
# cp /etc/*.conf configuracoes/conf

8 - Copie todo o diretório /etc para configuracoes
# cp -Rvf /etc /exercicio/configuracoes
ou
cp -Rvf /etc configuracoes

9 - Mude o nome do diretorio conf para conf2
# mv /exercicio/configuracoes/conf /exercicio/configuracoes/conf2
ou
# mv configuracoes/conf configuracoes/conf2

10 - Copie todo o diretório /exercicio para /tmp
# cp -Rvf /exercicicio /tmp

11 - Mude o nome do diretório exercicio para tarefas
# mv /exercicio /tarefas

12 - Copie o arquivo services que está em /etc para o diretório de trabalho (o diretório que você está no momento)
# cp /etc/services .

13 - Renomeie services para aula.txt
# mv services aula.txt

14 - Visualize o conteúdo de aula.txt
# cat aula.txt
ou
# more aula.txt
ou
# less aula.txt

15 - Grave o conteúdo de aula.txt em resultado.txt
# cat aula.txt > resultado.txt

16 - Crie um arquivo data.txt com a data e hora atual da seguinte forma:Hoje é DATA-E-HORA-ATUAL
# echo "Hoje é `date`" > data.txt
ou
# echo "Hoje é $(date)" > data.txt

17 - Apague o arquivo avaliacao.doc
# rm avaliacao.doc

18 - Quantas linhas tem o arquivo aula.txt ?
# wc -l aula.txt

19 - Qual o número da linha do arquivo aula.txt tem a palavra FTP ?
# grep -n "FTP" aula.txt

20 - Exiba o arquivo services ordenado e com pausa
# sort aula.txt | sort | more

21 - Exiba as 10 primeiras linhas deste arquivo
# head aula.txt

22 - Exiba as 20 últimas linhas deste arquivo
# tail -n 20 aula.txt

23 - Grave no arquivo usuarios.txt apenas os nomes dos usuários ordenados do maior para o menor, numerado de forma ascendente.
# cut -f1 -d: /etc/passwd | sort -r | nl > usuarios.txt

24 - Exiba as variáveis do sistema com pausa.
# env | more

25 - Crie uma variável chamada NOME que contenha seu primeiro nome.
export NOME="Dailson"

26 - Exiba a mensagem O usuário USUARIO-ATUAL está no diretório DIRETORIO ATUAL
# echo "O Usuário $LOGNAME está no diretório $HOME"

27 - Coloque dentro do arquivo nome.txt os seguintes dados:
Seu Nome
Sua Idate
Seu email

# echo "Nome: Dailson" >> nome.txt
# echo "Idade: 21" >> nome.txt
# echo "Email: contato@dailson.com.br" >> nome.txt

28 - Visualize o arquivo nome.txt
# cat nome.txt

Exercício da Aula 3 - Manipulação de Arquivos


Exercício da Aula 3 - Manipulação de Arquivos

As respostas do Exercício pode ser acessada neste link:

Toda a teoria necessária para a realização deste exercício encontra-se no link abaixo:
http://dailson.blogspot.com/2012/03/aula-3-manipulacao-de-arquivos.html

Você pode encontrar todos os resumos de aula no link abaixo:
http://www.dailson.com.br/2009/05/indice-mini-tutoriais-usados-em-aula.html

1 - Crie a seguinte árvore na Raiz do Disco:


2 - Vá para o diretório /exercicio

3 - Crie um arquivo em branco chamado aula.txt.

4 - Crie uma cópia deste arquivo chamada prova.txt

5 - Mude o nome de prova.txt para avaliacao.doc

6 - Copie todos os arquivos de 3 letras no nome do diretório /etc para 3letras

7 - Copie todos os arquivos de extensão conf do diretório /etc para o diretório conf

8 - Copie todo o diretório /etc para configuracoes

9 - Mude o nome do diretorio conf para conf2

10 - Copie todo o diretório /exercicio para /tmp

11 - Mude o nome do diretório exercicio para tarefas

12 - Copie o arquivo services que está em /etc para o diretório de trabalho (o diretório que você está no momento)

13 - Renomeie services para aula.txt

14 - Visualize o conteúdo de aula.txt

15 - Grave o conteúdo de aula.txt em resultado.txt

16 - Crie um arquivo data.txt com a data e hora atual da seguinte forma:Hoje é DATA-E-HORA-ATUAL

17 - Apague o arquivo avaliacao.doc

18 - Quantas linhas tem o arquivo aula.txt ?

19 - Qual o número da linha do arquivo aula.txt tem a palavra FTP ?

20 - Exiba o arquivo aula.txt ordenado e com pausa

21 - Exiba as 10 primeiras linhas deste arquivo

22 - Exiba as 20 últimas linhas deste arquivo

23 - Grave no arquivo usuarios.txt apenas os nomes dos usuários ordenados do maior para o menor, numerado de forma ascendente.

24 - Exiba as variáveis do sistema com pausa.

25 - Crie uma variável chamada NOME que contenha seu primeiro nome.

26 - Exiba a mensagem O usuário USUARIO-ATUAL está no diretório DIRETORIO ATUAL

27 - Coloque dentro do arquivo nome.txt os seguintes dados:
Seu Nome
Sua Idade
Seu email

28 - Visualize o arquivo nome.txt

Frase do Dia


"No mundo em que vivemos,
 ter opinião é ser do contra!"

Aula 3 - Manipulação de Arquivos

-->
Aula 3 - Comandos Básicos de Manipulação de Arquivos

Segue o resumo de comandos e conceitos vistos em Sala de Aula.
Este é um material de apoio aos meus alunos que tem todo embasamento durante as aulas presenciais.

O Exercício de fixação desta aula, pode ser acessado no seguinte link:

Você pode encontrar todos os resumos de aula no link abaixo:

Para criar um arquivo vazio
Use da seguinte forma: touch  nome_do_arquivo
Exemplo:
# touch arquivo_vazio

Para renomear o nome de um arquivo
Use da seguinte forma: mv nome-atual novo-nome
Exemplo:
# mv arquivo_vazio arquivo_cheio

Para copiar um ou mais arquivos
Use da seguinte forma: cp nome_do_arquivo destino
Exemplo:
# cp arquivo_cheio /tmp

Para apagar arquivos
Use da seguinte forma: rm nome_do_arquivo
Exemplo:
# rm arquivo_cheio

Para mover arquivos
Use da seguinte forma: mv nome_do_arquivo destino
Exemplo:
# mv arquivo_cheio /tmp

Para visualizar o conteudo de um arquivo
Use da seguinte forma: cat nome_do_arquivo
ou
Use da seguinte forma: more nome_do_arquivo (com pausa)
ou
Use da seguinte forma: less nome_do_arquivo (com pausa) - Para sair = q
Exemplo:
# cat /etc/services
ou
# more /etc/services
ou
# less /etc/services

Para Filtrar Comandos - Use o caracter pipe |
Use da seguinte forma:  Comando1 | Comando2 | Comando3 | Comando_n

# cat nome_do_arquivo | more
# cat nome_do_arquivo | less
Exemplo:
# cat /etc/services | more  (para sair: q)
# cat /etc/services | less (para sair: q)

Para exibir as estatísticas de um arquivo como:
Quantidade de Letras, linhas e palavras de um arquivo.
Use da seguinte forma:
wc  nome_do_arquivo (exibe quantidade de letras, palavras e linhas)
wc -c nome_do_arquivo (letras)
wc -l nome_do_arquivos (linhas)
wc -w nome_do_arquivo (palavras)
Exemplo:
# wc nome_do_arquivo
# wc -c /etc/services (exibe a quantidade de letras)
# wc -l /etc/services (exibe a quantidade de linhas)
# wc -w /etc/services (exibe a quantidade de palavras)

Para Ordenar um Arquivo na tela
Use da seguinte forma: sort nome_do_arquivo
Exemplo:
# sort /etc/services
# sort -r services (ao contrario)

Para Exibir o inicio de um arquivo (10 primeiras linhas)
Use da seguinte forma: head nome_do_arquivo
Exemplo:
# head /etc/services

Para exibir o fim de um arquivo (10 ultimas linhas)
Use da seguinte forma: tail nome_do_arquivo
                       tail -f nome_do_arquivo (lê o fim do arquivo em tempo real - Ideal para ler Logs em tempo real)
Exemplo:
# tail /etc/services
Para ler um log em tempo real
# tail -f /var/log/messages (Em distribuições baseadas em Redhat)
ou
# tail -f /var/log/syslog (Em distribuições baseadas em Debian)

Para Filtrar/Pesquisar expressões em arquivo
Use da seguinte forma: grep "expressão" nome_do_arquivo
Exemplo:
# grep "FTP" /etc/services
# grep -v "FTP" /etc/services (inverso)
# grep -n "FTP" /etc/services (numero da linha)
# grep -i "FTP" /etc/services (maiúscula ou minúscula)

Para Filtrar saida de comando
Use da seguinte forma: cut opções nome_do_aquivo
Principais Opções:
                -c = qtd de caracter
                -f = campo
                -d = delimitador
Exemplo:
# cut -c1 /etc/passwd
# cut -f1 -d: /etc/passwd (Exibir apenas o nome dos usuários do sistema)


Para exibir Mensagens na tela:
Use da seguinte forma: echo "Mensagem"
Exemplo:
# echo "Exibe uma msg na tela"


Para usar Redirecionadores de Saída de comandos
> Sobrescreve o arquivo destino
>> Adiciona ao arquivo destino
< ou << Input
Exemplo:
# date (Exibe a data na tela)
# date > data.txt (Grava o resultado do comando date no arquivo data.txt)
# tr 'a-z' 'A-Z' < /etc/services
# tr 'a-z' 'A-Z' < /etc/services > resultado.txt
# echo "Meu nome é João" > nome.txt

Utilizando Expressão Regular:
* --> Quer dizer todos
? --> Substitui um caracter
*.* --> Arquivos com extensão
Exemplo:
cp /etc/* /tmp (Copia todos os arquivos de /etc para /tmp)
cp /etc/*.* /tmp (Copia todos os arquivos de /etc que tenham extensão para /tmp)
cp /etc/??? /tmp (Copia todos os arquivos que tenham 3 letras no nome para /tmp)


Para criar variáveis
Use da seguinte forma: export NOME_VARIAVEL=CONTEUDO
Exemplo:
# export ALUNO=José
export NOME_COMPLETO="José da Silva"

Para exibir conteúdo de Variáveis:
# echo $ALUNO
# echo $NOME_COMPLETO

Para exibir conteúdo de Variáveis junto com alguma mensagem:
# echo "O Primeiro nome do Aluno é $ALUNO"
# echo "O Nome completo do Aluno é $NOME_COMPLETO"

Para exibir variáveis do SHELL Atual:
# env
ou
# export

Para exibir resultados de comandos junto com possíveis mensagens:
Exemplo:
# echo A Data e Hora atual é: `date`
# echo "A Data e Hora atual é: $(date)"
# echo "A Data e Hora atual é: $(date)"  > data.txt (Grava o conteúdo deste comando no arquivo data.txt