Você está na página 1de 11

Apostila elaborada por Fernando Henrique e Paula da Luz - presidente@ifsc.usp.

br Mestrando em Fsica Computacional pelo Instituto de Fsica de So Carlos

Tutorial do Linux
Um pouco de Histria
O Kernel do Linux foi inicialmente desenvolvido pelo estudante finlands Linus Torvalds numa tentativa de conseguir o seu prprio sistema operativo semelhante ao Unix (Unix-like) que corresse em processadores Intel 80386. Linus obteve uma cpia do Minix estudou a mesma no ficando satisfeito com sua arquitetura. O projeto foi lanado em 1991 numa famosa mensagem para um grupo de discusso da Usenet. Curiosamente, o nome Linux foi criado por Ari Lemmke, administrador do site ftp.funet.fi que deu esse nome ao diretrio FTP onde o kernel do linux estava inicialmente disponvel (Linus tinha batizado como "Freax", inicialmente). Desde o princpio, ele recebeu a ajuda de hackers do Minix, e hoje recebe contribuies de milhares de programadores de todo mundo.

Arquitetura
O Linux um ncleo (kernel) monoltico. Isto , as funes do ncleo (agendamento de processos, gerenciamento de memria, operaes de entrada e sada, acesso ao sistema de arquivos) so executadas no espao do ncleo. Uma caracterstica do Linux que algumas das funes (drivers de dispositivos, suporte rede, sistemas de arquivo, por exemplo) podem ser compiladas e executadas como mdulos (LKM - loadable kernel modules), que so bibliotecas compiladas separadamente da parte principal do ncleo e podem ser carregadas e descarregadas aps o ncleo estar em execuo.

Portabilidade
Embora Linus Torvalds no tenha tido como objetivo inicial tornar o Linux um sistema portvel, ele evoluiu nessa direo. Linux hoje, na verdade, um dos ncleos (kernels) de sistema operacional com mais portabilidade, correndo em sistemas desde o iPaq (um computador porttil) at o IBM S/390 (um denso e altamente custoso mainframe) De qualquer modo, importante notar que os esforos de Linus foram tambm dirigidos a um diferente tipo de portabilidade. Portabilidade, de acordo com Linus, era a habilidade de facilmente compilar aplicaes de uma variedade de fontes no seu sistema; portanto o Linux originalmente tornou-se popular em parte devido ao esforo para que as fontes GPL ou outras favoritas de todos executassem em Linux.

Termos de Licenciamento
Inicialmente, Torvalds lanou o Linux sob uma licena que proibia qualquer uso comercial. Isso foi mudado de imediato para a Licena Pblica Geral GNU. Essa licena permite a distribuio e mesmo a venda de verses possivelmente modificadas do Linux mas requer que todas as cpias sejam lanadas dentro da mesma licena e acompanhadas do cdigo fonte.

Distribuies
Atualmente, um Sistema Operacional GNU/Linux completo (equivalente a "distribuio de GNU/Linux") uma coleo de software livre (e alguns no-livres) criados por indivduos, grupos e organizaes de todo o mundo, tendo o Linux como seu ncleo. Companhias como a Red Hat, a SuSE, a Mandriva (unio da Mandrake com a Conectiva), bem como projetos de comunidades como o Debian ou o Gentoo, compilam o software e fornecem um sistema completo, pronto para instalao e uso. Dentre as maiores, distribudas em CDs, podem-se citar: Slackware, Debian, Suse, Ubuntu e Conectiva. O que faz a diferena como esto organizadas e pr-configuradas as aplicaes. A distribuio Conectiva Linux, por exemplo, tinha as suas aplicaes traduzidas em portugus, o que facilitou que usurios que falam a Lingua Portuguesa tenham aderido melhor a esta distribuio. Hoje esta

distribuio foi incorporada Mandrake, o que resultou na Mandriva. Para o portugus, existe tambm a distribuio brasileira Kurumin, construda sobre Knoppix e Debian. Distribuies atuais de Linux: Arch Linux Caixa Mgica Conectiva Cytrun Linux Debian Debian-BR-CDD Famelix Fedora Gentoo Linux GoboLinux Kake Linux Kalango Linux Knoppix Kurumin Linux Kubuntu Lycoris Mandriva Muriqui Linux Red Hat Linux RXART Linux Skolelinux Slackware Linux Sorcerer GNU/Linux SuSE TechLinux tsl linux Ubuntu Linux White Box

O que uma shell?


No mundo da computao, uma shell um programa que interpreta comandos do usuario para que o sistema operacional possa entender e executar o que lhe pedido. A shell uma interface em linha de comando, baseada em texto. O usurio pode digitar comandos para executar funes ou programas, abrir e navegar diretrios, e ver processos que esto ocorrendo no momento. Sendo a shell a unica camada para o sistema operacional, voc pode fazer operaes que no so possiveis usando usando uma interface grafica do usuario (do ingles GUI - graphical user interface). Alguns exemplos inclui mover arquivos dentro das pastas de sistema e deletar arquivos que so tipicamentes bloqueados. Para executar isso, voc precisa saber as a sintaxe correta dos comandos e permitir o seu acesso como administrador do sistema. Duas shells mais comumente utilizadas so a Bourne Again Shell (bash) e a Tenex C shell (tcsh). Vale ressaltar que na linha de comandos de uma shell, podemos utilizar diversos comandos um aps o outro, ou at mesmo combin-los numa mesma linha. Se colocarmos diversas linhas de comandos em um arquivo texto simples, teremos em mos um Shell Script, ou um script em shell, j que Script uma descrio geral de qualquer programa escrito em linguagem interpretada, ou seja, no compilada. O script shell vai ser um assunto abordado mais adiante.

Lista de Comandos
Comandos para manipulao de arquivos
A partir do momento que vamos comear a mexer com arquivos, precisamos saber alguns comandos bsicos para a sua manipulao.

cd - Navegando entre diretrios ls - Listar arquivos mkdir - Cria um diretrio rmdir - Remove um diretrio vazio cp - Cpia de arquivos e diretrios mv - Move arquivos e diretrios rm - Deleta arquivos e diretrios ln - Linkando arquivos

cat - Exibe o contedo de um arquivo ou direciona-o para outro less - Exibe o contedo de um arquivo grande, permitindo a navegao no mesmo pipe - Concatena comandos grep Filtra e busca resultados

cd - Navegando entre diretrios cd [nome_do_diretrio] Este comando acima mudar o diretrio atual de onde o usurio est. H tambm algumas abreviaes de diretrios no Linux para a facilitao, estes so:

Abreviao . (ponto) .. (dois pontos) ~ (til) / (barra) - (hfen)

Significado Diretrio atual Diretrio superior Diretrio HOME do usurio Diretrio Raiz Diretrio anterior

Por exemplo, se eu quero ir para o meu diretrio home, fao o seguinte: $pwd /usr/games $cd~ $pwd /home/pres

Ou seja, eu estava no diretrio /usr/games, e com um simples cd para o diretrio ~, fui para o meu diretrio home (/home/pres). Quando voc deseja saber o caminho completo do diretrio em que voc est, utilize o comando pwd. Se voc deseja ir para um diretrio que est na raiz diretamente, voc usa o / antes, exemplo: $pwd /usr/local/RealPlayer7/Codecs $cd/etc/rc.d $pwd /etc/rc.d $cd $pwd /usr/local/RealPlayer7/Codecs

Eu estava no diretrio /usr/local/RealPlayer7/Codecs e quis ir para o diretrio etc/rc.d que est na raiz. Note depois que eu usei o hfen e fui de volta para o ltimo diretrio em que eu estava.

ls - Listar arquivos ls [opes] [arquivo/diretrio] Este comando lista os arquivos, nada mais que isso. Se voc executar apenas o ls sozinho, ele vai mostrar todos os arquivos existentes no diretrio atual. H tambm as opes extras: Parmetro -l -a -h -R -t -s Significado Lista os arquivos em formato detalhado. Lista os arquivos ocultos (que comeam com um .) Exibe o tamanho num formato legvel (combine com -l) Lista tambm os subdiretrios encontrados Lista em ordem cronolgica Lista em blocos de 1024-bytes, mostrando a esquerda

Exemplo de uma listagem detalhada: $lsl total9916 drwxrwxrx5hugohugo1302Aug1610:15CursoC_UFMG rwrr1hugohugo122631Jul1208:20Database.pdf rwrr1hugohugo2172065Jul1208:20MySQL.pdf rwrr1hugohugo2023315Jul1208:20PHP3.pdf

Podemos tambm usar no ls os wildcards, ou seja, caracteres que substituem outros. Exemplo: eu quero listar todos os arquivos que tm a extenso .txt, fao o seguinte: $ls*.txt debianinstall.txtmanualito.txtnamed.txtplip.txt seguranca.txtipfw.txtmouse.txtplaca_de_video.txt rede.txtsis.txt

O wildcard o "*", que representa "tudo".txt. Existem outros wildcards, exemplo disso o ponto de interrogao (?), que substitui apenas 1 caractere, exemplo: $lsmanual?.txt manual1.txtmanual2.txtmanual3.txtmanualx.txtmanualP.txt

Existe outro wildcard, que envolve os colchetes. Por exemplo: $lsmanual[37].txt manual3.txtmanual4.txtmanual6.txtmanual7.txt Lista todos os arquivos que tiverem como manual?.txt, onde o ? pode ser substitudo por 3, 4, 5, 6 e 7.

mkdir - Cria um diretrio mkdir <nome_do_diretrio> Cria um diretrio. Exemplo: $mkdir~/paginas Este comando criar o diretrio paginas no seu diretrio home. rmdir - Remove um diretrio vazio rmdir <nome_do_diretorio> Apaga um diretrio que esteja vazio. Exemplo: $rmdir/tmp/lixo Isto apagar o diretrio /tmp/lixo apenas se ele estiver vazio. Para apagar um diretrio com seu contedo, refira-se ao comando rm. cp - Cpia de arquivos e diretrios cp [opes] <arquivo_origem> <arquivo_destino> O comando cp copia arquivos e diretrios. Como opes dele, podemos ver: Parmetro -i -v -R Significado Modo interativo Mostra o que est sendo copiado Copia recursivamente (diretrios e subdiretrios)

Exemplos: Quero copiar brasil.txt para livro.txt, com a opo de modo interativo. $cpibrasil.txtlivro.txt cp:sobrescrever`livro.txt'? Como o arquivo livro.txt j existia, ele pergunta se quer sobrescrever, responda y(sim) ou n(no). Agora eu quero copiar o diretrio /home/ftp com tudo dentro (at seus subdiretrios) para /home/ftp2, fao o seguinte: $cpR/home/ftp/home/ftp2

mv - Move arquivos e diretrios mv [opes] <arquivo_origem> <arquivo_destino>

Este comando simplesmente move algum arquivo para outro lugar. Ele tambm usado para renomear um arquivo. Vale os parmetros listados no comando cp. Por exemplo, se eu quero renomear o industria.txt para fabrica.txt, eu fao o seguinte: $mvindustria.txtfabrica.txt

Se eu quiser mover o industria.txt para /home/usuario com o mesmo nome, fao: $mvindustria.txt/home/usuario

rm - Deleta arquivos e diretrios rm [opes] <arquivo> Novamente, as opes listadas no comando cp, so vlidas aqui, principalmente a i, pois no queremo apagar um arquivo sem querer, n :-) Este comando apaga definitivamente o arquivo ou diretrio. Exemplo: $rmarquivo.bin

Para apagar um diretrio com todo seu contedo, usa-se a opo r, assim: $rmr/tmp/lixo

ln - Linkando arquivos ln -s <arquivo_origem> <link simblico> Este comando usado para gerar links simblicos, ou seja, que se comportam como um arquivo ou diretrio, mas so apenas redirecionadores que mandam seu comando para outro arquivo ou diretrio, por exemplo: $lns/manual/home/linuxmanual Este comando criar o link /home/linux-manual, se voc der um ls l voc ver que o diretrio /home/linuxmanual est apontando para /manual. Se voc ir para o /home/linuxmanual, voc na verdade estar no /manual, mas como um link, no h diferena. cat - Exibe o contedo de um arquivo ou direciona-o para outro cat <arquivo> Este comando existe para mostrar o contedo de um arquivo, ou para fazer a cpia deste arquivo, ou uma juno. Vejamos um exemplo, se eu quiser mostrar o contedo de /home/usuario/contato, eu digito: $cat/home/pres/contato Aparecer o contedo do arquivo contato:

Presidente Fernando Luz presidente_arroba_ifsc_ponto_usp_ponto_br Este comando pode tambm servir de direcionador para outro arquivo. Indicadores so usados para isso: Indicador ">" - faz uma cpia, exemplo: $catcontato1>contato2

Indicador ">>" - Acrescenta um arquivo ao outro, exemplo: $catcontato1>>contato2

less - Exibe o contedo de um arquivo grande, permitindo a navegao no mesmo less <arquivo> Um dos problemas do cat que quando visualizamos o contedo de um arquivo grande, ele jogado todo na tela, e acabamos vendo somente as linhas finais do texto. Para resolver este problema, criaram um comando chamado more, com as funes parecidas com a do cat, mas ele no permitia retrocesso na leitura do arquivo. Ento Mark Nudelman iniciou seu trabalho no less em 1983 quando teve a necessidade de utilizar uma ferramenta como o more porm com rolagem para trs. Ela tambm deveria suportar a leitura de arquivos de log grandes demais na poca para ferramentas como vi. O nome less o contrrio de more, que vem de uma brincadeira com o nome do seu precessor. $less/home/pres/disertacao.tex Aparecer o contedo do arquivo contato: Presidente Fernando Luz Ta na hora de comear hein!!! X-( Os procedimentos executados com o cat, tambm so validos com o less. Pressione h enquanto ele executado para ver as funcionalidades que o less permite (como busca dentro do texto). pipe Concatena comandos <comando> | <comando> O pipe um das maneiras que o Linux pode utilizar para comunicao entre processos. De uma maneira simples podemos dizer que o pipe nada mais do que o encadeamento de processos. Ao primeiro olhar o pipe pode at no chamar ateno dos principiantes, mas trata-se de um ferramenta muito poderosa. Esse encadeamento de processo pode ser ativado pelo usurio atravs do comando "|". Vamos demonstrar no exemplo abaixo o uso dessa ferramenta: $cphelp|less O resultado do comando cphelp, jogado para o comando less, que permite uma melhor forma de ler o resultado.

grep Filtra e busca resultados grep <arquivo> Uma utilidade do comando grep a de buscar por ocorrncias de expresses dentro de 1 ou mais arquivos. Imagine que precisamos pesquisar a expresso servidor dentro de todos os arquivos do diretrio /etc. $grepskernel/etc/* /etc/filesystems:#Uncommentthefollowinglineifyourmodularkernelhasvfat /etc/make.conf.example:#settingforalllinuxkernel+glibcbasedsystems. /etc/modules.conf:#Cryptomodules(seehttp://www.kerneli.org/) /etc/modules.conf:#0xFFFFFFFFletthekernelmoduleautodetectthecorrectvalue O resultado aparece da seguinte forma. nome do arquivo: linha que contm a expresso. Podemos tambm utilizar o grep como um filtro de resultados. Utilizando o comando pipe (|), podemos concatenar a saida de um comando com grep, como no exemplo abaixo que estamos interessados em saber quais documentos foram mexidos pela ltima vez no ano de 2007. $lsln|grep2007 drwx2100010040962007020518:57amsn_received drwxrxrx2100010040962007030120:06Desktop rwrr1100010054832007020113:57Dissertao.tex rwrr1100010012292007020518:07Dissertao.log rwrr1100010002007020518:07Dissertao.tex drwxrxrx8100010040962007013010:45Mestrado rwrr1100010061492007020113:56tese.tex

Comandos sobre processos do sistema


ps - Listando processos kill - Matando um processo killall - Matando processos pelo nome

ps - Listando processos ps [opes] Quando um programa executado no sistema, ele recebe um nmero de identificao, o chamado PID. Este comando lista esses processos executados, e apresenta o PID. Alm do PID, ele tambm mostra o comando executado (CMD) e tambm o STAT (status atual do processo executado, veja nota abaixo), alm de outros. O status do processo identificado por letras, aqui segue uma tabela com as definies de cada letra:

Letra 0 S R I Z T W

Definio No existente Descansando, fora de funcionamento (Sleeping) Rodando (Running) Intermediando (Intermediate) Terminando (Zumbi) Parado (Stopped) Esperando (Waiting)

Agora um exemplo para este comando: $psaux USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND root10.00.0112052?SDec250:05init root20.00.000?SWDec250:00[kflushd] root30.00.000?SWDec250:00[kupdate] root40.00.000?SWDec250:00[kpiod] root10040.00.01082048?SNDec250:00[mysqld] root10070.00.028520?SWDec250:00[smbd] pres10740.00.017360tty1SWDec250:00[bash] pres12630.00.016320tty1SWDec250:00[startx] pres12710.00.023040tty1SWDec250:00[xinit] pres12750.02.443121360tty1SDec250:16wmaker pres24610.00.016360tty1SW07:090:00[netscape] pres96180.94.950242688pts/1S09:560:06vimd03.html Este parmetro (aux) fez o ps listar todas as informaes sobre todos os processos executados. kill - Matando um processo kill [-SINAL] <PID> O comando kill muito conhecido, ele serve para matar um processo que est rodando. Matar? Terminar este processo, finalizar natoralmente! Para matar um processo, temos de saber o PID dele (veja o comando ps), e ento executar o kill neste PID. Vamos killar o Netscape: $psaux|grepnetscape pres24610.00.016360tty1SW07:090:00[netscape] $kill92461 E o processo do Netscape foi morto!

killall - Matando processos pelo nome killall [-SINAL] <comando> Faz a mesma coisa que o kill, s que a vantagem aqui que voc no precisa saber o PID do processo, e sim o nome. A desvantagem que se tiver dois processos com o mesmo nome, os dois so finalizados. Seguindo o exemplo do comando kill: $psaux|grepnetscape pres24610.00.016360tty1SW07:090:00[netscape] $killall9netscape

Dicas Bsicas
Para saber informaes da mquina onde voc esta trabalhando, basta ver o arquivo /proc/cpuinfo, e para verificar a memria do seu sistema, observe o arquivo /proc/meminfo. $cat/proc/cpuinfo|grepmodelname modelname:AMDAthlon(TM)XP1700+ $cat/proc/meminfo|grepMemTotal MemTotal:514716kB O comando grep foi concatenado apenas para no mostrar a sada inteira do arquivo. As vezes, interessante que alguns comandos tenham na sua chamada um valor diferente do padro, imagine que toda vez que vamos deletar um arquivo, temos que colocar -i para ele sempre pedir a confirmao dos arquivos a serem deletados. Para isso podemos definir as chamadas padro dos comandos da shell editando o arquivo ./bashrc. $emacs.bashrc E inclua a linha a seguir no arquivo. aliasrm=rmi

Outros tipos de comandos


Descompactar arquivos Extenso .tar.gz Extenso .tar Extenso .zip tar zxpvf arquivo.tar.gz tar xpvf arquivo.tar unzip arquivo.zip

Compactar arquivos Empacotar um diretrio em .tar Empacotar um diretrio em .tar.gz Empacotar um diretrio em .zip tar cvf diretorio/ tar zcvf diretorio/ zip -r

[arquivo-destino].zip [diretrio-origem]

Espao em disco df -h du -hs Mostra o espao em disco das parties montadas Mostra o espao ocupado pelo diretrio atual

Informaes do sistema date uptime free top Mostra a data e hora atual Mostra quanto tempo seu sistema est rodando Exibe a memria livre, a usada, e os buffers da memria RAM Mostra os processos que mais gastam memria

Programas (console) vi emacs links Editor de texto Editor de texto Navegador Web

Bibliografias consultadas
BOAVENTURA, Frederico Freire. GNU/Linux. Disponvel em: <http://galahad.com.br/lnx/index.php>. Acesso em: 04 mar. 2007. CISNEIROS, Hugo. Pgina do Eitch. Disponvel em: <http://www.devin.com.br/eitch/>. Acesso em: 04 mar. 2007. KLIMAS, Stan; KLIMAS, Peter; KLIMAS, Marrei. LINUX NEWBIE ADMINISTRATOR GUIDE. Disponvel em: <http://www.onlinux.com.br/dicas/lnag/Linux_help.htm>. Acesso em: 03 mar. 2007. MITRE, J. F.. .bashrc. Disponvel em: <http://www.vivaolinux.com.br/conf/verConf.php?codigo=341>. Acesso em: 03 mar. 2007. SHELL(2) Disponvel em: <http://www.istf.com.br/vb/archive/index.php?t-5484.html>. Acesso em: 03 mar. 2007. SILVA, Gleydson Mazioli da. Guia Foca GNU/Linux Intermedirio. Disponvel em: <http://www.htmlstaff.org/guiafoca/intermediario/>. Acesso em: 04 mar. 2007. WIKIPDIA Disponvel em: <http://pt.wikipedia.org/wiki/>. Acesso em: 15 fev. 2007.

Você também pode gostar