Sei sulla pagina 1di 83

SISTEMAS EMBARCADOS

Introduo ao Desenvolvimento com Linux

Autores: Edson Mintsu Hun Evandro Leonardo Teixeira Tia o Alves da !onseca

"niversidade de Bras#lia !aculdade do $ama Curso de En en%aria Eletr&nica

SISTEMAS EMBARCADOS
Contedo:
1. Metodologia/Filosofia de desenvolvimento com o Linux/UNIX 2. Licen as de soft!are livre "#$L e L#$L% &. 'omandos ()sicos do Linux *. +rgani,a -o da estrutura de diret.rios /. +(tendo informa 0es so(re o sistema 1. Instala -o de 2rogramas 3. Ferramentas de desenvolvimento em linguagem ' 4. 5i(liografia

'( Metodolo ia)!iloso*ia de desenvolvimento com Linux)"+I,


A2esar da 2rograma -o em ' ser (astante 2arecida inde2endentemente das 2lataformas6 7 fato 8ue os desenvolvedores Linux/UNIX 2ossuem uma vis-o es2ecial de 2rograma -o e desenvolvimento de sistemas. + sistema o2eracional UNIX encora9a um certo ti2o de estilo de 2rograma -o. :egue algumas caracter;sticas <erdadas 2or 2rogramas e sistemas UNIX t;2icos. =1>

Sim-licidade
Muitas das mais ?teis ferramentas Linux s-o muito sim2les e6 como resultado6 2e8uenos e f)ceis de entender. @I:: "@ee2 It :mall ans :im2le% 7 uma (oa t7cnica a se a2render. :istemas maiores e mais com2lexos s-o susce2t;veis a (ugs maiores e mais com2lexos e a de2ura -o 7 uma tarefa 8ue 8ueremos evitar ao m)ximo.

!oco
A muito interessante garantir 8ue um 2rograma execute uma tarefa com 2erfei -o. Um 2rograma res2os)vel 2or uma gama de tarefas 7 dif;cil de usar e manter. $rogramas de 2ro2.sito ?nico s-o f)ceis de mel<orar B medida 8ue mel<ores algoritmos e interfaces forem sendo desenvolvidos. No Linux6 2e8uenas ferramentas s-o fre8Centemente com(inadas 2ara reali,ar tarefas mais com2lexas 8uando as necessidades a2arecem em ve, de tentar anteci2ar as necessidades dos usu)rios em um 2rograma grande e com2lexo.

Com-onentes Reus.veis
Dorne o n?cleo da sua a2lica -o dis2on;vel como (i(ioteca. 5i(liotecas (em documentadas com interfaces de 2rograma -o sim2les mas flex;veis 2odem a9udar outros a desenvolver varia 0es ou a2licar suas t7cnicas em novas )reas.

!iltros
Muitas a2lica 0es Linux 2odem ser usadas como filtros. +u se9a6 elas tranformam a sua entrada e 2rodu,em sa;da. 'omo veremos6 o Linux dis2oni(ili,a recursos 8ue 2ermitem 8ue a2lica 0es com2lexas se9am desenvolvidas 2or outros 2rogramas Linux com(inandoEos de maneiras novas e n-o usuais.

!ormatos de ar/uivos a0ertos


+s 2rogramas de sucesso do Linux usam ar8uivos de configura -o e de dados 8ue s-o codificados em texto A:'II 2uro. :e essa for uma o2 -o 2ara seu 2ro9eto6 ser) uma escol<a sensata acol<FEla. Isso 2ermite aos usu)rios usar ferramentas 2adr0es 2ara mudar e (uscar itens de configura -o e desenvolver novas ferramentas 8ue executem novas tarefas em ar8uivos de dados.

!lexi0ilidade
GocF n-o 2oder) anteci2ar exatamente como o seu usu)rio ir) a2licar o seu 2rograma. Dente ser o mais flex;vel o 2oss;vel na sua 2rograma -o. Dente evitar limites nos taman<os dos cam2os ou no n?mero de registros. :e vocF 2uder6 escreva o 2rograma 2ara um am(iente em rede de forma 8ue 2ossa ser executado via rede (em como em uma m)8uina local. Nunca assuma 8ue vocF sa(e tudo 8ue o usu)rio 2retender) fa,er com o seu 2rograma.

1( Licenas de so*t2are livre 3L$4L e $4L5


Antes eventuais ex2lica 0es so(re o 8ue 7 o Linux6 7 2reciso sa(er o 8ue o motivou. As su(se 0es a seguir a2resentar-o o conceito de soft!are livre6 as suas licen as e como o Linux se encaixa nesse 2anorama.

O /ue 6 so*t2are livre7 Dirado de <tt2://!!!.gnu.org/2<iloso2<H/freeEs!.2t.<tml


N.s mantemos esta defini -o do :oft!are Livre 2ara mostrar claramente o 8ue deve ser verdadeiro B res2eito de um dado 2rograma de soft!are 2ara 8ue ele se9a considerado soft!are livre. I:oft!are LivreI 7 uma 8uest-o de li(erdade6 n-o de 2re o. $ara entender o conceito6 vocF deve 2ensar em Ili(erdade de ex2ress-oI6 n-o em Icerve9a gr)tisI. I:oft!are livreI se refere B li(erdade dos usu)rios executarem6 co2iarem6 distri(u;rem6 estudarem6 modificarem e a2erfei oarem o soft!are. Mais 2recisamente6 ele se refere a 8uatro ti2os de li(erdade6 2ara os usu)rios do soft!are:

A li(erdade de executar o 2rograma6 2ara 8ual8uer 2ro2.sito "li(erdade no. J% A li(erdade de estudar como o 2rograma funciona6 e ada2t)Elo 2ara as suas necessidades "li(erdade no. 1%. Acesso ao c.digoEfonte 7 um 2r7Ere8uisito 2ara esta li(erdade. A li(erdade de redistri(uir c.2ias de modo 8ue vocF 2ossa a9udar ao seu 2r.ximo "li(erdade no. 2%. A li(erdade de a2erfei oar o 2rograma6 e li(erar os seus a2erfei oamentos6 de modo 8ue toda a comunidade se (eneficie "li(erdade no. &%. Acesso ao c.digoE fonte 7 um 2r7Ere8uisito 2ara esta li(erdade.

Um 2rograma 7 soft!are livre se os usu)rios tem todas essas li(erdades. $ortanto6 vocF deve ser livre 2ara redistri(uir c.2ias6 se9a com ou sem modifica 0es6 se9a de gra a ou co(rando uma taxa 2ela distri(ui -o6 2ara 8ual8uer um em 8ual8uer lugar. :er livre 2ara fa,er essas coisas significa "entre outras coisas% 8ue vocF n-o tem 8ue 2edir ou 2agar 2ela 2ermiss-o. GocF deve tam(7m ter a li(erdade de fa,er modifica 0es e us)Elas 2rivativamente no seu tra(al<o ou la,er6 sem nem mesmo mencionar 8ue elas existem. :e vocF 2u(licar as modifica 0es6 vocF n-o deve ser o(rigado a avisar a ningu7m em 2articular6 ou de nen<um modo em es2ecial. A li(erdade de utili,ar um 2rograma significa a li(erdade 2ara 8ual8uer ti2o de 2essoa f;sica ou 9ur;dica utili,ar o soft!are em 8ual8uer ti2o de sistema com2utacional6 2ara 8ual8uer ti2o de tra(al<o ou atividade6 sem 8ue se9a necess)rio comunicar ao desenvolvedor ou a 8ual8uer outra entidade em es2ecial. A li(erdade de redistri(uir c.2ias deve incluir formas (in)rias ou execut)veis do 2rograma6 assim como o c.digoEfonte6 tanto 2ara as vers0es originais 8uanto 2ara as modificadas. Kst) oL se n-o for 2oss;vel 2rodu,ir uma forma (in)ria ou execut)vel "2ois algumas linguagens de 2rograma -o n-o su2ortam este recurso%6 mas deve ser concedida a li(erdade de redistri(uir essas formas caso se9a desenvolvido um meio de criaElas.

Me modo 8ue a li(erdade de fa,er modifica 0es6 e de 2u(licar vers0es a2erfei oadas6 ten<a algum significado6 deveEse ter acesso ao c.digoEfonte do 2rograma. $ortanto6 acesso ao c.digoEfonte 7 uma condi -o necess)ria ao soft!are livre. $ara 8ue essas li(erdades se9am reais6 elas tem 8ue ser irrevog)veis desde 8ue vocF n-o fa a nada erradoN caso o desenvolvedor do soft!are ten<a o 2oder de revogar a licen a6 mesmo 8ue vocF n-o ten<a dado motivo6 o soft!are n-o 7 livre. Kntretanto6 certos ti2os de regras so(re a maneira de distri(uir soft!are livre s-o aceit)veis6 8uando elas n-o entram em conflito com as li(erdades 2rinci2ais. $or exem2lo6 co2Hleft "a2resentado de forma (em sim2les% 7 a regra de 8ue6 8uando redistri(uindo um 2rograma6 vocF n-o 2ode adicionar restri 0es 2ara negar 2ara outras 2essoas as li(erdades 2rinci2ais. Ksta regra n-o entra em conflito com as li(erdadesN na verdade6 ela as 2rotege. $ortanto6 vocF 2ode ter 2ago 2ara rece(er c.2ias do soft!are #NU6 ou vocF 2ode ter o(tido c.2ias sem nen<um custo. Mas inde2endente de como vocF o(teve a sua c.2ia6 vocF sem2re tem a li(erdade de co2iar e modificar o soft!are6 ou mesmo de vender c.2ias I:oft!are LivreI N-o significa In-oEcomercialI. Um 2rograma livre deve estar dis2on;vel 2ara uso comercial6 desenvolvimento comercial6 e distri(ui -o comercial. + desenvolvimento comercial de soft!are livre n-o 7 incomumN tais soft!ares livres comerciais s-o muito im2ortantes. Oegras so(re como em2acotar uma vers-o modificada s-o aceit)veis6 se elas n-o aca(am (lo8ueando a sua li(erdade de li(erar vers0es modificadas. Oegras como Ise vocF tornou o 2rograma dis2on;vel deste modo6 vocF tam(7m tem 8ue torn)Elo dis2on;vel deste outro modoI tam(7m 2odem ser aceitas6 da mesma forma. "Note 8ue tal regra ainda deixa 2ara vocF a escol<a de tornar o 2rograma dis2on;vel ou n-o.% Dam(7m 7 aceit)vel uma licen a 8ue exi9a 8ue6 caso vocF ten<a distri(u;do uma vers-o modificada e um desenvolvedor anterior 2e a 2or uma c.2ia dele6 vocF deva enviar uma. No 2ro9eto #NU6 n.s usamos copyleft 2ara 2roteger estas li(erdades legalmente 2ara todos. Mas tam(7m existe soft!are livre 8ue n-o 7 copyleft. N.s acreditamos 8ue <a9am ra,0es im2ortantes 2elas 8uais 7 mel<or usar o copyleft6 mas se o seu 2rograma 7 freeEsoft!are mas n-o 7 co2Hleft6 n.s ainda 2odemos utili,)Elo. Ps ve,es regras de controle de ex2orta -o e sans0es de com7rcio 2odem limitar a sua li(erdade de distri(uir c.2ias de 2rogramas internacionalmente. Mesenvolvedores de soft!are n-o tem o 2oder 2ara eliminar ou so(re2or estas restri 0es6 mas o 8ue eles 2odem e devem fa,er 7 se recusar a im2QElas como condi 0es 2ara o uso dos seus 2rogramas. Meste modo6 as restri 0es n-o afetam as atividades e as 2essoas fora da 9urisdi -o destes governos. Ruando falando so(re o soft!are livre6 7 mel<or evitar o uso de termos como IdadoI ou Ide gra aI6 2or8ue estes termos im2licam 8ue a 8uest-o 7 de 2re o6 n-o de li(erdade. Alguns temos comuns como I2iratariaI englo(am o2ini0es 8ue n.s es2eramos vocF n-o ir) endossar. Finalmente6 note 8ue crit7rios como os esta(elecidos nesta defini -o do soft!are livre re8uerem cuidadosa deli(era -o 8uanto B sua inter2reta -o. $ara decidir se uma licen a se 8ualifica como de soft!are livre6 n.s a 9ulgamos (aseados nestes crit7rios 2ara determinar se ela se segue o nosso es2;rito assim como as 2alavras exatas. :e uma licen a inclui restri 0es im2ensadas6 n.s a re9eitamos6 mesmo 8ue n.s n-o ten<amos anteci2ado a 8uest-o nestes crit7rios. Ps ve,es um re8uerimento de alguma licen a levanta uma 8uest-o 8ue re8uer excessiva deli(era -o6 incluindo discuss0es com advogados6 antes 8ue n.s 2ossamos decidir se o re8uerimento 7 aceit)vel. Ruando n.s c<egamos a uma conclus-o so(re uma nova 8uest-o6 n.s fre8uentemente

atuali,amos estes crit7rios 2ara tornar mais f)cil determinar 2or8ue certas licen as se 8ualificam ou n-o.

O /ue 6 $4L7
$+" $eneral 4u0lic License "Licen a $?(lica #eral%6 $+" $4L ou sim2lesmente $4L6 7 a designa -o da licen a 2ara soft!are livre ideali,ada 2or Oic<ard :tallman no final da d7cada de 1S4J6 no Tm(ito do 2ro9eto #NU da Free :oft!are Foundation. A #$L 7 a licen a com maior utili,a -o 2or 2arte de 2ro9etos de soft!are livre6 em grande 2arte devido B sua ado -o 2ara o Linux. Km termos gerais6 a #$L (aseiaEse em * li(erdades:

1. A li(erdade de executar o 2rograma6 2ara 8ual8uer 2ro2.sito "li(erdade nU J% 2. A &. A *. A


li(erdade de estudar como o 2rograma funciona e ada2t)Elo 2ara as suas necessidades "li(erdade nU 1%. + acesso ao c.digoEfonte 7 um 2r7Ere8uisito 2ara esta li(erdade. li(erdade de redistri(uir c.2ias de modo 8ue vocF 2ossa a9udar ao seu 2r.ximo "li(erdade nU 2%. li(erdade de a2erfei oar o 2rograma6 e li(erar os seus a2erfei oamentos6 de modo 8ue toda a comunidade (eneficie deles "li(erdade nU &%. + acesso ao c.digoEfonte 7 um 2r7Ere8uisito 2ara esta li(erdade.

'om a garantia destas li(erdades6 a #$L 2ermite 8ue os 2rogramas se9am distri(u;dos e rea2roveitados6 mantendo6 2or7m6 os direitos do autor 2or forma a n-o 2ermitir 8ue essa informa -o se9a usada de uma maneira 8ue limite as li(erdades originais. A licen a n-o 2ermite6 2or exem2lo6 8ue o c.digo se9a a2oderado 2or outra 2essoa6 ou 8ue se9am im2ostos so(re ele restri 0es 8ue im2e am 8ue se9a distri(u;do da mesma maneira 8ue foi ad8uirido. A #$L est) redigida em inglFs e atualmente nen<uma tradu -o 7 aceita como v)lida 2ela F:F6 com o argumento de 8ue <) o risco de introdu -o de erros de tradu -o 8ue 2oderiam detur2ar o sentido da licen a. Meste modo6 8ual8uer tradu -o da #$L 7 n-oE oficial e meramente informativa6 mantendoEse a o(rigatoriedade de distri(uir o texto oficial em inglFs com os 2rogramas. A licen a #$L foi originalmente 2u(licada em Vaneiro de 1S4S. No entanto6 2assado 2ouco tem2o6 ficou claro 8ue o texto da licen a com2ortava v)rios 2ro(lemas6 2elo 8ue em Vun<o de 1SS1 foi 2u(licada a #$L vers-o 26 sendo ao mesmo tem2o introdu,ida uma nova licen a L#$L. Km 2JJ/6 :tallman anunciou 8ue estava 2re2ararando uma nova vers-o da licen a em con9unto com K(en Moglen. Kssa nova vers-o6 foi c<amada de #$Lv& e o 2rimeiro es(o o foi 2u(licado em 11 de Vaneiro de 2JJ1.

O /ue 6 L$4L7
A #NU Lesser #eneral $u(lic License "antes con<ecida como #NU Li(rarH #eneral $u(lic License% 7 uma licen a de soft!are livre a2rovada 2ela F:F escrita com o intuito de ser um meioEtermo entre a #$L e licen as mais 2ermissivas como a licen a 5:M e a licen a MID. Kla foi escrita em 1SS1 "e atuali,ada em 1SSS% 2or Oic<ard :tallman e K(en Moglen.

A 2rinci2al diferen a entre a #$L e a L#$L 7 8ue esta 2ermite ser ligada com 2rogramas 8ue n-o se9am #$L ou L#$L6 8ue 2odem ser soft!are livre ou soft!are 2ro2riet)rio6 ou se9a6 2ermite o desenvolvimento de 2rogramas de c.digo a(erto 8ue conten<am m.dulos 2ro2riet)rios. Na #$L ItradicionalI todo o c.digo do 2rograma 7 a(erto6 isso atende (em B maioria dos 2ro9etos cola(orativos. + 2ro(lema 7 8ue muitas em2resas 2ossuem segredos a guardar6 o 8ue as im2ede de sim2lesmente a(rir totalmente o c.digo de seus 2rogramas. A L#$L funciona mel<or nestes casos6 2ois 2ermite 8ue vocF desenvolva 2rogramas IsemiEa(ertosI onde 2arte do c.digo do 2rograma est) dis2on;vel e o restante das fun 0es 7 2ro2orcionada 2or alguns (in)rios 8ue n-o 2ossuem seu c.digo a(erto6 estes (in)rios linLados no 2rograma no momento da com2ila -o6 de uma forma an)loga Bs MLLWs do Xindo!s. Imagine 8ue vocF ten<a uma em2resa 8ue desenvolve um 2rocessador de textos no estilo do Xord. Me2ois de algumas noites sem dormir vocF desenvolve um m.dulo revolucion)rio 8ue 7 ca2a, de a(rir e salvar 8ual8uer ti2o de ar8uivo do +ffice sem fal<as. Isso sem d?vida 7 um grande diferencial 2ara o seu 2roduto e 2or isso vocF resolve n-o a(rir o c.digo fonte6 afinal vocF desenvolveu o soft!are so,in<o e 2ode decidir o 8ue fa,er com ele. A L#$L funcionaria (em no seu caso6 2ois vocF 2oderia a(rir o c.digo do seu editor de textos 2ara 8ue outras 2essoas 2ossam contri(uir com mel<orias e corre 0es6 mas manter 2ro2riet)rio o m.dulo 8ue lF ar8uivos do +ffice6 o grande diferencial 8ue faria as 2essoas com2rarem o editor ao inv7s de sim2lesmente instalar a 2artir do c.digo fonte. Me fato6 :tallman e a F:F Bs ve,es defendem licen as at7 menos restritivas 8ue a L#$L como 8uest-o de estrat7gia "2ara maximi,ar a li(erdade de usu)rios%. Um exem2lo 2roeminente foi o endosso de :tallman do uso de uma licen a 5:M 2elo 2ro9eto Gor(is 2ara suas (i(liotecas.

O /ue 6 Linux7
+ Linux 7 uma variante Yfree soft!areZ do Unix. Foi criado 2or um 9ovem universit)rio finlandFs c<amado Linus Dorvalds6 no in;cios dos anos 1SSJ6 e de l) 2ara c) tornouEse o segundo sistema o2eracional mais utili,ado no mundo6 atr)s a2enas do Microsoft Xindo!s. A6 <o9e6 o sistema o2eracional cu9a (ase instalada mais cresce6 2rinci2almente no meio acadFmico e no am(iente cor2orativo6 onde6 devido a seu (aixo custo "aliado ao alto desem2en<o e B confia(ilidade t;2icos dos sistemas UnixE liLe%6 tem merecido cada ve, mais a aten -o dos de2artamentos de DI. =2> + Linux est) dis2on;vel so(re a forma de v)rias distri(ui 0es "Fedora6 Mandriva6 :U:K6 Me(ian6 @no22ix6 :lacL!are etc6% cada 8ual com o seu 2r.2rio con9unto de utilit)rios.

Onde temos Linux7


5em6 conscientemente ou n-o6 vocF 2rovavelmente es(arra com o Linux todos os dias. Ruando vocF com2ra um livro na Ama,on.com ou (usca na Xe( com o #oogle6 vocF usa o Linux. As anima 0es vistas em :<reL 2 foram criadas 2or centenas de esta 0es Linux e renderi,adas 2or uma server farm de centenas de outros sistemas Linux.

Entendendo o Linux
Linux6 um sistema o2eracional com2leto6 7 uma es27cie de clone livre do sistema o2eracional UNIX. Iniciar um com2utador com o Linux fa, com 8ue ele tome o controle da o2era -o do $' e gerencie os seguintes recursos: =2>

$rocessador: $elo fato de o Linux 2oder rodar muitos 2rocessos de diferentes usu)rios ao mesmo tem2o "at7 mesmo com m?lti2las '$Us na mesma m)8uina%6 Linux tem 8ue ser ca2a, de gerenciar esses 2rocessos. + scheduler do Linux a9usta as 2rioridades das tarefas e gerencia 8ue 2rocessos rodam em 8uais '$Us "se m?lti2los 2rocessadores est-o 2resentes%. + scheduler 2ode ser a9ustado diferentemente 2ara diferentes ti2os de sistemas Linux. Ruando a9ustado devidamente6 os 2rocessos mais im2ortantes o(tFm res2ostas mais r)2idas do 2rocessador. Mem.ria: + Linux tenta manter os 2rocessos com suas res2ectivas demandas de mem.ria OAM sanadas e gerencia os 2rocessos 8ue demandam muita mem.ria sanando esse consumo excessivo 2or meio do uso do es2a o de troca " swap space%. + es2a o de troca 7 uma )rea definida em seu disco r;gido 8ue 7 usada 2ara gerenciar a demanda crescente de mem.ria dos 2rocessos e dados. Ruando a OAM est) c<eia6 os 2rocessos s-o 2ostos no es2a o de troca. Ruando o es2a o de troca fica c<eio "algo indese9)vel%6 novos 2rocessos n-o 2odem ser iniciados. Mis2ositivos: + Linux su2orta mil<ares de dis2ositivos de hardware mas mant7m o kernel em um taman<o gerenci)vel 2ela inclus-o de um 2e8ueno con9unto de drivers no kernel ativo. Usando m.dulos carreg)veis6 o kernel 2ode adicionar o su2orte 2ara outros hardwares sem2re 8ue necess)rio. M.dulos 2odem ser inseridos e removidos so(re demanda6 da mesma forma 8ue os hardware s-o inseridos e removidos. :istema de ar8uivos: +s sistemas de ar8uivos 2ro2orcionam a estrutura so(re a 8ual os ar8uivos s-o arma,enados no disco r;gido6 'M6 MGM6 disco flex;vel ou outros meios de arma,enamento. + Linux con<ece diferentes ti2os de sistemas de ar8uivos "como Linux ext&6 reiserfs6 GFAD e NDF: dos sistemas Xindo!s% e sa(e como gerenci)Elos. :eguran a: 'omo o UNIX6 o Linux foi constru;do numa 2ers2ectiva de (aixo 2ara cima 2ara 2ermitir 8ue m?lti2los usu)rios acessem o sistema simultaneamente. $ara 2roteger os recursos de cada usu)rio6 a cada ar8uivo6 diret.rio ou a2lica -o "2rograma% 7 associado um con9unto de 2ermiss0es de leitura6 escrita e execu -o 8ue definem 8uem 2oder) acess)Elo. No sistema Linux 2adr-o6 o usu)rio root 2ode ter acesso ao sistema inteiro6 alguns logins es2eciais tFm acesso 2ara controlar servi os 2articulares "como o A2ac<e 2ara servi os Xe(% e as 2ermiss0es 2odem atingir usu)rios individualmente ou gru2os.

+ 8ue foi descrito acima s-o com2onentes 8ue constituem a8uilo 8ue se convencionou c<amar de kernel do Linux. Me fato6 o kernel do Linux "8ue foi criado e ainda 7 mantido 2or Linus Dorvalds% 7 o 8ue d) ao Linux o seu nome. + kernel 7 o 2rograma 8ue inicia 8uando vocF liga o com2utador e gerencia os 2rogramas 8ue vocF usa de maneira 8ue eles 2ossam se comunicar sim2les e eficientemente com o hardware do seu com2utador. +utros com2onentes6 como comandos administrativos e a2lica 0es6 s-o adicionados ao kernel a 2artir de outros 2ro9etos de software livre6 tornando o Linux um sistema o2eracional com2leto. + 2ro9eto #NU6 2articularmente6 contri(uiu 2ara muitos com2onentes 8ue agora fa,em 2arte do Linux. Ksses 2ro9etos adicionaram outras caracter;sticas como:

Interfaces gr)ficas com o usu)rio "#UIs%: 'onsiste de um framework gr)fico

"ti2icamente o X Xindo!s :Hstem%6 gerenciadores de 9anelas6 2ain7is6 ;cones e menus. #UIs 2ermitem 8ue vocF use o Linux usando a com(ina -o teclado e mouse em ve, de sim2lesmente digitar comandos.

Utilit)rios Administrativos: Incluem centenas "talve, mil<ares% de comandos e 9anelas gr)ficas 8ue 2ermitem executar tarefas como adicionar usu)rios6 gerenciar discos6 monitorar a rede6 instalar software e tornar seguro e gerenciar o seu com2utador. A2lica 0es: Km(ora nen<uma distri(ui -o Linux inclua todas as a2lica 0es existentes6 existem mil<ares de 9ogos6 ferramentas de 2rodutividade6 navegadores da Xe(6 (ateE2a2o6 re2rodutores de m;dia e outros 2rogramas dis2on;veis 2ara Linux. Ferramentas de 2rograma -o: Inclui ferramentas de 2rograma -o 2ara criar a2lica 0es e (i(liotecas 2ara im2lementar interfaces es2eciali,adas. :ervidores: $ermite 8ue vocF ofere a servi os a 2artir de seu com2utador Linux 2ara outros com2utadores na mesma rede. Km outras 2alavras6 en8uanto o Linux inclui navegadores da Xe( 2ara visuali,a -o de 2)ginas6 ele tam(7m 2ode ser o 2r.2rio com2utador 8ue <os2eda 2)ginas da Internet. :ervidores 2o2ulares s-o o de Xe(6 email6 (anco de dados6 im2ress-o6 ar8uivo6 MN: e M['$.

O /ue *a8 o Linux to atrativo7


:e vocF nunca usou Linux anteriormente6 7 normal es2erar 8ue certas coisas se9am diferentes de outros sistemas o2eracionais. A(aixo segue uma (reve lista de algumas caracter;sticas 8ue fa,em o Linux t-o interessante.

N-o re8uer reiniciali,a -o do com2utador 2ara instala 0es: + uptime "tem2o de execu -o ininterru2to% 7 uma 8uest-o de orgul<o e <onra "lem(reEse6 Linux e outros sistemas UNIX s-o fre8Centemente usados como servidores e es2eraEse 8ue esses funcionem 2* <oras 2or dia e sete dias 2or semana%. Me2ois da instala -o original6 vocF 2ode instalar ou remover a maioria dos software sem 2recisar reiniciar seu com2utador. Iniciali,a e interrom2e servi os sem interrom2er outros: GocF 2ode iniciali,ar e interrom2er servi os individualmente "como servi os de !e(6 servidores de ar8uivo e de email% sem 2recisar reiniciali,ar o com2utador ou mesmo interrom2er o tra(al<o de outros usu)rios ou desa(ilitar outras funcionalidades do com2utador. Km outras 2alavras6 vocF n-o 2recisa reiniciali,ar o com2utador cada ve, 8ue algu7m Yes2irraZ\ :oft!are $ort)vel: GocF 2ode mudar 2ara outro Linux6 UNIX ou 5:M e usar o mesmo soft!are. A maioria dos 2ro9etos de o2en source foram criados 2ara rodar em 8ual8uer sistema UNIXEliLe e muitos 2odem at7 mesmo rodar em sistemas Xindo!s se necess)rio. K mesmo se isso n-o for 2oss;vel 2ara dado software6 7 2rov)vel 8ue algu7m da comunidade Linux este9a em2en<ado em fa,FElo. Mo!nload de 2rogramas: :e as a2lica 0es 8ue vocF 2recisa n-o foram entregues com a sua vers-o do Linux6 vocF 2ode fre8Centemente (aix)Elas e instal)Elas em com um comando sim2les6 usando ferramentas como Hum e a2t. Nen<uma configura -o 7 oculta em c.digos ou registros: Uma ve, 8ue o usu)rio fi8ue familiari,ado com o estilo do Linux6 ver) 8ue "res2eitando as 2ermiss0es do com2utador% a maioria das configura 0es s-o feitas em ar8uivos de texto 2uro 8ue s-o f)ceis de locali,ar e modificar.

MesLto2 maduro: + X Xindo!s :Hstem "8ue 2ro2orciona o framework 2ara sua esta -o de tra(al<o Linux% 9) existe <) mais tem2o 8ue o Microsoft Xindo!s. + am(ientes de tra(al<o @MK e #N+MK dis2oni(ili,am interfaces gr)ficas "9anelas6 menus6 ;cones6 etc.% 8ue com2etem com o Microsoft Xindo!s. +s 2ro(lemas de amiga(ilidade em rela -o ao usu)rio est-o sendo sanados ra2idamente. Li(erdade: Linux6 na sua forma mais ()sica6 n-o 2ossui uma agenda cor2orativa ou lin<a a seguir. GocF 7 livre 2ara escol<er a distri(ui -o de Linux mais conveniente6 ol<ar o c.digo fonte 8ue com20e o sistema 8ue est) em execu -o6 adicionar e remover 8ual8uer software 8ue vocF 8ueira e fa,er com 8ue o com2utador a9a da maneira 8ue vocF dese9a.

Algums as2ectos do Linux 2odem 2arecer dif;ceis 2ara novos usu)rios. Um as2ecto 7 8ue ele foi feito 2ara ser seguro 2or 2adr-o6 ent-o fa,Ese necess)rio se acostumar a usar uma conta administrativa " root% 2ara 2oder fa,er as mudan as 8ue afetam todo o sistema com2utacional. Isso 2ode 2arecer incoveniente numa 2rimeira ol<ada6 mas isso fa, com 8ue o com2utador se9a mais seguro do 8ue 2ermitir 8ue 8ual8uer um fa a o 8ue 8uiser no mesmo.

Encontrando in*orma9es no Linux


'ada nova distri(ui -o do Linux vem com uma 8uantidade enorma de documenta -o. GocF 2ode a2render tudo so(re o 8ue ser) tratado nesse curso 2or meio da leitura da documenta -o 8ue acom2an<a a sua distri(ui -o Linux. A documenta -o nem sem2re 7 (em organi,ada6 2ortanto a 2arte mais com2licada 7 encontrar o 8ue vocF realmente 2recisa. Ps ve,es a documenta -o est) desatuali,ada6 2ortanto leia tudo com (astante cautela. :e o seu sistema se com2orta de maneira diferente do 8ue 7 mostrado nas man 2ages6 2ode ser 8ue suas man 2ages este9am desatuali,adas. A maioria das distri(ui 0es do Linux incluem man 2ages 2ara a maioria dos comandos 2adr0es6 c<amadas de sistema e fun 0es de (i(liotecas 2adr-o. As man 2ages s-o divididas em se 0es numeradasN 2ara 2rogramadores6 as mais im2ortantes s-o: "1% 'omandos de usu)rio "2% '<amadas de sistema "&% Fun 0es de (i(liotecas 2adr-o "4% 'omandos do sistema/administrativos +s n?meros indicam as se 0es das man 2ages. As man 2ages do Linux vem geralmente instaladas no sistemaN use o comando man 2ara acess)Elas. $ara ol<ar em uma 2)gina man6 sim2lesmente c<ame man name6 onde name 7 o nome do comando ou fun -o. Km alguns casos6 o mesmo nome ocorre em mais de uma se -oN vocF 2ode es2ecificar a se -o 2ela indica -o ex2l;cita do n?mero da mesma antes de name. $or exem2lo6 se vocF digitar o seguinte6 vocF ter) a man 2age do comando slee2:

$ man sleep $ara ver o 8ue a 2)gina da fun -o de (i(lioteca mostra6 use:

$ man 3 sleep

'ada man 2age inclui um sum)rio online do comando ou fun -o. + comando !<atis name mostra todas as man 2ages "de todas as se 0es% 2ara um comando ou fun -o com name. :e vocF n-o tiver certe,a do comando ou fun -o 8ue vocF dese9a6 vocF 2ode fa,er uma (usca 2or 2alavra nas lin<a de sum)rio6 usando man EL LeH!ord. Man 2ages condensam uma 8uantidade enorme de informa 0es e deve ser o 2rimeiro lugar a ser vascul<ado na 2rocura 2or informa 0es. A man 2age 2ara um comando descreve as o2 0es do mesmo e seus argumentos6 entradas e sa;das6 c.digos de erro6 configura -o etc. A man 2age de uma c<amada de sistema ou fun -o de (i(lioteca descreve os 2arTmetros e valores de retorno6 listas de c.digos de erro6 efeitos colaterais e es2ecifica 8ue include deve ser 2osto caso vocF dese9e usar a fun -o.

:( Comandos 0.sicos do Linux


As interfaces gr)ficas de usu)rio6 como o @MK e o #nome6 mesmo tendo evolu;do muito nos ?ltimos anos e contri(u;do inegavelmente 2ara a 2o2ulari,a -o do Linux6 n-o diminu;ram a im2ortTncia da lin<a de comando 2ara os usu)rios deste sistema o2eracional. + Linux6 como t;2ico sistema UnixEliLe6 oferece um vasto con9unto de comandos6 con9unto 8ue cresce a cada dia. Al7m disso6 esse mesmo con9unto 2ode rece(er dinamicamente nossas 2r.2rias contri(ui 0es 2ara a solu -o de 2ro(lemas. =2> As trFs 2rinci2ais ra,0es 2ara a2render como usar o s<ell s-o:

GocF sa(er) como usar 8ual8uer Linux ou outro sistema o2eracional derivado do UNIX. $or exerm2lo6 vocF 2ode logar em um servidor MH:RL6 um fire!all ou roteador em(arcado ou um iMA' e sa(er usar esses outros sistemas a 2artir do s<ell. 'aracter;sticas fundamentais do s<ell 2ermite com 8ue vocF col<a dados de entrada e direcione a sa;da dos dados entre os comandos do sistema Linux. $ara economi,ar a digita -o6 vocF 2ode encontrar6 editar e re2etir os comandos do <ist.rico do s<ell. Muitos usu)rios ex2erientes 2rescindem da interface gr)fica6 fa,endo a maioria das sua atividades 2elo s<ell. GocF 2ode condensar comandos em um ar8uivo usando 2rograma -o estruturada como la os e estruturas de decis-o 2ara reali,ar o2era 0es com2lexas 8ue exigiriam redigita 0es infind)veis. $rogramas 8ue consistem de comandos 8ue s-o arma,enados e executados a 2artir de um ar8uivo s-o c<amados de shell scri2ts. A maioria dos administradores de sistema Linux usam scri2ts 2ara automati,ar tarefas como (acLu2s6 monitoramento dos ar8uivos de log ou c<ecagem da sanidade do sistema.

+ s<ell 7 um inter2retador da lin<a de comando. :e vocF usou os sistemas o2eracionais da Microsoft6 vocF 2ode ver 8ue usar o s<ell no Linux 7 semel<ante a ] mas geralmente mais 2oderoso do 8ue ] o inter2retador usado 2ara rodar comandos no M+:. GocF 2ode sim2lemente usar o Linux a 2artir da interface gr)fica mas6 B medida 8ue vocF a2rende o Linux6 vocF certamente 2recisar) usar o s<ell em algum momento 2ara rastrear um 2ro(lema. =2>

Escol%endo o seu s%ell


Na maioria dos sistemas Linux6 o s<ell 2adr-o 7 o (as<. $ara desco(rir 8ual o s<ell vocF est) executando6 sim2lesmente digite:

$echo $SHELL /bin/bash Nesse exem2lo6 Ws<ell 7 o (as<. [) uma variedade de s<ells e vocF 2ode ativ)Elos digitando o nome do s<ell dese9ado na 2r.2ria lin<a de comando "Ls<6 tcs<6 cs<6 s<6 (as< etc.%

"sando o 0as%
+ (as< inclui caracter;sticas 8ue foram originalmente desenvolvidas 2elos s<ells s< e Ls< nos sistemas UNIX (em como algumas caracter;sticas do cs<. + (as< 7 considerado o s<ell 2adr-o em 8ual8uer sistema Linux 8ue vocF este9a usando. + (as< 2ode rodar em v)rios modos de com2ati(ilidade de maneira 8ue ele se com2orte como outro s<ell. Kle 2ode simular um s<ell 5ourne "s<% ou um s<ell $+:IXE com2liant6 2or exem2lo6 2ermitindo com 8ue o (as< leia ar8uivos de configura -o 8ue s-o es2ec;ficos ao esses s<ells e rode scri2ts desses mesmos s<ells com grande c<ances de sucesso.

Ex-lorando o s%ell
Uma ve, 8ue vocF ten<a acesso ao s<ell6 vocF 2ode come ar digitando alguns comandos sim2les.

C%ecando sua sesso de lo in


Ruando vocF loga no Linux6 o Linux vF vocF como se tivesse uma identidade 2articular6 8ue inclui o seu nome de usu)rio6 nome de gru2o6 IM de usu)rio e IM de gru2o. Linux tam(7m rastreia a sua sess-o de login. Kle sa(e 8ue logou6 8uanto tem2o o usu)rio ficou inativo e de onde ele logou. $ara encontrar informa -o a res2eito da sua identidade6 use o comando id:

$id
uid=0(root)gid=0(root) groups=0(root),1(bin), (daemon),3(s!s),"(adm),#(dis$),10(%heel)

Nesse6 o nome do usu)rio root 7 re2resentado 2or uma IM num7rica de usu)rio "uid% J. + gru2o 2rim)rio de root 7 c<amado root6 8ue tem uma gid "IM de gru2o% de J. Ooot tam(7m 2ertence a outros gru2os c<amados (in "gid 1%6 daemon "gid &% etc. Ksses nomes e n?meros re2resentam as 2ermiss0es 8ue root tem ao acessar os recursos de com2utador. GocF 2ode o(ter informa 0es so(re a sess-o atual de login 2or meio do comando !<o. No seguinte exem2lo6 a o2 -o Eu di, 2ara a2resentar mais informa 0es so(re o tem2o de inatividade e a IM do 2rocesso e E[ solicita a im2ress-o do <eader.

$%ho &uH '()E root root 00 pts/0 L*'E +*)E *,LE -*, ./))E'+ "1"" " 52

1un 2 110 3 4 1un 2 110 3 0"005

root root

pts/1 pts/

1un 2 11030 030"3 1un 2 1"012 6

"333 #3#3

A sa;da do comando !<o mostra 8ue o usu)rio root logou em 2ts/J e sua sess-o come ou dia 3 de Vun<o6 Bs 11:2S.

C%ecando diret;rios e -ermiss9es


Associada B cada s<ell est) a locali,a -o do sistema de ar8uivos Linux c<amada de diret.rio atual. 'ada usu)rio tem um diret.rio 8ue 7 identificado como o diret.rio <ome do usu)rio. Ruando vocF loga no Linux6 vocF come a em seu diret.rio <ome como diret.rio atual. Ruando vocF 2ede 2ara a(rir ou salvar um ar8uivo6 seu s<ell usa o diret.rio atual como o 2onto de referFncia. :im2lesmente a2resente o nome do ar8uivo como 8uando vocF for salv)Elo e ele ser) 2osto no diret.rio atual. Alternativamente6 vocF 2ode identificar um ar8uivo com rela -o ao diret.rio atual "camin<o relativo% ou vocF 2ode ignorar o diret.rio atual e identificar o ar8uivo 2or um camin<o a(soluto 8ue indi8ue toda a <ierar8uia de diret.rios 8ue o locali,a. $ara desco(rir onde estamos6 digitaEse:

$ p%d /usr/bin Nesse exem2lo6 o diret.rio de tra(al<o 7 /usr/(in. $ara encontrar o nome do diret.rio <ome6 digite ec<o seguido 2ela vari)vel ^[+MK:

$ echo $H/)E /root A8ui6 o diret.rio <ome 7 /root. $ara voltar ao diret.rio <ome6 a2enas digite o comando cd sem argumentos:

$ cd $ara listar o conte?do do diret.rio <ome6 ou digitaEse o camin<o do diret.rio <ome ou use o comando ls sem um nome de diret.rio. Usando a o2 -o Ea 2ara ls 2ermite com 8ue vocF ve9a os ar8uivos ocultos "ar8uivos 8ue come am com .6 dot files% (em como outros ar8uivos. 'om a o2 -o El vocF ver) uma lista detal<ada de informa 0es de cada ar8uivo.

ls &la total 53 "03# 1un 2 1"055 6 "03# 1un 2 110 0 66 "03# (ug 15 005 6adobe

dr%7r&7&&& #1 root root dr%7r&7r&7 2 root root

dr%7r&7r&7 3 root root

&r%&r&&r&& 1 root root # 31325 (pr " 15015 (L-68ip dr%7r&7r&7 2 root root dr%7&&&&&& root root "03# )a! 1 005 6amsn

"03# )a! # 1103 amsn9recei:ed 13" (pr " 005 anaconda&$s6c;g

&r%&r&&r&& 1 root root dr%7r&7r&7 1 root root dr%7r&7r&7 root root

"03# )a! # 150"" assis "03# 1un 152 )a! 005 6assistant 1<05" 6aumi7rc

&r%&r&&r&& 1 root root

&r%&&&&&&& 1 root root 12"11 1un 2 00011 6bash9histor! &r%&r&&r&& 1 root root &r%&r&&r&& 1 root root &r%&r&&r&& 1 root root dr%7&&&&&& root root " Sep 3 "< )ar 12# 1un "03# /ct 13 00" 6bash9logout 1100" 6bash9pro;ile 005 6bashrc 005 6camel9certs

&r%&r&&r&& 1 root root

"3 < (pr 2 00"" charde:6c

&r%&r&&r&& 1 root root 20312## )ar 0 150 3 .old=ire9/:er:ie%6pd; &r%&r&&r&& 1 root root dr%7r&7r&7 " root root &r%&r&&r&& 1 root root &r%&&&&&&& 1 root root &r%&r&&r&& 1 root root &r%7r&7r&7 1 root root dr%7r%7&&& 3 root root &r%&&&&&&& 1 root root dr%7&&&&&& dr%7&&&&&& root root root root 15<0 )ar "03# )ar "<2 1un 0 /ct " 10 " .ompiere6properties 110 5 6con;ig 005 6cshrc 005 6c:spass

21 1un 2 110 3 6,./-ser:er9!ello%6hpgpds6ene6unb6br990 5<<3 =eb 3 0031 sample "03# 1un 15 0<3 )a! 13 "03# /ct 13 005 6sane 005 sinta7e 005 6spamassassin

"03# )a! " 001" 6ssh #3 (pr 5 10 Sep 3 005 6s:ersionrc 00" 6tcshrc

&r%&r&&r&& 1 root root &r%&r&&r&& 1 root root &r%7r&7r&7 1 root root &r%&r&&r&& 1 root root &r%&r&&r&& 1 root root &r%7r&7r&7 3 root root &r%&r&&r&& 1 root root

22<0 )ar 1" 1#00< teste 3013 )ar 1" 1#00< teste6c 301" )ar 1" 1#00< teste6c> "03# )a! # 11031 ?n@ 1"5 =eb " 11013 unnamed6pro

dr%7r&7r&7

root root

"03# (pr 13

005 :anessa

&r%&&&&&&& 1 root root 10< 1 1un dr%7r&7r&7 3 root root dr%7r&7r&7 5 root root "03# /ct

1#055 6:imin;o 005 6:lc

"03# 1an 31 12052 67)ule

C%ecando a atividade do sistema


Al7m de ser um sistema o2eracional multiusu)rio6 o Linux 7 tam(7m um sistema multitarefa. Multitarefa significa 8ue muitos 2rogramas 2odem estar rodando ao mesmo tem2o. Uma instTncia de um 2rograma em execu -o 7 c<amada de 2rocesso. + Linux dis2oni(ili,a ferramentas 2ara listar os 2rocessos em execu -o6 monitorar o uso do sistema e 2arar os 2rocessos sem2re 8ue necess)rio. A a2lica -o mais comum 2ara c<ecar os 2rocessos em execu -o 7 o comando 2s. UseE o 2ara ver 8ue 2rogramas est-o em execu -o6 os recursos consumidos e 8uem os est) solicitando.

$ ps au ?SEA root root root root -*, $.-? $)E) BSC ASS ++D 5#< 060 06" 1""0 "#" tt!S0 520 060 065 133 125<0 16< 162 12533 060 06< "2# tt!1 S+(+ S+(A+ +*)E ./))(',

SsE )a!03 0000 /usr/sbin/gpm &m /de:/mouse &t ms SsE )a!03 0000 /sbin/agett! 3<"00 tt!1 linu7 Ss 12052 0000 &bash AE 12052 0000 ps au

2"" 1#"< pts/0 "0< <"0 pts/0

Nesse exem2lo6 a o2 -o a 2ede 2ara mostrar os 2rocessos de todos os usu)rios 8ue est-o associados ao terminal atual e a o2 -o u 2ede 8ue os nomes dos usu)rios se9am mostrados (em como outras informa 0es como 8uando o 2rocesso come ou6 o uso de mem.ria e '$U. + conceito de terminal vem dos vel<os tem2os6 8uando as 2essoas tra(al<avam a 2artir de terminais de caracteres de forma 8ue um terminal ti2icamente re2resentava uma 2essoa em uma tela. [o9e 7 2oss;vel ter muitos terminais em uma tela a(rindo m?lti2las 9anelas de terminal. Muitos 2rocessos rodam em um com2utador 8ue n-o est) associado a um terminal. Um sistema Linux tem muitos 2rocessos rodando em (acLground. + sistema de 2rocessos de (acLground gerencia tarefas como as atividades de log do sistema ou es2era 2or dados 8ue vFm via rede. Ksses 2rocessos iniciamEse 8uando o sistema iniciali,aEse e executam constantemente at7 8ue o sistema se9a desligado. $ara navegar entre os 2rocessos de um sistema6 adicione um 2i2e "_% e o comando less a 2s aux

ps au7 F less Um 2i2e direciona a sa;da de um comando 2ara a entrada de outro comando. 'om a lin<a de comando acima6 vocF 2ode navegar entre as 2)ginas de sa;da do 2s aux usando less 2or meio do caractere es2a oN digitar 8 fa, com 8ue vocF saia do

comando.

Saindo do s%ell
$ara sair do s<ell 8uando vocF tiver terminado de tra(al<ar6 digite exit ou 'trl`M. :e vocF estiver saindo de seu login s<ell6 digite logout.

"sando o s%ell no Linux


Ruando vocF digita um comando no Linux6 vocF 2ode incluir outros caracteres 8ue modificam ou adicionam com2ortamentos do 2rograma. GocF 2ode a9ustar se8CFncias de comandos ou redirecionar a entrada e a sa;da de um comando 2or meio de caracteres de controle como 2i2es "_%6 :6 maior 8ue "a% e menor 8ue "b%. Al7m do comando6 <) outros itens 8ue vocF 2ode digitar numa lin<a de comando:

+2 0es: A maioria dos comandos tem uma ou mais o2 0es 8ue vocF 2ode adicionar a fim de mudar o seu com2ortamento. +2 0es ti2icamente consistem de uma letra sim2les 2recedidas 2or um tra o. GocF tam(7m 2ode com(inar v)rias o2 0es de2ois de um tra o. $or exem2lo6 o comando ls Ela lista o conte?do do diret.rio atual. + El 2ede uma lista detal<ada de informa 0es e o Ea 2ede tam(7m os ar8uivos ocultos. Ruando uma o2 -o sim2les consiste de uma 2alavra6 ela 7 2recedida 2or EE. $or exem2lo6 2ara usar a o2 -o <el2 na maioria dos comandos6 entre E E<el2 na lin<a de comando. Argumentos: Muitos comandos tam(7m aceitam argumentos de2ois de certas o2 0es terem sido es2ecificadas ou no fim da lin<a de comando. Um argumento 7 uma 2e a extra de informa -o6 como o nome do ar8uivo6 8ue 2ode ser usado 2elo comando. $or exem2lo6 cat /etc/2ass!d mostra o conte?do de /etc/2ass!d na sua tela. Nesse caso6 /etc/2ass!d 7 o argumento. Gari)veis de am(iente: + s<ell arma,ena informa 0es 8ue 2odem ser ?teis B sess-o do s<ell e 8ue s-o c<amadas de vari)veis de am(iente. Kxem2los de vari)veis de am(iente s-o ^:[KLL6 ^$:1 "define o 2rom2t do s<ell6 ^6 c6 etc% e ^MAIL. Metacaracteres: Ksses s-o caracteres 8ue tFm significado es2ecial 2ara o s<ell. Kles 2odem ser usados 2ara direcionar a sa;da da lin<a de comando a um ar8uivo "a%6 tunelar a sa;da a outro comando "_% e rodar um comando em (acLground.

A fim de evitar digita -o6 existem recursos do s<ell 8ue arma,enam os comandos 8ue vocF dese9a reusar6 relem(ram comandos anteriores e editam comandos. GocF 2ode criar aliases 8ue 2ermitem com 8ue vocF digite um comando curto em ve, de um comando longo. + s<ell arma,ena comandos anteriores na sua lista de <ist.rico6 2ermitindo 8ue vocF reve9aEos e reuseEos.

Locali8ando comandos
:e vocF sou(er o diret.rio em 8ue se encontra o comando 8ue vocF dese9a executar6 uma maneira de execut)Elo 7 digitar o camin<o com2leto 2ara o mesmo. $or exem2lo6 vocF roda o comando date a 2artir do diret.rio /(in digitando:

$ /bin/date A claro6 isso 2ode ser incoveniente6 es2ecialmente se o comando fica em um diret.rio de camin<o longo. A mel<or maneira 7 ter comando arma,enados em locais (em determinados e adicionar esses locais B vari)vel de am(iente $AD[. $AD[ consiste na lista de diret.rios 8ue s-o c<ecados se8Cencialmente 2ara os comandos 8ue forem digitados. $ara ver o valor de $AD[:

G echo $-(+H / usr/local/sbin0/usr/sbin0/sbin0/usr/local/bin0/usr/bin0/bin0/usr/H11A#/bin0/usr/games0/usr/lib/Ia:a/bi n0/usr/lib/Ia:a/Ire/bin +s diret.rios em $AD[ s-o se2arados 2or :. A maioria dos comandos 8ue vem com o Linux ficam arma,enados em /(in6 /usr/(in ou /usr/local/(in. :e vocF for o usu)rio root6 os diret.rios contendo comandos administrativos est-o inclu;dos em ^$AD[. Ksses diret.rios incluem /s(in e /usr/s(in. A ordem mostrada em ^$AD[ 7 im2ortante. +s diret.rios s-o c<ecados da es8uerda 2ara a direita. $or exem2lo6 se <ouver um comando locali,ado tanto em /(in como em /usr/(in6 o comando 8ue est) em /usr/(in 7 executado. $ara executar o comando do diret.rio dese9ado6 talve, fa aEse necess)rio usar o camin<o com2leto 2ara o mesmo. Nem todos os comandos 8ue vocF executa est-o locali,ados nos diret.rios da vari)vel ^$AD[. Alguns comandos fa,em 2arte do s<ell. +utros comandos 2odem ser so(rescritos 2or meio da cria -o de aliases 8ue definem comandos e o2 0es 8ue vocF dese9e executar. [) tam(7m formas de definir uma fun -o 8ue consiste em uma s7rie comandos arma,enados. A8ui segue a ordem em 8ue o s<ell (usca 2or comandos digitados:

1. Aliases:

Nomes configurados 2elo comando alias re2resentam um comando 2articular e um con9unto de o2 0es. #eralmente os aliases 2ermitem com 8ue vocF defina um nome curto a um comando longo e com2licado. s-o 2alavras 8ue vocF usaria num contexto de 2rograma -o como do6 !<ile6 case e else.

2. $alavras reservadas: $alavras 8ue s-o reservadas 2elo s<ell 2ara uso es2ecial. Muitas &. Fun

-o: Um con9unto de comandos 8ue s-o executados 9untos dentro de um s<ell.

*. 'omandos em(utidos: Um comando 8ue 7 em(utido

no s<ell. 'omo resultado6 n-o <) re2resenta -o do comando no sistema de ar8uivos. A maioria dos comandos mais comuns s-o comandos em(utidos6 como cd6 ec<o "ecoa texto na tela%6 exit6 fg "tr)s tarefas do (acLground 2ara o foreground%6 <istorH "lista os comandos usados anteriormente%6 2!d6 set "a9usta as o2 0es do s<ell% e tH2e "mostra a locali,a -o de um comando%.

$ara desco(rir de onde um comando 7 executado6 digite tH2e. $or exem2lo:

$ t!pe bash bash is /usr/bin/bash Dente tH2e com as seguintes 2alavras: !<ic<6 case e return. :e um comando residir em v)rias locali,a 0es6 vocF 2ode usar a o2 -o Ea 2ara desco(rir as v)rias locali,a 0es do mesmo.

Reexecutando comandos
A de certa forma frustrante de2ois de digitar um comando longo e com2lexo6 desco(rir 8ue vocF cometeu erros de digita -o. Feli,mente6 algumas das caracter;sticas do s<ell 2ermite recu2erar os comandos anteriores6 edit)Elos ou com2letar uma comando digitado 2arcialmente. + <ist.rico do s<ell 7 uma lista dos comandos 8ue vocF digitou anteriormente. Usando esse comando num s<ell (as<6 vocF 2oder) ver os comandos anteriores. Knt-o6 usando v)rias caracter;sticas do s<ell6 vocF 2oder) recu2erar comandos individuais a 2artir da lista e mudar os mesmos ao seu (el 2ra,er.

Lin%a de comando com com-letamento


$ara evitar digita -o6 o s<ell (as< oferece v)rias maneiras de com2letar comandos 2arcialmente digitados. $ara tentar com2letar um valor6 digite os 2rimeiros caracteres e 2ressione Da(. 'ontextos interessantes:

Gari)veis de am(iente: :e o texto come a com um ^6 o s<ell com2leta o mesmo com uma vari)vel de am(iente do s<ell. Nome de usu)rio: :e o texto come a com d6 o s<ell com2leta o texto com o nome do usu)rio. 'omandos6 alias ou fun 0es: :e o texto come a com caracteres regulares6 o s<ell tenta com2letar o texto com comandos6 alias ou fun 0es. Nome da m)8uina: :e o texto come a com e6 o s<ell tenta com2let)Elo com o nome da m)8uina.

+correr) situa 0es em 8ue <) v)rios valores de com2letamento 2ara uma string de caracteres 8ue vocF digitou. Nesse caso6 vocF 2ode c<ecar os valores dis2on;veis 2ressionando Ksc ou Da( "duas ve,es%.

Recu-erao da lin%a de comando


Me2ois de digitar o comando6 o comando 7 salvo na lista de <ist.rico do s<ell. Ksse lista 7 arma,enada num ar8uivo <ist.rico 8ue 2ermite 8ue 8ual8uer comando 2ossa ser c<amado novamente. Me2ois de recu2erar a lin<a6 vocF 2oder) modific)Ela.

$ara ver a sua lista de <ist.rico6 use o comando <istorH. Kntre o comando sem o2 0es ou seguido 2or um n?mero do taman<o da lista dos comandos mais recentes. $or exem2lo:

$ histor! < Um n?mero 2recede cada comando na lista. [) v)rias maneiras de executar um comando diretamente da lista6 incluindo:

\n: executa o comando relativo ao n?mero n. :u(stitua o n 2elo n?mero da lin<a do comando e o comando executar). $or exem2lo:

$ J1

\\: Kxecuta o comando anterior. Kxecuta a lin<a de comando anterior.

$ JJ

\fstringf: executa o comando 8ue conten<a a string. Isso fa, com 8ue o comando mais recente 8ue conten<a a string 2articular de caracteres se9a executa. $or exem2lo6 se vocF tiver executado o comando date anteriormente6 2ara rod)Elo anteriormente6 vocF 2ode tentar:

$ J4dat4 Km ve, de rodar uma lin<a de comando do <ist.rico diretamente6 vocF 2ode recu2erar uma lin<a 2articular e editar. Demos uma ta(ela com a seguintes teclas de atal<o:

Atal%o :etas "cima/(aixo%

+ome da *uno $asso

Descrio $ressione as setas 2ara 2assear entre os comandos da sua lista de <ist.rico at7 c<egar no comando dese9ado. Me2ois de 2ressionar essas teclas6 entre uma string de (usca 2ara reali,ar a (usca reversa. P medida 8ue vocF digita6 um casamento com a lin<a de comando 2rov)vel 7 a2resentado. + mesmo 8ue o anterior6 mas de ordem direta na (usca Me2ois de 2ressionar essas teclas6 entre a string 2ara fa,er a (usca reversa. Migite a string e

'rtl`O

5usca incremental reversa

'rtl`:

5usca incremental direta

Alt`$

5usca reversa

Atal%o

+ome da *uno

Descrio 2ressione Knter 2ara ver o comando mais recente 8ue inclui a string.

Alt`N

5usca direta

+ mesmo 8ue o anterior6 mas de ordem direta na (usca Gai 2ara o come o da lista do <ist.rico Gai 2ara o fim da lista do <ist.rico

Alt`b Alt`a

'ome o do <ist.rico Fim do <ist.rico

A lista de <ist.rico 7 arma,enada em .(as<g<istorH no diret.rio <ome do usu)rio. At7 1JJJ comandos s-o arma,enados6 2or 2adr-o.

Conectando e ex-andindo comandos


Uma caracter;stica interessante do s<ell 7 a sua ca2acidade de redirecionar a entrada e a sa;da dos comandos 2ara outros comandos e ar8uivos. $ara 2ermitir 8ue comandos se9a conectados6 o s<ell usa metacaracteres.

Tunelando comandos
+ metacaracter 2i2e "_% conecta a sa;da de um comando B entrada do outro. Isso 2ermite 8ue vocF ten<a um comando tra(al<ando em um con9unto de dados e 8ue o 2r.ximo comando atue 2rocessando os resultados do 2rimeiro. A8ui 7 a2resentado um exem2lo de lin<a de comando 8ue inclui 2i2es:

$ cat /etc/pass%d F sort F less Ksse comando lista o conte?do de /etc/2ass!d e tunela a sa;da ao comando sort. + comando sort 2ega os usu)rios 8ue come am em cada lin<a de /etc/2ass!d6 ordenaE os alfa(eticamente e tunela 2ara o comando less.

"sando metacaracteres de redirecionamento de ar/uivo


'omandos rece(em dados da entrada 2adr-o e enviaEos B sa;da 2adr-o. Usando 2i2es6 vocF 2ode direcionar a sa;da 2adr-o de um comando 2ara a entrada 2adr-o do outro. 'om ar8uivos6 vocF 2ode usar menor 8ue b e maior 8ue a 2ara direcionar dados de e 2ara ar8uivos.

b : Mireciona o conte?do de um ar8uivo a um comandoN

a : Mireciona a sa;da de um comando a um ar8uivo6 deletando o ar8uivo existente. aa: Mireciona a sa;da de um comando a um ar8uivo6 adicionando a sa;da do mesmo ao fim de um ar8uivo 9) existente.

Comandos se/<enciais
Ps ve,es6 7 dese9avel executar uma se8CFncia de comandos6 com um comando sendo iniciado a2.s a execu -o do outro. GocF 2ode o(ter essa se8CFncia digitando os v)rios comandos dese9ados se2arados 2or N.

Comandos em 0ac= round


Alguns comandos 2odem demorar consideravelmente at7 com2letarem a sua execu -o. Ps ve,es6 vocF dese9a n-o ter 8ue es2erar o comando terminar 2ara continuar usando o s<ell. Nesses casos6 vocF 2ode ter v)rios comandos em (acLground usando o caractere h.

Criando o seu am0iente s%ell(


GocF 2ode a9ustar o seu s<ell de forma 8ue ele tra(al<e mais eficientemente. :eu 2rom2t 2ode te 2rover informa 0es 2ertinentes sem2re 8ue vocF 2ressionar Knter. GocF 2ode usar aliases 2ara economi,ar digita -o e a9ustar vari)veis de am(iente sem2re 8ue necess)rio. $ara 8ue essas mudan as fi8uem ativas cada ve, 8ue vocF iniciali,e o s<ell6 adicione essas configura 0es aos ar8uivos de configura -o do s<ell.

Con*i urando o seu s%ell


G)rios ar8uivos de configura -o a9ustam o com2ortamento do s<ell. Alguns dos ar8uivos s-o executados 2ara cada usu)rio e 2ara cada s<ell en8uanto outros s-o es2ec;ficos ao usu)rio 8ue criou o ar8uivo de configura -o. :egue uma lista de ar8uivos 8ue s-o de interesse:

Ar/uivo /etc/pro;ile

Descrio A9usta as informa 0es de am(iente de cada usu)rio. A executado 8uando vocF loga 2ela 2rimeira ve,. Mis2oni(ili,a valores de 2at< (em como vari)veis de am(ientes ?teis. Al7m disso6 ca2tura as informa 0es de configura -o de ar8uivos indicados no /etc/2rofile.d. Kxecuta 2ara cada usu)rio 8ue roda o (as< s<ell cada ve, 8ue uma sess-o for

/etc/bashrc

Ar/uivo

Descrio a(erta. Mi, 8ual 7 o 2rom2t 2adr-o e 2ode 2or um ou mais aliases. Galores s-o so(rescritos 2or informa 0es de d/.(as<rc.

>/6bash9pro;ile

Usado sem2re 8ue cada usu)rio dese9e configurar coisas es2ec;ficas ao seu s<ell. A executado a2enas uma ve,6 8uando do in;cio da sess-o. A9usta algumas vari)veis de am(iente e executa o .(as<rc do usu)rio. 'ont7m informa 0es 8ue s-o es2ec;ficas aos s<ells (as<. A lido sem2re 8ue vocF inicia uma sess-o. A o mel<or local 2ara adicionar vari)veis de am(iente e aliases. Kxecuta sem2re 8ue o usu)rio finali,a uma sess-o. $or 2adr-o6 a2enas lim2a a tela.

>/6bashrc

>/6bash9logout

Adicionando vari)veis de am(ientes GocF 2ode considerar adicionar vari)veis ao .(as<rc. Klas 2odem te auxiliar a tra(al<ar de forma mais eficiente.

DM+UD: A9usta 8uanto tem2o o s<ell deve ficar inativo at7 8ue finali,e. + valor 7 o n?mero de segundos 2ara os 8uais o s<ell n-o rece(eu entrada. Isso 7 im2ortante do 2onto de vista de seguran a caso vocF deixe o com2utador logado e ausenteEse dele. Me maneira a n-o finali,ar a sua sess-o en8uanto vocF estiver tra(al<ando6 use valores convenientes6 como 14JJ "&J minutos%. $AD[: 'omo descrito anteriormente6 $AD[ indica os diret.rios 8ue devem ser 2rocurados na execu -o de 2rogramas. :e for fre8Cente usar diret.rios de comandos 8ue n-o est-o em $AD[6 2ode ser interessante adicion)Elos em $AD[ 2ermanentemente. $ara fa,FElo6 (asta adicionar os diret.rios B vari)vel $AD[ no ar8uivo .(as<rc. $ara adicionar um diret.rio c<amado /getstuff/(in: $AD[i^$AD[:/getstuff/(inN ex2ort $AD[. Ksse exem2lo inicialmente lF o conte?do anterior de $AD[6 adiciona ao novo $AD[ al7m de adicionar o diret.rio dese9ado e ex2orta a nova vari)vel $AD[. X[ADKGKO: GocF 2ode criar suas 2r.2rias vari)veis de am(iente 2ara 2ro2orcionar atal<os Bs suas tarefas. Kscol<a 8ual8uer nome 8ue n-o estiver sendo usado e associe um valor ?til ao mesmo. $or exem2lo6 se vocF estiver tra(al<ando (astante com os ar8uivos do diret.rio /!orL/time/files/info/memos6 vocF 2ode a9ustar a seguinte vari)vel: Mi/!orL/time/files/info/memosN ex2ort M. GocF 2ode mudar do diret.rio atual digitando cd ^M. GocF 2ode rodar um 2rograma do diret.rio a 2artir do diret.rio atual digitando ^M/roletarussa.

"sando aliases

A9ustar aliases 2ode te salvar mais tem2o do 8ue a9ustar vari)veis de am(iente. 'om aliases6 vocF 2ode ter uma string de caracteres executando uma lin<a de comando com2lexa. GocF 2ode adicionar e listar os aliases com o comando alias. Alguns exem2los:

alias p=Kp%d L ls &.=K alias rm=Krm &iK No 2rimeiro exem2lo6 B letra 2 7 associado a se8CFncia dos comandos 2!d e ls E'F 2ara im2rimir o conte?do do diret.rio locali,a e a lista de seus conte?dos na forma de coluna. + segundo6 executa o comando rm com a o2 -o Ei cada ve, 8ue vocF digitar rm. Ruando vocF estiver num s<ell6 vocF 2ode c<ecar 8uais aliases foram a9ustados digitando o comando alias. :e vocF 8uiser remover um alias6 digite unalias.

$erenciando -rocessos em 0ac= round e *ore round


GocF 2ode colocar um 2rograma ativo em (acLground de v)rias formas. Uma maneira 7 adicionar h no final da sua invoca -o. +utra forma 7 usar o comando at 2ara rodar comandos n-o necessariamente conectado ao s<ell. $ara 2arar um 2rograma e 2QElo em (acLground6 digite 'trl`j. Me2ois de ter interrom2ido o 2rograma6 vocF 2ode tra,FElo 2ara foreground "comando fg% ou fa,er ele rodar em (acLgroud "comando (g%.

Criando ar/uivos e diret;rios


'omo usu)rio Linux6 a maioria dos ar8uivos 8ue vocF salva e tra(al<a estar-o 2rovavelmente no diret.rio <ome. A8ui seguem alguns comandos usados 2ara criar e usar ar8uivos e diret.rios:

Comando cd p%d m$dir chmod ls

Resultado muda de diret.rio mostra o nome do diret.rio atual cria um diret.rio muda as 2ermiss0es de um ar8uivo ou diret.rio lista o conte?do de um diret.rio

Movendo> co-iando e deletando ar/uivos


'omandos 2ara mover6 co2iar e deletar ar8uivos s-o de certa forma diretos. $ara mudar a locali,a -o de um ar8uivo6 use o comando mv. $ara co2iar um ar8uivo de uma 2osi -o 2ara outra6 use o comando c2. $ara remover um ar8uivo6 use o comando rm.

Entendendo -ermiss9es de ar/uivos


Me2ois de tra(al<ar com o Linux 2or um tem2o6 7 muito 2rov)vel 8ue vocF se de2are com a mensagem: Y$ermiss-o negadaZ. $ermiss0es associadas a ar8uivos e diret.rios s-o destinadas a manter a 2rivacidade dos ar8uivos dos usu)rios e a integridade do sistema6 n-o 2ermitindo 8ue 2essoas n-o autori,adas acessem conte?dos restritos. :-o nove os (its associados Bs 2ermiss0es de cada ar8uivo e 8ue definem a 2ol;tica de acesso do 2ro2riet)rio do ar8uivo e de outros usu)rios do sistema. +s (its de 2ermiss-o a2arecem como r!xr!xr!x. +s 2rimeiros trFs (its definem as 2ermiss0es do 2ro2riet)rio do ar8uivo6 os 2r.ximos trFs a2licamEse ao gru2o associado ao ar8uivo e os outros trFs a2licamEse a todos os outros usu)rios. + r 7 de leitura6 o ! de escrita e o x de execu -o. :e um tra o a2arecer em ve, de uma letra6 significa 8ue a n-o <) 2ermiss-o de leitura ou escrita ou execu -o. Mevido a diferen as entre ar8uivos e diret.rios6 as 2ermiss0es de leitura6 escrita e execu -o nos ar8uivos s-o diferentes das relativas aos diret.rios.

4ermisso leitura

Ar/uivo acessar o conte?do do ar8uivo mudar o conte?do ar8uivo6 movFElo delet)Elo. do ou

Diret;rio ver 8uais s-o os ar8uivos e su(diret.rios 8ue ele cont7m adiciona ar8uivos ou su(diret.rios ao diret.rio Muda 2ara o diret.rio de maneira 8ue ele se9a o atual6 (usca 2elo diret.rio ou executa um comando a 2artir do diret.rio.

escrita

execu -o

executar o ar8uivo como um 2rograma

GocF 2ode verificar a 2ermiss-o 2ara 8ual8uer ar8uivo ou diret.rio digitando o comando ls Eld.

$ls &ld modulo1 curriculum9:itae6rt; &r%&r&&r&& 1 root root 5210< )a! 13 1"0"" curriculum9:itae6rt; dr%7r&7r&7 root root "03# 1un < 15013 modulo1

A 2rimeira lin<a di, 8ue o ar8uivo curriculumgvitae.rtf tem 2ermiss-o de leitura e escrita 2ara o 2ro2riet)rio. + gru2o e os outros s. 2odem ler o ar8uivo. A segunda lin<a di, 8ue modulo1 7 um diret.rio "d%. + 2ro2riet)rio 2ode ler6 escrever e executarN o gru2o e os outros s. 2odem ler e executar. 'omo resultado6 o 2ro2riet)rio 2ode adicionar6 mudar ou deletar ar8uivos ar8uivos 8ue est-o no diret.rio e todo mundo 2or ler o conte?do do mesmo6 entrar no diret.rio e listar o conte?do do mesmo. :e vocF 7 2ro2riet)rio de um ar8uivo6 vocF 2ode usar c<mod 2ara mudar a 2ermiss-o dele sem2re 8ue dese9ar. Uma maneira de fa,FElo associa a cada 2ermiss-o um n?mero: ri*6 !i2 e xi1N vocF 2ode usar o n?mero total de cada con9unto 2ara a9ustar a 2ermiss-o. $or exem2lo6 2ara fa,er as 2ermiss0es totalmente a(ertas 2ara o usu)rio6 2on<a o 2rimeiro n?mero igual a 3 "*`2`1% e dF ao gru2o e outros usu)rios a2enas a 2ermiss-o de leitura6 a9ustando o segundo e terceiro n?meros em * "*`J`J%6 de forma 8ue o n?mero final 7 3**. Ruais8uer com(ina 0es de 2ermiss0es 2odem ir de J "nen<uma 2ermiss-o% a 3 "controle total%.

$chmod 2"" curriculum9:itae6rt;

?( Or ani8ao dos diret;rios


+ 8ue se es2era encontrar em um sistema de ar8uivosf

$rocessosN Mis2ositivos de hardwareN 'anais de comunica 0es entre 2rocessosN :egmentos de mem.ria com2artil<ada.

:e o sistema for UNIX6 a res2osta 7 Ytodas as anterioresZ. K6 7 claro6 vocF 2ode encontrar a; alguns ar8uivos. =&> Km(ora o 2ro2.sito ()sico de um sistema de ar8uivos se9a re2resentar e organi,ar os recursos de arma,enamento do sistema6 os 2rogramadores s-o )vidos 2or evitar reinventar a roda 8uando se trata do gerenciamento de outros ti2os de o(9etos. Fre8Centemente6 temEse 2rovado 8ue 7 natural e conveniente ma2ear esses o(9etos 2ara o es2a o de nomes do sistema de ar8uivos. [) algumas vantagens 2ara essa unifica -o "uma interface de 2rograma -o consistente6 de acesso f)cil a 2artir do shell% e algumas desvantagens "im2lementa 0es FranLenstein do sistema de ar8uivos%6 mas6 8uer vocF a2rove isso ou n-o6 esse se tornou o estilo UNIX. + sistema de ar8uivos 2ode ser 2ensado como se a(rangisse 8uatro com2onentes 2rinci2ais:

um es2a o de nomes ] uma maneira de nomear e organi,ar as coisas em uma <ierar8uiaN uma A$I ] um con9unto de c<amadas de sistema 2ara navegar e mani2ular n.sN um modelo de seguran a ] um es8uema 2ara 2roteger6 ocultar e com2artil<ar as coisasN uma im2lementa -o ] o c.digo 8ue associa o modelo l.gico a um disco real.

:istemas modernos de ar8uivos UNIX definem uma interface a(strata no n;vel do kernel 8ue acomoda diferentes back-ends. Algumas 2artes da )rvore de ar8uivos s-o tratadas 2ela im2lementa -o tradicional (aseada em discoN outras s-o agru2adas em cam2os 2or drivers se2arados dentro do kernel. $or exem2lo6 sistemas de ar8uivos NF: s-o tratados 2or um driver 8ue encamin<a as o2era 0es solicitadas 2ara um servidor em um outro com2utador. Infeli,mente6 os limites ar8uitetQnicos n-o s-o claramente es(o ados e <) v)rios casos es2eciais. $or exem2lo6 ar8uivos de dis2osistivos fornecem uma maneira 2ara 8ue os 2rogramas se comuni8uem com os drivers dentro do kernel. Kles n-o s-o realmente ar8uivos de dados6 mas s-o tratados 2elo driver ()sico do sistema de ar8uivos e suas caracter;sticas s-o arma,enadas em disco. Dalve, os detal<es 2udessem ser relativamente diferentes se o sistema de ar8uivos fosse reim2lementado B lu, das ex2eriFncias das ?ltimas d7cadas. =manual de administra -o> 'ome emos com algumas defini 0es e sigamos 2ela 2adroni,a -o da <ierar8uia do sistema de ar8uivos Linux/UNIX6 o 8ue nos a9udar) entender os nomes e fun 0es dos diret.rios6 (astante diferentes dos usados no am2lamente difunfido Xindo!s.

+omes de camin%o
+ sistema de ar8uivos 7 a2resentatdo como uma ?nica <ierar8uia 8ue inicia no diret.rio / e continua em um n?mero ar(itr)rio de su(diret.rios. / tam(7m 7 c<amado diret.rioErai,. A lista de diret.rios 8ue deve ser 2ercorrida 2ara locali,ar um ar8uivo em 2articular 9unto com seu nome de ar8uivo forma um Ynome de camin<oZ. Nomes de camin<o 2odem ser a(solutos "/tm2/foo% ou relativos "(ooL&/filesHstem%. Nomes de camin<o relativos s-o inter2retados iniciandoEse no diret.rio atual. Dalve, vocF este9a acostumado a 2ensar no diret.rio atual como um recurso de shell6 mas cada 2rocesso tem um diret.rio atual. +s termos arquivo6 nome de arquivo6 nome de caminho e caminho s-o mais ou menos intercam(i)veis. + nome de arquivo e o caminho 2odem ser utili,ados tanto 2ara camin<os a(solutos como relativosN o nome de caminho6 geralmente6 sugere um camin<o a(soluto. + sistema de ar8uivos 2ode ser ar(itrariamente 2rofundo. Mas cada com2onente de um nome de camin<o deve ter um nome com n-o mais 8ue 2// caracteres de extens-o e um ?nico camin<o n-o 2ode conter mais 8ue 1J2& caracteres. $ara acessar um ar8uivo com um nome de camin<o mais longo 8ue isso6 vocF deve mudar "cd% 2ara um diret.rio intermedi)rio e utili,ar um nome de camin<o relativo. Kssencialmente6 n-o <) nen<uma restri -o na nomea -o dos ar8uivos e diret.rios6 exceto 2elo fato de 8ue os nome tFm um limite de com2rimento e n-o devem conter o caractere / nem o caracter nulo. Km 2articular6 s-o 2ermitidos es2a os "mais ou menos6 eviteEos sem2re 8ue 2oss;vel%. $or causa da longa tradi -o do UNIX em se2arar os argumentos da lin<a de comando com um es2a o em (ranco6 o software legado tende a se confundir 8uando a2arecem es2a os dentro dos nomes de ar8uivo. [o9e em dia6 dada a 8uantidade de com2artil<amento de ar8uivos entre ti2os de sistemas diferentes6 n-o 7 mais seguro assumir 8ue todos os nomes de ar8uivos n-o conter-o es2a os. Mesmo se vocF n-o com2artil<ar ar8uivos em Macs e $cs6 <) muitos usu)rios 8ue tFm o <)(ito de digit)Elos. Ruais8uer scripts 8ue vocF escreva 8ue lidem com o sistema de ar8uivos devem estar 2re2arados 2ara lidar com os es2a os. Km geral6 nomes de ar8uivos grandes 2recisam a2enas ser colocados entre as2as 2ara manter suas 2artes 9untas. $or exem2lo6 o comando:

$ more M)eu arNui:o e7celente6t7tO 2reservaria Meu ar/uivo excelente(txt como um ?nico argumento 2ara more.

4adro da Hierar/uia do sistema de ar/uivos "+I,@


$ro2.sito Ksse 2adr-o 2ossi(ilita:

Ao software6 2rever a locali,a -o de ar8uivos e diret.rios instalados e Aos usu)rios6 2redi,er a locali,a -o de ar8uivos e diret.rios instalados.

Isso 7 feito 2ara: Ks2ecificar os 2rinc;2ios guia 2ara cada )rea do sistema de ar8uivosN

Ks2ecificar os ar8uivos e os diret.rios m;nimos necess)riosN Knumerar as exce 0es aos 2rinc;2ios e Knumerar casos es2ec;ficos onde 9) ocorreram conflitos <ist.ricos. Miferentes desenvolvedores de software 2oderem criar a2lica 0es 8ue atendam a F[: e tra(al<em com distri(ui 0es 8ue atendem a F[:N 'riadores de sistemas o2eracionais 2ermitirem 8ue seus sistema atendam a F[: e Usu)rios entenderem e seguirem a norma F[: em seu sistema. A dis2osi -o local dos ar8uivos 7 um 2ro(lema local de forma 8ue a F[: n-o coage os administradores de sistemasN F[: indica 2ro(lemas onde a dis2osi -o dos ar8uivos 2recisam ser coordenadas entre m?lti2los indiv;duos6 como sites locais6 distri(ui 0es6 a2lica 0es6 documenta -o6 etc.

+ documento F[: "File :Hstem [ierarc<H :tandard% 7 usado 2ara:

+ documento F[: tem um esco2o limitado:

+ sistema de ar8uivos + 2adr-o assume 8ue o sistema o2eracional 8ue atenda ao 2adr-o F[: 2ara seu sistema de ar8uivos 2ro2orcione as mesmas caracter;sticas ()sicas de seguran a encontradas na maioria dos sistemas de ar8uivos UNIX. A 2oss;vel definir dois ti2os de ar8uivos: os com2artil<)veis vs os n-oEcom2artil<)veis e os vari)veis vs os est)ticos. Km geral6 ar8uivos 8ue diferem em 8ual8uer uma dessas duas classifica 0es devem ser locali,ados em diferentes diret.rios. Isso fa, com 8ue se9a f)cil arma,enar ar8uivos com diferentes caracter;sticas de uso em diferentes sistemas de ar8uivos. Y'om2artil<)veisZ s-o ar8uivos 8ue 2odem ser arma,enados em um <ost e usado 2or outros. YN-oEcom2artil<)veisZ s-o ar8uivos 8ue n-o s-o com2artil<)veis. $or exem2lo6 os ar8uivos no diret.rio %ome s-o com2artil<)veis en8uanto dis2ositivos n-o o s-o. YKst)ticosZ incluem ar8uivos (in)rios6 (i(liotecas6 ar8uivos de documenta -o e outros ar8uivos 8ue n-o mudam sem a interven -o do administrador do sistema. YGari)veisZ s-o ar8uivos 8ue n-o s-o est)ticos.
O sistema de ar/uivos root

$ro2.sito +s conte?dos do sistema de ar8uivos root devem ser destinados ao (oot6 recu2era -o ou re2aro do sistemaN

$ara iniciali,ar um sistema6 deve <aver informa 0es suficientes na 2arti -o root 2ara montar outros sistemas de ar8uivos. Isso inclui utilit)rios6 configura 0es6 informa 0es de boot loader e outros dados essenciais 2ara a iniciali,a -o. /usr6 /o2t e /var s-o criados de maneira 8ue 2ossam ser locali,ados em outras 2arti 0es ou

sistemas de ar8uivos.

$ara 2ermitir a recu2era -o ou re2aro de um sistema6 ferramentas necess)rias 2ara 8ue um administrador 2ossa diagnosticar e reconstruir um sistema danificado devem estar 2resentes no sistema de ar8uivo root. $ara restaurar um sistema6 ferramentas necess)rias 2ara restaurar o sistema a 2artir de backups devem estar 2resentes no sistema de ar8uivos root.

Oe8uisitos +s seguintes diret.rios6 ou linLs sim(.licos 2ara diret.rios6 s-o exigidos em /:

Diret;rio bin boot de: etc lib media mnt opt sbin sr: tmp usr :ar

Descrio 5in)rios dos comandos essenciais Ar8uivos est)ticos 2ara o boot loader Ar8uivos de dis2ositivos 'onfigura 0es com2utador es2ec;ficas do

5i(liotecas com2artil<adas e m.dulos do kernel essenciais $onto de remov;vel montagem 2ara m;dia

$onto de montagem tem2or)rio 2ara sistemas de ar8uivo $acotes de a2lica 0es adicionais 5in)rios esseciais do sistema Mados 2ara os servi os dis2oni(ili,ados 2elo sistema Ar8uivos tem2or)rios [ierar8uia secund)ria Mados vari)veis

'ada diret.rio listado acima 7 es2ecificado em detal<e logo a(aixo. +2 0es es2ec;ficas

+s seguintes diret.rios6 ou linLs sim(.licos 2ara diret.rios6 devem estar em / se o su(sistema corres2ondente estiver instalado:

Diret;rio home root

Descrio Miret.rios <ome dos usu)rios "o2cional% Miret.rio "o2cional% <ome do usu)rio root

)0in@ Bin.rios de comandos essenciais ao usu.rio 3-ara o uso de todos os usu.rios5

$ro2.sito /(in cont7m comandos 8ue 2odem ser usados tanto 2elo administrador do sistema como 2elos usu)rios6 mas 8ue s-o exigidos en8uanto nen<um outro sistema de ar8uivos estiver montado "2or exem2lo6 o2era -o monoEusu)rio%. Kle tam(7m 2ode conter comandos 8ue s-o usados indiretamente 2or script. Oe8uisitos N-o 2odem ocorrer su(diret.rios em /(in. +s seguintes comandos6 ou linLs sim(.licos6 s-o exigidos em /(in

Comando cat chgrp chmod cho%n cp date dd d;

Descrio contatena os ar8uivos 2ara o standard out2ut muda o gru2o 2ro2riet)rio muda as ar8uivo 2ermiss0es de acesso ao

muda o usu)rio 2ro2riet)rio co2ia ar8uivos e diret.rios mostra e a9usta a <ora e a data do sistema converte e co2ia um ar8uivo mostra o uso dos discos do sistema

Comando dmesg echo ;alse hostname $ill ln login ls m$dir m$nod more mount m: ps p%d rm rmdir sed sh stt! su s!nc

Descrio im2rime ou controla mensagens do kernel mostra lin<a de texto n-o fa, nadaN fal<a mostra ou a9usta o <ostname envia sinais aos 2rocessos cria linLs entre os ar8uivos inicia uma sess-o do sistema lista o conte?do do diret.rio cria diret.rios cria dis2ositivos es2eciais6 se9am de (loco6 se9am de caracteres navega 2or um texto monta um sistema de ar8uivos move e renomeia ar8uivos relata os estados do 2rocessos im2rime o nome do diret.rio de tra(al<o atual remove ar8uivos e diret.rios remove diret.rios va,ios editor de fluxo o shell de comandos 5ourne muda e im2rime os a9ustes do terminal muda a IM do usu)rio a2lica as altera -o aos sistemas de ar8uivos6 esva,iando os buffers o (uffer de

Comando true umount uname

Descrio n-o fa, nadaN sucesso desmonta sistemas de ar8uivos im2rime as informa 0es do sistema

:e o /(in/s< n-o 7 o shell de comandos 5ourne6 ele deve ser um linL 8ue a2onta ao shell real. +2 0es es2ec;ficas +s seguintes 2rogramas6 ou linLs sim(.licos 2ara 2rogramas6 deve estar em /(in se o corres2ondente sistema de ar8uivos estiver instalado:

Comando csh ed tar cpio g8ip gun8ip 8cat netstat ping

Descrio shell ' editor 2rograma de ar8uivamento 2rograma de ar8uivamento com2ressor #NU descom2ressor #NU descom2ressor #NU ferramenta usada 2ara gerar estat;sticas de rede testa a rede usando o 2rotocolo I'M$

)0oot

$ro2.sito Ksse diret.rio cont7m o necess)rio 2ara o 2rocesso de iniciali,a -o exceto ar8uivos de configura -o n-o necess)rios B iniciali,a -o. $ortanto6 /(oot arma,ena os dados 8ue s-o usados antes de o kernel iniciar a execu -o em modo usu)rio. $ode incluir setores

de (oot gravados e ar8uivos de ma2as de setores. +2 0es es2ec;ficas + kernel do sistema o2eracional deve estar locali,ado ou em / ou em /(oot.
)dev@ Ar/uivos de dis-ositivos

$ro2.sito + diret.rio /dev cont7m ou ar8uivos es2eciais de dis2ositivos. +2 0es es2ec;ficas :e for 2oss;vel criar manualmente dis2ositivos em /dev6 /dev deve conter um comando c<amado MA@KMKG6 8ue 2ode criar dis2ositivos sem2re 8ue for necess)rio. Kle tam(7m 2ode conter um MA@KMKG.local 2ara 8uais8uer dis2ositivos locais. :e necess)rio6 MA@KMKG deve 2rever a cria -o de eventuais dis2ositivos 8ue 2ossam ser encontrados no sistema6 n-o a2enas a8ueles encontrados em im2lementa 0es ou instala 0es 2articulares.
)etc@ Con*i urao es-ec#*ica do com-utador

$ro2.sito A <ierar8uia /etc cont7m ar8uivos de configura -o. Um ar8uivo de configura -o 7 um ar8uivo local usado 2ara controlar a o2era -o de um 2rogramaN deve ser est)tico e n-o 2ode ser um (in)rios execut)vel. Oe8uisitos N-o devem ser encontrados (in)rios em /etc. +s seguintes diret.rios6 ou linLs sim(.licos 2ara diret.rios6 s-o exigidos em /etc:

Diret;rio opt H11 sgml

Descrio configura -o 2ara o2t configura -o 2ara o sistema X Xindo! "o2cional% configura -o 2ara :#ML "o2cional%

Diret;rio 7ml

Descrio configura -o 2ara XML "o2cional%

+2 0es es2ec;ficas +s seguintes diret.rios6 ou linLs sim(.licos 2ara diret.rios6 devem estar locali,ados em /etc se o su(sistema corres2ondente estiver instalado:

Diret;rio opt

Descrio configura -o 2ara /o2t

+s seguintes ar8uivos6 ou linLs sim(.licos 2ara ar8uivos6 devem estar em /etc se o corres2ondente su(sistema estiver instalado:

Ar/uivo csh6login e7ports ;stab ;tpusers gate%a!s gtt!de;s group host6con; hosts hosts6allo% hosts6den!

Descrio iniciali,al -o 2ara logins ' shell lista de controle de acesso 2ara sistema de ar8uivos NF: informa 0es est)ticas so(re os sistemas de ar8uivos lista de controle de acesso 2ara o servi o de FD$ ar8uivo com lista de gate!aHs 2ara routed velocidade e configura 0es de terminais usadas 2or gettH ar8uivo de gru2os de usu)rio ar8uivo de configura -o 2ara a resolu -o de nomes informa 0es est)ticas so(re nomes de <ost ar8uivo de controle de acesso 2ara D'$ !ra22ers ar8uivo de controle de acesso 2ara D'$ !ra22ers

Ar/uivo hosts6eNui: hosts6lpd inetd6con; inittab issue ld6so6con; motd mtab mtools6con; net%or$s pass%d printcap pro;ile protocols resol:6con; rpc securett! ser:ices shells s!slog6con;

Descrio lista de <osts confi)veis 2ara rlogin6 rs<6 rc2 lista de <osts confi)veis 2ara l2d ar8uivo de configura -o 2ara inetd ar8uivo de configura -o 2ara init ar8uivo de mensagem de 2r7Elogin e ar8uivo de identifica -o lista de diret.rios extras 2ara (usca 2or (i(liotecas com2artil<adas ar8uivo de mensagem de 2.sElogin informa 0es dinTmicas so(re o sistema de ar8uivos ar8uivo de configura -o 2ara mtools informa 0es est)ticas so(re os nomes de rede ar8uivo de 2ass!d (anco de dados do servi o de im2ress-o l2d ar8uivo de iniciali,a -o dos logins dos shell s< listagem dos 2rotocolos I$ ar8uivo de configura -o do resolvedor de nomes listagem dos 2rotocolos O$' controle de acesso 2ara o login root nomes de 2ortas associadas ao servi os de rede camin<os 2ara s<ells v)lidos ar8uivo de configura -o 2ara sHslogd

)%ome@ diret;rio %ome dos usu.rios 3o-cional5

$ro2.sito /<ome 7 um conceito 2adr-o6 mas 7 claramente um sistema de ar8uivos a9ustado 2ara cada situa -o. + a9uste de2ender) das finalidades do com2utador. $ortanto6 nen<um 2rograma deve confiar nessa locali,a -o. Oe8uisitos Ar8uivos de configura -o de cada usu)rio es2ec;ficos 2ara a2lica 0es 8ue s-o arma,enadas no diret.rio <ome come am com o caracter W.W "um ar8uivo oculto%. :e uma a2lica -o 2recisa criar mais 8ue um ar8uivo oculto6 ela deve coloc)Elos em um su(diret.rio com um nome 8ue inicie com o caracter W.W "diret.rio oculto%. Nesse caso6 os ar8uivos de configura -o n-o iniciam com o caracter W.W.
)li0@ Bi0liotecas com-artil%adas essenciais e m;dulos do =ernel

$ro2.sito + diret.rio /li( cont7m as imagens das (i(liotecas com2artil<adas necess)ria 2ara iniciali,ar o sistema e executar os comandos no sistema de ar8uivos root6 2or meio dos (in)rios em /(in e /s(in. Oe8uisitos $elo menos um de cada um dos seguintes 2adr0es de nome de ar8uivos s-o necess)rios "2odem ser ar8uivos ou linLs sim(.licos%

Ar/uivo libc6so6P ldP

Descrio A (i(lioteca dinTmica ' "o2cional% + linLer "o2cional% em tem2o de execu -o

+2 0es Ks2ec;ficas +s seguintes diret.rios6 ou linLs sim(.licos 2ara diret.rios6 devem a2arecer em /li( se o su(sistema corres2ondente estiver instalado.

Diret;rio modules

Descrio M.dulos do Lernel carreg)veis em tem2o de execu -o "o2cional%

)media@ 4onto de monta em -ara m#dia remov#vel

$ro2.sito Ksse diret.rio cont7m su(diret.rios 8ue s-o usados como 2onto de montagem 2ara m;dia remov;vel como discos flex;veis6 cdrom e 2enEdrives. +2 0es es2ec;ficas +s seguintes diret.rios6 ou linL sim(.licos 2ara diret.rios6 devem constar em /media6 se o su(sistema corres2ondente estiver instalado:

Diret;rio ;lopp! cdrom cdrecorder 8ip

Descrio Misco flex;vel "o2cional% Leitor de cd "o2cional% #ravador de cd "o2cional% ji2 drive "o2cional%

Km sistemas de ar8uivos onde mais de um dis2ositivo existe 2ara um certo ti2o de m;dia6 diret.rios de montagem 2odem ser criados 2ela concatena -o de um d;gito ao nome do 2onto de montagem dis2on;vel "ta(ela acima% comen ado com WJW.

)mnt@ 4onto de monta em -ara sistema de ar/uivos tem-orariamente montado

$ro2.sito Ksse diret.rio 7 dis2oni(ili,ado de maneira 8ue o administrador do sistema 2ossa montar sistemas de ar8uivos tem2orariamente sem2re 8ue necess)rio. + conte?do desse diret.rio 7 um 2ro(lema local e n-o deve afetar o modo de execu -o de 2rogramas. Ksse diret.rio n-o 2ode ser usado 2or 2rogramas de instala -o: um diret.rio tem2or)rio conveniente deve ser usado nesse caso.
)o-t@ 4acotes adicionais de software

$ro2.sito /o2t 7 criado 2ara a instala -o de 2acotes adicionais de 2rogramas. Um 2acote a ser instalado em /o2t deve 2or seus ar8uivos est)ticos se2aradamente em /o2t/b2acLagea6 onde b2acLagea 7 o nome 8ue descreve o 2acote de software.
)root@ Diret;rio %ome do usu.rio root 3o-cional5

$ro2.sito + diret.rio <ome da conta root 2ode ser determinado 2elo desenvolvedor ou 2or 2referFncias locais6 mas essa 7 sua locali,a -o recomendada.
)s0in@ Bin.rios do sistema

$ro2.sito $rogramas usados 2or administradores de sistema "e outros comandos de execu -o 2ermitida somente ao root% s-o arma,enados em /s(in6 /usr/s(in e /usr/local/s(in. /s(in cont7m (in)rios essenciais 2ara a iniciali,a -o6 recu2era -o ou re2aro do sistema al7m dos ar8uivos (in)rios 9) dis2on;veis em /(in. $rogramas executados de2ois da montagem de /usr s-o 2ostos em /usr/s(in. $rogramas de administra -o de sistemas localmente instalados devem ser 2ostos em /usr/local/s(in. Oe8uisitos +s seguintes comandos6 ou linLs sim(.licos 2ara comandos6 s-o exigidos em /s(in.

Comando shutdo%n

Descrio 'omando 2ara desligar o sistema

+2 0es es2ec;ficas +s seguintes ar8uivos6 ou linLs sim(.licos 2ara ar8uivos6 deve a2arecer em /s(in se o su(sistema corres2ondente estiver instalado:

Comando ;astboot ;asthalt ;dis$ ;sc$ ;sc$6P gett! halt i;con;ig init m$;s m$;s6P m$s%ap reboot route s%apon s%apo;;

Descrio Oeiniciali,a o sistema sem c<ecar os discos $ara o sistema sem c<ecar os discos Mani2ula a ta(ela de 2arti 0es '<eca e re2ara sistema de ar8uivos '<eca e re2ara sistema de ar8uivos es2ec;fico $rograma gettH 'omando 2ara 2arar o sistema 'onfigura interface de rede $rocesso inicial 'omando 2ara criar um sistema de ar8uivos 'omando 2ara criar um sistema de ar8uivos es2ec;fico 'omando 2ara a9ustar uma )rea de s!a2 'omando 2ara reiniciali,ar o sistema Da(ela de roteamento I$ [a(ilita a )rea de s!a2 Misa(ilita a )rea de s!a2

Comando update

Descrio Maemon 2ara atuali,ar 2eriodicamente o sistema de ar8uivos

)srv@ Dados -ara servios -rovidos -elo sistema

$ro2.sito /srv cont7m dados es2ec;ficos ao servi os de rede 8ue est-o sendo 2rovidos 2elo sistema.
)tm-@ Ar/uivos tem-or.rios

$ro2.sito + diret.rio /tm2 deve ser dis2oni(ili,ado a 2rogramas 8ue re8ueiram ar8uivos tem2or)rios + 2rogramas n-o 2ode levar em considera -o o fato de 8ue eventuais ar8uivos 2ermane am entre as v)rias c<amadas do mesmo.
)usr

$ro2.sito + /usr 7 a segunda maior se -o do sistema de ar8uivos. /usr 7 com2artil<)vel e somente leitura. Isso significa 8ue /usr deve ser com2artil<)vel entre v)rios com2utadores 8ue atendam a norma F[: e n-o 2ode 2ermitir escrita no mesmo. Rual8uer informa -o 8ue for es2ec;fica ao com2utador ou 8ue varie com o tem2o 7 arma,enado em outro lugar. #randes 2acotes de software n-o devem usar diretamente um su(diret.rio de /usr. Oe8uisitos +s seguintes diret.rios6 ou linLs sim(.licos 2ara diret.rios6 s-o exigidos em /usr.

Diret;rio bin include lib local sbin

Descrio A maioria dos comandos de usu)rio [earders inclu;dos 2or 2rogramas ' 5i(liotecas [ierar8uia local 5in)rios de sistema n-o vitais

Diret;rio share

Descrio Mados inde2endentes de ar8uitetura

+2 0es es2ec;ficas

Diret;rio H11A# games src

Descrio X Xindo!s :Hstem6 vers-o 11 release 1 Vogos e (in)rios educacionais '.digo fonte

)var

$ro2.sito /var cont7m ar8uivos de dados vari)veis. Isso inclui diret.rios s2ool e ar8uivos6 dados administrativos e de log6 ar8uivos transientes e tem2or)rios. Algumas 2or 0es de /var n-o s-o com2artil<)veis entre os diferentes sistemas. $or exem2lo6 /var/log6 /var/locL e /var/run. +utras 2or 0es 2odem ser com2artil<adas6 notavelmente /var/mail6 /var/cac<e/man6 /var/cac<e/fonts e /var/s2ool/ne!s. /var 7 es2ecificado de forma a 2ermitir montar o sistema de ar8uivos /usr somente leitura. Dudo 8ue for 2roveniente de /usr e exigir escrita durante a o2era -o do sistema deve estar em /var. :e /var n-o 2uder ser 2osto em uma 2arti -o se2arada6 7 2refer;vel mover /var da 2arti -o / e 2or na 2arti -o /usr. Kntretanto6 /var n-o deve ser linLada a /usr 2o8ue isso torna a se2ara -o entre /usr e /var mais dif;cil e su9eita o sistema a um conflito de nomes. Km ve, disso6 linL /var a /usr/var. A2lica 0es n-o devem adicionar diret.rios no to2o de /var. Ksses diret.rios deve ser adicionados somente se tiverem im2ortTncia fundamental ao sistema. Oe8uisitos +s seguintes diret.rios6 ou linLs sim(.licos 2ara diret.rios6 s-o exigidos em /var.

Diret;rio cache lib

Descrio 'ac<e de 2rogramas Informa 0es de estado

Diret;rio local loc$ log opt run spool tmp

Descrio Mados vari)veis de /usr/local Ar8uivos locL Ar8uivos de log e diret.rios Mados vari)veis de /o2t Mados im2ortantes 2ara 2rocessos em execu -o :2ool de 2rogramas Ar8uivos tem2or)rios 2reservados entre reiniciali,a 0es

+2 0es es2ec;ficas +s seguintes diret.rios6 ou linLs sim(.licos 2ara diret.rios6 deve estar em /var se o su(sistema corres2ondente estiver instalado:

Diret;rio account crash games mail !p

Descrio Logs de contagem de 2rocessos Mum2s de cras< do sistema Mados vari)veis de 9ogos Ar8uivos de caixas de email de usu)rios Ar8uivos do (anco de dados do NI:

Ar/uivos de Lo
Uma das coisas 8ue o Linux fa, (em 7 documentar cada 2asso 8ue ele d). Isso 7 im2ortante6 es2ecialmente 8uando se considera a infinidade de acontecimentos 2or tr)s da o2era -o de um sistema o2eracional com2lexo. Ps ve,es6 8uando tra(al<aEse com uma nova ferramenta6 ela n-o funciona ade8uadamente nem indica claramente o 2or 8uF da fal<a. +utras ve,es6 vocF 8uer monitorar o seu sistema de maneira e desco(rir se algu7m est) tentando acess)Elo ilegalmente. Km am(os os casos6 vocF 2ode usar ar8uivos de log 2ara a9udar a rastrear o 2ro(lema.

As 2rinci2ais ferramentas 2ara logging de erros e mensagens de de2ura -o s-o os daemons sHslogd e Llogd. + logging geral do sistema 7 feito 2elo sHslogdN Logging 8ue 7 es2ec;fico Bs atividades do Lernel 7 feito 2or Llogd. + logging 7 feito de acordo com as informa 0es de /etc/sHslog.conf. Mensagens s-o ti2icamente direcionadas a ar8uivos de log 8ue est-o usualmente no diret.rio /var/log. Alguns ar8uivos de log s-o:

(oot.log: cont7m as mensagens dos servi os durante a iniciali,a -o do sistemaN messages: cont7m informa 0es gerais relacionadas B o2era -o do sistemaN secure: cont7m mensagens relacionadas B seguran a6 como atividades de loginN Xfree41.J.log ou Xorg.J.log: de2endendo do servidor X 8ue vocF estiver usando6 cont7m mensagens so(re as configura 0es da 2laca de v;deo6 do mouse e do monitor.

Ar/uivos de con*i urao


GocF 2ode es2erar encontrar muitos comandos6 ar8uivos de configura -o e ar8uivos de log nos mesmos lugares em um sistema de ar8uivos6 n-o im2orta 8ue distri(ui -o Linux vocF este9a usando. Ar8uivos de configura -o s-o uma 2e a im2ortante na administra -o de um sistema Linux "e6 7 claro6 na sua o2era -o%. Ruase tudo 8ue vocF a9usta 2ara um com2utador 2articular ] contas de usu)rio6 endere os de rede ou 2referFncias de interface gr)fica ] s-o arma,enados em ar8uivos texto. Ksse 2rocedimento tFm vantagens e disvantagens. As vantagens de ar8uivos texto 7 8ue 7 f)cil lFElos e mud)Elos. Rual8uer editor de texto 2ermitir) reali,ar as altera 0es. $or outro lado6 entretanto6 7 8ue como vocF 2ode editar os ar8uivos de configura -o6 nen<uma c<ecagem de erro 7 reali,ada em 2rimeiro momento. A necess)rio executar o 2rograma e verificar se o mesmo acusar) erros 2or meio mensagens. Uma v;rgula ou as2as no local errado 2ode fa,er com 8ue um sistema inteiro 2are. +s ar8uivos de configura -o ficam confinados ao diret.rios /etc "configura 0es 2ara todo o sistema% e o 2r.2rio diret.rio <ome do usu)rio "configura 0es es2ec;ficas do usu)rio%. A seguir s-o a2resentadas descri 0es de diret.rios " e su(diret.rios% 8ue contFm ar8uivos de configura -o ?teis. +(servar o conte?do de um ar8uivo de configura -o do Linux 2ode ensinar muito a res2eito da administra -o do mesmo.

^[+MK: Dodos os usu)rios arma,enam informa 0es em seu diret.rio <ome 8ue direciona o com2ortamento das contas de login. A maioria dos ar8uivos de configura -o em ^[+MK come am com um 2onto ".% de maneira 8ue ficam ocultos 8uando o usu)rio lista o conte?do desse diret.rio. Kles s-o ar8uivos 2onto "ou ocultos% 8ue definem como o s<ell do usu)rio se com2orta6 a a2arFncia do desLto2 e as o2 0es usadas no editor de texto. [) at7 mesmo ar8uivos como .ss</k e .r<osts 8ue configuram as 2ermiss0es de rede de cada usu)rio. /etc: Ksse diret.rio cont7m as configura 0es mais ()sicas do Linux. /etc/cronk: Miret.rios desse con9unto cont7m ar8uivos 8ue definem como o a2licativo crond executa 2rogramas diariamente "cron.dailH%6 2or <ora "cron.<ourlH%6 mensalmente "cron.mont<lH% ou semanalmente "cron.!eeLlH%. /etc/cu2s: 'ont7m ar8uivos 8ue s-o usados 2ara configurar o servi o 'U$: de

im2ress-o.

/etc/default: 'ont7m ar8uivos 8ue a9ustam valores 2adr-o 2ara v)rias a2lica 0es. $or exem2lo6 o ar8uivo 2ara o comando useradd define o n?mero do gru2o 2adr-o6 diret.rio <ome6 data de validade da sen<a6 s<ell e diret.rios es8ueletos "/etc/sLel% 8ue s-o usado 8uando for criada uma nova conta. /etc/<tt2d: 'ont7m uma variedade de ar8uivos usados 2ara configurar o com2ortamento do servidor A2ac<e. /etc/init.d: 'ont7m c.2ias 2ermanentes dos scri2ts de n;vel de execu -o do estilo :Hstem G. Ksses scri2ts s-o fre8Centemente linLados a ar8uivos nos diret.rios /etc/rcf.d 2ara 8ue cada servi o associado a um scri2t iniciali,e ou 2are 2ara um dado n;vel de execu -o. A f 7 su(stitu;da 2elo n?mero do n;vel de execu -o "J a 1%. /etc/222: 'ont7m v)rios ar8uivos de configura -o usados 2ara a9ustar 2 $$$ "$ointE toE$oint $rotocol% de maneira a 2ermitir 8ue vocF se conecte B Internet usando uma lin<a discada. /etc/rcf.d: [) um diret.rio rcf.d 2ara cada estado v)lido do sistema: rcJ.d "estado de s<utdo!n%6 rc1.d "estado monoEusu)rio%6 rc2.d "estado multiEusu)rio%6 rc&.d "estado multiEusu)rio mais rede%6 rc*.d "estado definido 2elo usu)rio%6 rc/.d "estado multiEusu)rio6 mais rede mais interface gr)fica% e rc1.d "estado de reiniciali,a -o%. /etc/securitH: 'ont7m ar8uivos 8ue a9ustam um con9unto de condi 0es de seguran a 2ara o com2utador. Ksse ar8uivos fa,em 2arte do 2acote 2am "2lugga(le aut<entication modules%. /etc/sLel: Ruais8uer ar8uivos contidos nesse diret.rio s-o automaticamente co2iados 2ara o diret.rio <ome 8uando o usu)rio 7 adicionado ao sistema. $or 2adr-o6 esses ar8uivos s-o ocultos "ar8uivos .%6 como o .Lde "um diret.rio 2ara a9ustar as configura 0es do @MK% e .(as<rc "2ara a9uste de configura 0es do s<ell (as<%. /etc/sHsconfig: 'ont7m ar8uivos de configura -o im2ortantes 8ue s-o criados e mantidos 2or v)rios servi os "incluindo i2ta(les6 sam(a e a maioria dos servi os de rede%. Ksse ar8uivos s-o cr;ticos 2ara as distri(ui 0es Linux 8ue usam ferramentas administrativas com interface gr)fica mas nem sem2re s-o usados em todas as distri(ui 0es. /etc/xinetd.d: 'ont7m um con9unto de ar8uivos6 cada um definindo um servi o de rede 8ue o daemon xinetd escuta em uma 2orta 2articular. Ruando xinetd rece(e um re8uisi -o de dado servi o6 ele usa a informa -o nesses ar8uivos 2ara res2onder B re8uisi -o.

Ar/uivo aliases bashrc crontab csh6cshrc (ou cshrc)

Descrio 'ont7m listas de distri(ui -o usadas 2elo servi o de email do Linux $adr0es 2ara todo o sistema 2ara os usu)rio do s<ell (as< A9usta o am(iente cron e o tem2o de execu -o de tarefas automati,adas $adr0es 2ara todo o sistema 2ara os usu)rio do s<ell cs<

Ar/uivo e7ports

Descrio 'ont7m lista de diret.rios locais cu9o com2artil<amento 7 dis2on;vel 2or meio do Net!orL File :Hstem "NF:% Identifica os dis2ositivos de arma,enamento de dados de massa mais comuns "disco r;gidos6 disco flex;vel6 cdrom etc.% e 2ontos de montagem 2ara o sistema Linux. A usado 2or mout 2ara escol<er 8uais sistemas de ar8uivo o sistema deve montar na iniciali,a -o. Identifica o nome dos gru2os e suas Ids "#IM:% 8ue est-o definidos no sistema. As 2ermiss0es de gru2o no Linux s-o definidas 2elo segundo dos atri(utos de 2ermiss0es r!x "read6 !rite6 execute% (in)rios associados a cada ar8uivo ou diret.rio. 'ont7m s<ado! 2ass!ords 2ara gru2os. A9usta as locali,a 0es em 8ue nomes de dom;nio "2or exem2lo6 red<at.com% s-o (uscadas nas redes D'$/I$ "como a Internet%. $or 2adr-o6 o ar8uivo local <osts 7 (uscado e ent-o o sistema indaga resolvedores de nome em resolv.conf. 'ont7m endere os I$ e nomes de <osts 8ue vocF 2ode alcan ar de seu com2utador. Lista de com2utadores remotos 8ue s-o autori,ados a usar certos servi os D'$/I$ do com2utador local. Lista de com2utadores remotos 8ue n-o s-o autori,ados a usar certos servi os D'$/I$ do com2utador local. 'ont7m informa 0es 8ue definem 8ue 2rogramas iniciam ou 2aram 8uando o Linux iniciali,a6 desliga ou muda de n;vel de execu -o. A o ar8uivo de configura -o mais ()sico 2ara iniciali,ar o Linux. A9usta os 2arTmetros do carregador do Linux "Linux Loader%. Km 2articular6 lista informa 0es so(re 2arti 0es (oot)veis em seu com2utador.

;stab

group

gshado% host6con;

hosts

hosts6allo%

hosts6den!

inittab

lilo6con;

Ar/uivo modules6con;

Descrio 'ont7m aliases e o2 0es relacionadas aos m.dulos do Lernel usados em seu com2utador. 'ont7m uma lista de sistema de ar8uivos 8ue est-o montados no momento. 'ont7m a9ustes 2ara ferramentas do M+: no Linux 'ont7m a9ustes 2ara MN: caso vocF este9a rodando o seu 2r.2rio servidor de MN:. 'ont7m informa 0es necess)rias 2ara executar o Net!orL Dime $rotocol "ND$% Arma,ena informa 0es de conta 2ara todos os usu)rios v)lidos 2ara o sistema. Dam(7m cont7m outras informa 0es6 como o diret.rio <ome e o s<ell 2adr-o. A9usta o am(iente 2ara todo o sistema e 2rogramas usados 2or todos os usu)rios. Ksse ar8uivo 7 lido sem2re 8ue o usu)rio loga. A9usta os n?meros e nomes 2rotocolos 2ara uma variedade servi os de Internet. de de

mtab mtools6con; named6con;

ntp6con; pass%d

pro;ile

protocols

resol:6con;

Identifica as locali,a 0es dos servidores MN: 8ue s-o usado 2elo D'$/I$ 2ara tradu,ir os nomes <ost.domain 2ara n?meros de endere os I$. Mefine servi os D'$/I$ e as associa 0es de 2ortas 2ara os mesmos. 'ont7m as sen<as cifradas 2ara usu)rios 8ue esta0 definidos no ar8uivo 2ass!d. Lista dos inter2retadores de lin<a de comando 8ue est-o dis2on;veis no sistema (em como sua locali,a -o. Mefine 8uais s-o as mensagens de log a serem rastreadas 2elo daemon sHslogd e em 8ue ar8uivos devem ser arma,enadas. 'ont7m informa 0es sim2les de configura -o 2ara o 2rocesso xinetd.

ser:ices shado% shells

s!slog6con;

7inetd6con;

Dis-ositivos
Linux6 como a maioria dos sistemas o2eracionais6 interage com os dis2ositivos de <ard!are 2or meio de com2onentes modulari,ados de sotf!are c<amado device driver. Um device driver esconde as 2eculiaridades dos 2rotocolos de comunica -o do <ard!are do sistema o2eracional e 2ermite o sistema interagir com o dis2ositivo 2or meio de uma interface 2adroni,ada. No Linux6 device drivers s-o 2arte do Lernel e 2odem ser ou linLados estaticamente ao Lernel ou carregados so(re demanda como m.dulos do Lernel. Mevice drivers funcionam como 2arte do Lernel e n-o s-o acess;veis diretamente aos 2rocessos do usu)rio. Kntretanto6 Linux 2ro2orciona um mecanismo 2elo 8ual os 2rocessos 2odem se comunicar com um device driver ] e atrav7s dele com os dis2ositivos de <ard!are ] 2or meio de o(9etos semel<antes a ar8uivos. Ksses o(9etos a2arecem no sistema de ar8uivos e 2rogramas 2odem a(riElos6 lFElos e escrever nos mesmos como se eles fossem ar8uivos normais. Usando o2era 0es de I/+ de (aixo n;vel do Linux ou as o2era 0es de I/+ da (i(lioteca ' 2adr-o6 seus 2rogramas 2odem comunicarEse com os dis2ositivos de <ard!are atrav7s desses o(9etos 8ue funcionam como ar8uivos. Linux tam(7m dis2oni(ili,a v)rios o(9etos do ti2o ar8uivo 8ue 2ermitemEnos comunicarEse diretamente com o Lernel em ve, dos device drivers. Ksses n-o s-o ligados diretamente a dis2ositivos de <ard!areN em ve, disso6 ele dis2oni(ili,a v)rios ti2os de com2ortamentos es2eciali,ados 8ue 2odem ser usados 2or 2rogramas. Di2os de Mis2ositivos Ar8uivos de dis2ositivos n-o s-o ar8uivos comuns ] eles n-o re2resentam regi0es de dados no disco de um sistema. Km ve, disso6 os dados lidos ou escritos em um ar8uivo de dis2ositivo comunicamEse diretamente com o corres2ondente device driver6 e6 da;6 com o dis2ositivo. Ar8uivos de dis2ositivo 2odem ser de dois ti2os:

Um dis2ositivo de caracter re2resenta o dis2ositivo de <ard!are 8ue lF ou escreve um fluxo serial de (Htes. $ortas seriais e 2aralelas6 drives de fita6 dis2ositivos de terminais e 2lacas de som s-o exem2los de dis2ositivos de caracter. Um dis2ositivo de (loco re2resenta um dis2ositivo de <ard!are 8ue lF ou escreve dados em taman<os de (locos fixos. Miferentemente de um dis2ositivo de caracter6 um dis2ositivo de (loco 2ermite acesso aleat.rio aos dados arma,enados em um dis2ositivo. Um disco r;gido 7 um exem2lo de dis2ositivo de (loco.

$rogramas t;2icos raramente ir-o usar dis2ositivos de (locos. #eralmente6 fa,Ese uso de dis2ositivos de caracter. N?meros de dis2ositivo + Linux identifica os dis2ositivos 2or meio de dois nomes: o ma9or device num(er e o minor device num(er. + ma9or num(er es2ecifica a 8ue driver um dis2ositivo corres2onde. A corres2ondFncia entre os ma9or num(ers e os drivers 7 fixa e fa, 2arte dos c.digos fontes do Lernel do Linux. + minor num(er distingue entre os dis2ositivos individuais ou com2onentes individuais controlados 2or um ?nico driver. $or exem2lo6 o dis2ositivo de ma9or & corres2onde ao controlador IMK 2rim)rio do sistema. Um controlador IMK 2ode ter dois dis2ositivos "discos6 fitas ou drives de 'ME O+M% conectados a eleN o dis2ositivo master tem o minor J e o slave tem o minor 1*.

$arti 0es individuais do master s-o re2resentadas 2elos minors 16 26 & ... As 2arti 0es individuais no slave s-o re2resentadas 2elos minors 1/6 116 13 ... Mocumenta -o a res2eito dos n?meros dos dis2ositivos 2odem ser encontradas em /usr/src/linux/Mocumentation/devices.txt. Miret.rio /dev $or conven -o6 um sistema #NU/Linux inclui um diret.rio /dev contendo todas as entradas de dis2ositivos de caracter e (loco 2ara os dis2ositivos 8ue o Linux con<ece. As entradas em /dev tFm nomes 2adroni,ados corres2ondentes aos ma9or e minor dos dis2ositivos. $or exem2lo6 o master do controlador 2rim)rio da IMK 2ossui ma9or e minor & e J e tem o nome 2adr-o /dev/<da. :e o dis2ositivo su2orta 2arti 0es6 a sua 2rimeira 2arti -o tem o minor 1 e tem o nome 2adr-o /dev/<da1. $or exem2lo:

$ ls &l /de:/hda /de:/hda1 br%&r%&&&& 1 root dis$ 3, 0 )a! 5 133< /de:/hda br%&r%&&&& 1 root dis$ 3, 1 )a! 5 133< /de:/hda1 Mis2ositivos es2eciais Linux 2ossui v)rios dis2ositivos de caracter 8ue n-o corres2ondem a dis2ositivos de <ard!are. Dodos eles corres2ondem ao ma9or 16 8ue est) associado B mem.ria do Lernel em ve, de um dis2ositivo de <ard!are. )dev)null Mis2ositivo nulo. Mescarta 8ual8uer dado escrito no mesmo. :e co2iado6 resulta em um ar8uivo va,io. )dev)8ero :tream infinito de ,eros. )dev)*ull Ar8uivo c<eio. )dev)random e )dev)urandom

#erador de n?meros aleat.rios. ioctl ] Interface 2adr-o. A c<amada de sistema ioctl 7 uma interface gen7rica usada 2ara controlar os dis2ositivos de <ard!are. + 2rimeiro argumento 2ara ioctl 7 um descritor de ar8uivo6 8ue deve ser o dis2ositivo 8ue vocF dese9a controlar. + segundo argumento 7 um c.digo 8ue indica a o2era -o 8ue vocF 8uer reali,ar. G)rias o2era 0es est-o dis2on;veis 2ara dis2ositivos diferentes. Me2endendo do c.digo de o2era -o solicitado6 2odem ser exigidos argumentos adicionais a ioctl. Muitos dos c.digos de o2era 0es est-o listados na man de ioctl. Usar ioctl re8uer con<ecimento do device driver corres2ondente ao <ard!are 8ue vocF 8uer controlar.

Um exem2lo 2r)tico:

Ginclude Q;cntl6hR Ginclude Qlinu7/cdrom6hR Ginclude Qs!s/ioctl6hR Ginclude Qs!s/stat6hR Ginclude Qs!s/t!pes6hR Ginclude Qunistd6hR int main (int argc, charP arg:ST) U /P /pen a ;ile descriptor to the de:ice speci;ied on the command line6 P/ int ;d = open (arg:S1T, /9A,/'LD)L /P EIect the .,&A/)6 P/ ioctl (;d, .,A/)E1E.+)L /P .lose the ;ile descriptor6 P/ close (;d)L return 0L
V

A( O0tendo in*orma9es so0re o sistema


Linux6 2or ser um sistema o2eracional a(erto e de m?lti2los 2ro2.sitos6 dis2oni(ili,a uma 8uantidade enorme de informa 0es aos seus usu)rios6 2rogramadores e administradores. A seguir6 mostraremos alguns locais de onde 2odem ser extra;das informa 0es ?teis 8uando se est) desenvolvendo a2lica 0es 2ara o Linux.

"tilidade de )-roc
A maioria das entradas em /2roc gera informa 0es E das mais variadas E formatadas e leg;veis 2or <umanos6 mas o formato 7 t-o sim2les 8ue 2ode ser facilmente inter2retado 2or um 2rograma. $or exem2lo6 /2roc/c2uinfo cont7m informa 0es so(re o 2rocessador "ou 2rocessadores%. A sa;da 7 uma ta(ela de valores6 um 2or lin<a6 com a descri -o do valor e : 2recedendo cada valor. $or exem2lo:

$ cat /proc/cpuin;o processor 0 0 :endor9id 0 Wenuine*ntel cpu ;amil! 0 # model 0 5 model name 0 -entium ** (,eschutes) stepping 0 cpu )H8 0 "0063135 0 cache si8e 0 51 X@ ;di:9bug 0 no hlt9bug 0 no sep9bug 0 no ;00;9bug 0 no coma9bug 0 no ;pu 0 !es ;pu9e7ception 0 !es cpuid le:el 0 %p 0 !es

;lags 0 ;pu :me de pse tsc msr pae mce c7< apic sep mtrr pge mca cmo: pat pse3# mm7 ;7sr bogomips 0 333622

Um 2rograma interessante:

Ginclude Qstdio6hR Ginclude Qstring6hR /P Aeturns the cloc$ speed o; the s!stemYs .-? in )H8, as reported b! /proc/cpuin;o6 /n a multiprocessor machine, returns the speed o; the ;irst .-?6 /n error returns 8ero6 P/ ;loat get9cpu9cloc$9speed () U =*LEP ;pL char bu;;erS10 "TL si8e9t b!tes9readL charP matchL ;loat cloc$9speedL /P Aead the entire contents o; /proc/cpuin;o into the bu;;er6 P/ ;p = ;open (M/proc/cpuin;oO, MrO)L b!tes9read = ;read (bu;;er, 1, si8eo; (bu;;er), ;p)L ;close (;p)L /P @ail i; read ;ailed or i; bu;;er isnYt big enough6 P/ i; (b!tes9read == 0 FF b!tes9read == si8eo; (bu;;er)) return 0L /P '?L&terminate the te7t6 P/ bu;;erSb!tes9readT = Z[0YL /P Locate the line that starts %ith Mcpu )H8O6 P/ match = strstr (bu;;er, Mcpu )H8O)L i; (match == '?LL) return 0L /P -arse the line to e7tract the cloc$ speed6 P/ sscan; (match, Mcpu )H8 0 $;O, \cloc$9speed)L

return cloc$9speedL V int main () U print; (M.-? cloc$ speed0 $"60; )H8[nO, get9cpu9cloc$9speed ())L return 0L V

)-roc@ In*orma9es relativas a -rocessos


+ sistema de ar8uivos /2roc cont7m uma entrada 2ara cada 2rocesso 8ue est) sendo executado no Linux. + nome de cada diret.rio 7 a IM do 2rocesso corres2ondente. Ksses diret.rios a2arecem e desa2arecem dinamicamente B medida 8ue 2rocessos come am e terminam durante a execu -o do sistema. 'ada diret.rio 2ossui v)rias entradas 8ue dis2oni(ili,am informa 0es so(re o 2rocesso em execu -o. 'ada diret.rio de 2rocesso cont7m as seguintes entradas:

cmdline cont7m a lista de argumentos 2ara o 2rocesso. c2d 7 um linL sim(.lico 8ue a2onta 2ara o diret.rio de tra(al<o do 2rocesso. environ cont7m o am(iente do 2rocesso. exe 7 um linL sim(.lico 8ue a2onta 2ara a imagem execut)vel do 2rocesso. *d 7 o su(diret.rio 8ue cont7m entradas 2ara os descritores de ar8uivos a(ertos 2elo 2rocesso. ma-s mostra as informa 0es so(re ar8uivos ma2eados no endere o do 2rocesso. root 7 um linL sim(.lico 2ara o diret.rio root desse 2rocesso. stat cont7m v)rias informa 0es de estado e de estat;sticas so(re o 2rocesso. N-o formatado. statm cont7m informa 0es so(re a mem.ria usada 2elo 2rocesso. status cont7m v)rias informa 0es de estado e de estat;sticas so(re o 2rocesso. Formatado. c-u a2arece a2enas em Lernel 2ara sistemas :M$.

)-roc@ In*orma9es do sistema


Ks2ecificamente6 os seguintes ar8uivos 8ue 2ossuem informa 0es relevantes so(re o sistema. )-roc)c-uin*o: informa 0es so(re o 2rocessador.

)-roc)devices: lista os dis2ositivos dis2on;veis no sistema6 9untamente com o seus minor e ma9or. )-roc)-ci: lista os dis2ositivos anexados ao (arramento $'I. 'art0es $'I e A#$ est-o inclu;dos. )-roc)version: lista as informa 0es de vers-o do Lernel. Dam(7m indica como o Lernel foi constru;do: 8uem o com2ilou6 em 8ue m)8uina6 a data da com2ila -o6 a vers-o do com2ilador. )-roc)sBs)=ernel)%ostname: indica o nome do com2utador. )-roc)sBs)=ernel)domainname: indica o dom;nio do com2utador. )-roc)memin*o: cont7m informa 0es so(re o uso de mem.ria do sistema. :-o a2resentadas informa 0es tanto 2ara a mem.ria f;sica como 2ara a s!a2. )-roc)*ilesBstems: mostra os ti2os de sistemas de ar8uivos con<ecidos estaticamente 2elo Lernel. )-roc)ide: informa 0es so(re as interfaces IMK: )-roc)mounts: sum)rio dos sistemas de ar8uivos montados )-roc)u-time: tem2o de execu -o ininterru2ta desde a ?ltima iniciali,a -o. Um 2rograma interessante:

Ginclude Qstdio6hR /P Summari8e a duration o; time to standard output6 +*)E is the amount o; time, in seconds, and L(@EL is a short descripti:e label6 P/ :oid print9time (charP label, long time) U /P .on:ersion constants6 P/ const long minute = #0L const long hour = minute P #0L const long da! = hour P "L /P -roduce output6 P/ print; (M$s0 $ld da!s, $ld0$0 ld0$0 ld[nO, label, time / da!, (time $ da!) / hour, (time $ hour) / minute, time $ minute)L V int main () U =*LEP ;pL

double uptime, idle9timeL /P Aead the s!stem uptime and accumulated idle time ;rom /proc/uptime6 P/ ;p = ;open (M/proc/uptimeO, MrO)L ;scan; (;p, M$l; $l;[nO, \uptime, \idle9time)L ;close (;p)L /P Summari8e it6 P/ print9time (Muptime M, (long) uptime)L print9time (Midle timeO, (long) idle9time)L return 0L V

C( Instalao -adro de -ro ramas


Dirado de <tt2://(rElinux.org/tutoriais/JJ1S1S.<tml Instalao de -ro ramas no $+")Linux
Por: Pedro Augusto de Oliveira Pereira - pogoslack@bol.com.br A instala -o de a2licativos no #NU/Linux 7 um dos 2ontos 8ue mais causam confus-o nos iniciantes 2or ser um 2ouco diferente. $ara fa,er a instala -o6 n.s temos & o2 0es: o O$M "2ara distri(ui 0es (aseadas na Oed [at como Fedora6 'onectiva%6 a instala -o atrav7s de c.digo fonte "ar8uivos .tar.g,6 .tar.(,26 etc%6 sendo 8ue estes inde2endem de distri(ui -o e o a2tEget6 criado 2ela Me(ian. Gamos tratar cada uma delas se2aradamente 2ara 8ue se 2ossa esclarecer as 2articularidades de cada uma.

Instalao atrav6s de um tar0all


Ksse 7 um dos ti2os de instala -o mais 2o2ulares. A8ui o desenvolvedor em2acota os ar8uivos fonte do 2rograma e os dis2oni(ili,a 2ara do!nload6 9unto com alguns scri2ts 2ara facilitar a instala -o no com2utador do usu)rio. 'omo o desenvolvedor l<e envia os c.digosEfonte dos ar8uivos6 ser) necess)rio com2il)E los 2ara 8ue eles funcionem no seu com2utador. $ara conseguir reali,ar a com2ila -o de 8ual8uer 2rograma no seu sistema6 vocF deve ter os 2acotes de desenvolvimento instalados no seu com2utador "2acotes como a gli(c6 automaLe6 etc%. Falando assim6 2ode 2arecer 8ue instalar a2licativos dessa forma se9a com2licado. A com2ila -o 7 um 2rocesso um tanto 8uanto 2adroni,ado6 ou se9a6 8uase sem2re vocF vai 2recisar digitar os mesmos comandos 2ara instalar 8ual8uer 2rograma. 'ada um desses comandos ser-o ex2licados a(aixoN lem(reEse 8ue todos eles devem ser executados dentro do diret.rio criado 8uando vocF descom2actou o tar(all do 2rograma:

$6/con;igure + ./configure na verdade n-o 7 um comando6 mas sim um s<ell scri2t. Ruando executado6 ele verifica se seu sistema 2ossui tudo o 8ue 7 necess)rio 2ara 8ue o a2licativo 8ue vocF est) 8uerendo instalar se9a executado corretamente6 sem nen<um 2ro(lema. Al7m disso6 ele tam(7m gera um ar8uivo c<amado maLefile. Kste ar8uivo cont7m regras so(re a com2ila -o do 2rograma6 sem este ar8uivo6 o 2r.ximo comando n-o conseguir) executar 2ois n-o ter) id7ia do 8ue ser) necess)rio fa,er.

$ ma$e + maLe usa o maLefile gerado 2elo ./configure 2ara reali,ar a com2ila -o do 2rograma.+ maLefile cont7m instru 0es 2ara 8ue o maLe com2ile tudo o 8ue for necess)rio.

$ ma$e install Kn8uanto o maLe s. com2ila o 2rograma6 o maLe install instala realmente o 2rograma criando os diret.rios necess)rios6 colocando os (in)rios no lugar certo6 etc. Lem(rando 8ue o maLe install 7 o ?nico dos & comandos 8ue re8uer 2ermiss0es de root 2ara ser executado6 9) 8ue este escreve em lugares em 8ue s. o root tem 2ermiss-o. Knt-o6 2ara instalar um 2rograma:

G tar &78:; programa6tar6g8 G cd dirdoprograma G 6/con;igure G ma$e G ma$e install #eralmente6 s-o esses os 2assos executados 2ara 8ue vocF instale um 2rograma a 2artir do c.digo fonte. A ?nica coisa 8ue 2ode variar 7 o nome do scri2t "o 2rimeiro IcomandoI digitado%. Na maior 2arte das ve,es 7 configure6 mas o desenvolvedor 2ode colocar outro nome nele6 como setu26 2or exem2lo. $or isso6 7 muito recomendado 8ue vocF leia o ar8uivo OKAMMK e o ar8uivo IN:DALL 2ara ter instru 0es exatas de como 2roceder 2ara instalar o a2licativo. Me2ois de instalado6 os (in)rios do a2licativo v-o estar em /usr/local/(in. $reste aten -o a um detal<e muito im2ortante: se seu a2licativo s. funcionar em um am(iente es2ec;fico "o @MK6 2or exem2lo% os (in)rios dele v-o 2ara outro diret.rio: /usr/local/Lde/(in. $ortanto6 nunca se es8ue a de adicionar esses diret.rios na vari)vel $AD[ de todos os usu)rios do sistema6 2ara 8ue eles tam(7m 2ossam executar o 2rograma. GocF deve estar 2ensando: I5om instalar 7 f)cil6 mas como eu desinstalo um 2rogramafI. A res2osta: IA mais f)cil ainda\I. GocF sim2lesmente vai ter 8ue voltar ao diret.rio criado 2elo tar(all 8uando este foi descom2actado e digitar:

G ma$e uninstall

R4M
+ O$M "Oed [at $acLage Manager% 7 um dos modos mais inteligentes e f)ceis de se instalar6 desinstalar6 monitorar o 8ue est) instalado6 atuali,ar 2rogramas6 etc. Kle a9uda muito o usu)rio iniciante 2ois 7 muito intuitivo e f)cil de se usar. :er) ex2licado

a8ui como instalar6 desinstalar6 atuali,ar e verificar se algum 2acote est) instalado no seu sistema. Instalando Os pacotes P! s"o arquivos bin#rios pr$-compilados para uma certa distribui%"o. Por isso voc& sempre vai procurar por pacotes P! feitos para a sua distribui%"o. 'm (timo lugar para se encontrar pacotes P! $ nos sites rpm.pbone.net. e www.rpmfind.net. + 2rocesso de instala -o 7 (em f)cil. Gou usar como exem2lo de instala -o o :IM6 um clone do I'R 2ara #NU/Linux. 'om o 2acote em m-os6 v) ao console e digite:

G rpm &i:h sim&0636 &16rh306i3<#6rpm Kx2licando as o2 0es: Ei: instalar Ev: modo ver(ose. 'om esta o2 -o ativada6 o r2m ir) te falar o 8ue est) fa,endo. E<: mostra o 2rogresso da instala -o do 2acote com caracteres c. +2a\ Divemos uma mensagem de erro:

error0 =ailed dependencies0 libsablot6so60 is needed b! sim&0636 &16rh30 sablotron R= 16061 is needed b! sim&0636 6&16rh30 Nesse caso o O$M est) nos di,endo 8ue 2ara o :IM ser executado corretamente ele necessita do 2acote sa(lotron com uma vers-o maior ou igual a 1.J.1. $ortanto6 sim2lesmente 2rocuramos esse 2acote "nesse caso 7 uma (i(lioteca% e o instalamos:

G rpm &i:h sablotron&16061&16rh306i3<#6rpm Me2ois de instalado6 instalamos o 2acote 2rinci2al simEJ.S.2E1.r<SJ.i&41.r2m:

G rpm &i:h sim&0636 &16rh306i3<#6rpm Agora sim conseguimos instalar o :IM. $ara execut)Elo digite IsimI em um terminal Atuali,ando Gamos su2or 8ue6 de2ois de um tem2o6 7 lan ada uma nova vers-o do :IM e n.s

8ueiramos atuali,ar o nosso 2rograma. $ara isso n.s utili,aremos a o2 -o EU6 assim:

G rpm &? sim&76767& 6rh306i3<#6rpm Assim ele vai atuali,ar o :IM automaticamente6 sem ter 8ue desinstalar a vers-o antiga e instalar a nova. Mesinstalando $ara vocF desinstalar um 2acote O$M 8ual8uer6 (asta usar a o2 -o Ee:

G rpm &e sim&76767& 6rh306i3<#6rpm Gerificando 8uais 2acotes est-o instalados $ara vocF 2es8uisar se um certo 2acote est) instalado ou n-o6 vocF 2ode usar a o2 -o E8a. 'om essas o2 0es o sistema O$M vai consultar toda a (ase de dados de 2acotes O$M e l<e mostrar todos os 2acotes O$M 8ue est-o instalados no seu micro. A uma (oa id7ia usar o gre2 2ara consultar um 2acote es2ec;fico:

G rpm &Na F grep pacote Assim6 se o 2acote estiver instalado6 vocF ver) o nome do 2acote como ?nica sa;da do comando. 'aso o O$M n-o ac<e um 2acote com o nome es2ecificado ele sim2lesmente ir) ficar 8uieto6 n-o indicar) nada.

A4TD$ET com su-orte a R4M


'onforme vocF vai usando o sistema O$M vocF vai 2erce(er 8ue ele tem um s7rio 2ro(lema. Muitas ve,es vocF tem 8ue instalar v)rios 2acotes 2ara conseguir fa,er um 2rograma funcionar "esses 2acotes extras s-o c<amados de2endFncias%. A fim de evitar uma 2rocura demorada 2or de2endFncias sem2re 8ue se de9esar instalar uma a2lica -o6 foi criado o sistema A$DE#KD. Kste sistema funciona como o O$M6 mas um 2ouco mais mel<orado. 'om ele vocF 2ode instalar6 desinstalar e atuali,ar 2acotes no seu sistema. Mas a maior vantagem do A$D so(re o O$M 7 8ue ele resolve 2ro(lemas de de2endFncias automaticamente. Assim6 se vocF tentar instalar um 2acote o A$D 9) vai instalar todas as de2endFncias dele automaticamente. $ara instalar o A$D vocF vai 2recisar (aixar o 2acote O$M dele e instal)E lo como foi ex2licado no t.2ico anterior. Me2ois de instal)Elo6 7 <ora de come ar a usar\ Migite Ia2tEget u2dateI 2ara 8ue o a2t atuali,e os 2acotes necess)rios 2or ele. Lem(reE se 8ue neste 2asso vocF tem 8ue estar conectado B Internet.

Me2ois 8ue ele terminar o 2asso anterior6 vocF 9) 2ode come ar a us)E lo 2ara instalar6 desinstalar e atuali,ar seus 2acotes. $ara instalar um 2acote 8ual8uer digite:

G apt&get install pacote 'om o comando acima ele vai instalar o 2acote e 8ual8uer de2endFncia necess)ria. $ara 8ue o a2t c<e8ue 8uais 2acotes est-o desatuali,ados no seu sistema e 9) os atuali,e digite:

G apt&get upgrade $ara remover algum 2acote 9unto com suas de2endFncias6 use:

G apt&get remo:e pacote Dodas as fontes de onde o A$D vai fa,er do!nload est-o descritas no ar8uivo /etc/a2t/sources.list. :e vocF 8uiser adicionar algum lugar de onde o A$D deva fa,er do!nload de algum 2acote6 indi8ueEo nesse ar8uivo. Uma fonte n-o 2recisa necessariamente ser um servidor FD$. GocF 2ode adicionar os 'MEO+Ms da sua distri(ui -o 2ara 2oder instalar os 2acotes contidos neles 2elo A$D. GocF s. vai 2recisar digitar o comando:

G apt&cdrom add :e vocF n-o es2ecificar onde est) o seu drive6 o A$D vai usar as informa 0es contidas no seu ar8uivo /etc/fsta(.

E( !erramentas de desenvolvimento em lin ua em C

Com-ilando com o $CC@


Um com2ilador torna um c.digo leg;vel a um ser <umano em um o(9eto leg;vel a um com2utador6 8ue 2oder) ser executado. +s com2iladores mais comuns do #NU/Linux fa,em 2arte do #NU 'om2iler 'ollection6 vulgo #''. + #'' inclui com2iladores '6 '` `6 Vava6 +(9ectiveE'6 Fortran e '<ill. :u2on<a 8ue vocF tem um 2ro9eto como o a2resentado a(aixo com um c.digo fonte em '`` "reci2rocal.c22% e um c.digo fonte em ' "main.c%. Ksses dois ar8uivos devem ser com2ilados e linLados 2ara 2rodu,ir um 2rograma c<amado reci2rocal. Ksse 2rograma calcular) o inverso de um inteiro. =*> main.c

Ginclude Qstdio6hR Ginclude Mreciprocal6hppO int main (int argc, char PParg:) U int iL i = atoi (arg:S1T)L print; (M+he reciprocal o; ]d is ]g[nO, i, reciprocal (i))L return 0L V

reciprocal.cpp

Ginclude QcassertR Ginclude Mreciprocal6hppO double reciprocal (int i) U // * should be non&8ero6 assert (i J= 0)L

return 160/iL V [) tam(7m um ar8uivo <eader c<amado reci2rocal.<22. reciprocal.hpp

Gi;de; 99cplusplus e7tern M.O U Gendi; e7tern double reciprocal (int i)L Gi;de; 99cplusplus V Gendi; + 2rimeiro 2asso 7 tornar os c.digos ' e '`` em o(9etos.

Com-ilando um Fnico c;di o *onte


+ nome do com2ilador ' 7 gcc. $ara com2ilar um c.digo fonte '6 vocF usa a o2 -o Ec. $or exem2lo6 entrando a lin<a a(aixo no 2rom2t de comando com2ila o c.digo fonte main.c

$ gcc &c main6c + resultado 7 um ar8uivo o(9eto c<amado main.o. + com2ilador '`` 7 c<amado g``. :ua o2era -o 7 semel<ante B do gccN 2ara com2ilar reci2rocal.c22:

$ gEE &c reciprocal6cpp A o2 -o Ec di, ao g`` 2ara com2ilar o 2rograma em um ar8uivo o(9etoN sem isso6 g`` tentaria linLar o 2rograma 2ara 2rodu,ir um execut)vel. Me2ois de digitar esse comando6 vocF ter) um ar8uivo o(9eto c<amado reci2rocal.o. GocF 2recisar) de um 2ar de o2 0es 2ara construir 8ual8uer 2rograma ra,oavelmente grande. A o2 -o EI 7 usada 2ara di,er ao #'' onde 2rocurar 2or ar8uivos <eader. $or

2adr-o6 o #'' ol<a no diret.rio atual e nos diret.rios onde os <eaders 2ara as (i(liotecas 2adr-o est-o instalados. :e vocF 2recisar incluir <eaders de 8ual8uer outra origem6 a o2 -o EI se fa, ?til. $or exem2lo6 su2on<a 8ue seu 2ro9eto tem um diret.rio c<amado src6 2ara c.digos fonte6 e outro c<amado include. GocF 2ode com2ilar reci2rocal.c22 indicando ao g`` 8ue ele deve ol<ar no diret.rio ../include 2ara encontrar reci2rocal.<22:

$ gEE &c &* 66/include reciprocal6cpp Ps ve,es6 vocF dese9ar) definir macros na lin<a de comando. $or exem2lo6 num c.digo 2ara entrega6 vocF n-o dese9aria over<ead de c<ecagem de declara 0es em reci2rocal.c22N isso 7 dis2on;vel a2enas 2ara a9udar a de2urar o 2rograma. A 2oss;vel desligar a c<ecagem definindo a macro NMK5U#. GocF 2ode adicionar ex2licitamente um cdefine a reci2rocal.c226 mas isso exigir) a mudan a do c.digo fonte. A mais sim2les definir NMK5U# na lin<a de comando6 como:

$ gEE &c &, ',E@?W reciprocal6cpp :e vocF 8uiser definir algum valor 2articular a NMK5U#6 vocF 2ode fa,er o seguinte:

$ gEE &c &, ',E@?W=3 reciprocal6cpp :e vocF estiver realmente 2rodu,indo c.digo em larga escala6 talve, se9a interessante 8ue o #'' otimi,e o c.digo de maneira 8ue ele execute de forma mais r)2ida. GocF 2ode conseguir isso usando a o2 -o E+& na lin<a de comando. $or exem2lo:

$ gEE &c &/3 reciprocal6cpp Note 8ue6 com2ilando com otimi,a -o 2ode fa,er o seu 2rograma mais dif;cil de de2urar e 2ode at7 mesmo ocultar alguns erros. GocF 2ode 2assar in?meras o2 0es 2ara o gcc e o g``. A mel<or maneira de o(ter uma lista com2leta de o2 0es 7 usar a documenta -o online.

$ in;o gcc

Lin=ando os o0Getos
Agora 8ue 9) temos maic.c e reci2rocal.c22 com2ilados6 o 2r.ximo 2asso ser) linL)E los. GocF deve sem2re usar o g`` 2ara linLar 2rogramas 8ue usem c.digos em '``6 mesmo 8ue eles conten<am c.digos em '. :e o seu 2rograma tiver a2enas c.digos em '6 vocF 2ode usar o gcc. Mevido ao fato de 8ue o nosso 2rograma tFm c.digos tanto em ' como em '``6 devemos usar o g``:

$ gEE &o reciprocal main6o reciprocal6o A o2 -o Eo d) o nome do ar8uivo a ser gerado como sa;da do 2rocesso de linLagem. Agora6 vocF 2ode rodar reci2rocal:

$ 6/reciprocal 2 +he reciprocal o; 2 is 061" <52 'omo vocF 2ode 2erce(er6 g`` est) linLado estaticamente B (i(lioteca 2adr-o de ' 8ue cont7m a fun -o 2rintf. :e vocF 2recisar linLar outra (i(lioteca6 vocF 2ode es2ecific)Ela com a o2 -o El. No Linux6 os nomes de (i(liotecas come am com li(. $or exem2lo6 a (i(lioteca $AM "$lugga(le Aut<entication Module% 7 c<amada de li(2am.a. $ara linLar com li(2am.a6 use um comando do ti2o:

$ gEE &o reciprocal main6o reciprocal6o &lpam + com2ilador adiciona o 2refixo li( e o sufixo .a. Ma mesma forma 8ue os <eaders6 o linLer 2rocura 2or (i(liotecas em lugares 2adr-o6 incluindo os diret.rios /li( e /usr/li( 8ue contFm as (i(liotecas 2adr0es do sistema. :e vocF 8uiser 8ue o linLer (us8ue outros diret.rios6 use a o2 -o EL6 semel<ante B o2 -o EI. GocF 2ode usar essa lin<a 2ara instruir o com2ilador a 2rocurar 2or (i(liotecas em /usr/local/li(/2am antes de ol<ar em lugares 2adr-o.

$ gEE &o reciprocal main6o reciprocal6o &L/usr/local/lib/pam &lpam Km(ora vocF n-o ten<a 8ue usar a o2 -o EI 2ara fa,er com 8ue o 2re2rocessador (us8ue no diret.rio local6 vocF deve usar a o2 -o EL 2ara fa,er com 8ue o linLer (us8ue no diret.rio local. $or exem2lo6 vocF 2oderia ter usado o seguinte comando 2ara instruir o linLer 2ara 2rocurar 2ela (i(lioteca test no diret.rio atual:

$ gcc &o app app6o &L6 &ltest

Automati8ando o -rocesso com o $+" Ma=e


:e vocF est) acostumado a 2rogramar 2ara o sistema o2eracional Xindo!s6 7 2rov)vel 8ue vocF ten<a usado IMKs "Integrated Mevelo2ment Knvironment% durante suas tarefas de desenvolvimento. GocF 2ode adicionar c.digos fonte ao seu 2ro9eto e 2edir B IMK 2ara contruir seu 2ro9eto automaticamente. A2esar de termos v)rias IMKs dis2on;veis no Linux6 mostraremos como usar o #NU MaLe 2ara recom2ilar automaticamente seu c.digo6 o 8ue 7 am2lamente utili,ado 2ela maioria dos 2rogramadores de <o9e.

A id7ia ()sica 2or tr)s do maLe 7 sim2les. GocF di, ao maLe 8uais s-o os alvos 8ue vocF dese9a construir e d) a ele regras ex2licando como constru;Elos. GocF tam(7m 2ode es2ecificar de2endFncias 8ue indicam como um alvo 2articular deve ser reconstru;do. Km nosso 2ro9eto inicial6 existem dois alvos .(vios: reci2rocal.o6 main.o e o recri2rocal. GocF 9) deve ter em mente algumas regras 2ara construir esses alvos na forma de lin<as de comando. As de2endFncias 2recisam um 2ouco mais de con<ecimento. 'laramente6 reci2rocal de2ende de recri2rocal.o e main.o 2or8ue n-o 7 2oss;vel linLar com2letamente o 2rograma at7 8ue ten<amos constru;do cada um desses o(9etos. +s o(9etos devem ser reconstru;dos sem2re 8ue o c.digo fonte corres2ondente for modificado. [) mais um detal<e 8ue envolve reci2rocal.<22 2ois sem2re 8ue o modificarmos6 a modifica -o deve 2rovocar a reconstru -o do o(9etos 2ois os o(9etos de2endem desse <eader. Al7m dos alvos .(vios6 deve sem2re existir um alvo clean. Ksse alvo remove todos os o(9etos gerados e 2rogramas de maneira 8ue vocF 2ossa recome ar do ,ero. A regra 2ara esse alvo usa o comando rm 2ara remover ar8uivos. GocF 2ode dis2oni(ili,ar toda a informa -o necess)ria a maLe colocandoEa em um ar8uivo c<amado MaLefile. $or exem2lo:

reciprocal0 main6o reciprocal6o gEE $(.=L(WS) &o reciprocal main6o reciprocal6o main6o0 main6c reciprocal6hpp gcc $(.=L(WS) &c main6c reciprocal6o0 reciprocal6cpp reciprocal6hpp gEE $(.=L(WS) &c reciprocal6cpp clean0 rm &; P6o reciprocal 'omo vocF 2ode ver6 os alvos s-o listados na es8uerda6 seguindos 2or : e ent-o s-o indicadas as de2endFncias. A regra 2ara construir cada alvo a2arece na 2r.xima lin<a. A lin<a com a regra deve iniciar com o caracter bDA5a6 caso contr)ria o maLe ficar) confuso. :e vocF remover os o(9etos 8ue vocF tiver constru;do anteriormente6 digite a2enas:

$ ma$e na lin<a de comando e ver) o seguinte:

$ ma$e gcc &c main6c

gEE &c reciprocal6cpp gEE &o reciprocal main6o reciprocal6o GocF 2ode 2erce(er 8ue maLe automaticamente construiu todos os o(9etos e linLouE os. :e vocF mudar o main.c de alguma maneira e digitar maLe novamente6 vocF ver) o seguite:

$ ma$e gcc &c main6c gEE &o reciprocal main6o reciprocal6o 'omo vocF 2ode ver6 o maLe sa(e 8ue deve reconstruir a2enas main.o e relinL)Elo ao 2rograma mas n-o se im2ortou em recom2ilar reci2rocal.c22 2or8ue nen<uma das suas de2endFncias sofreram altera 0es. + ^"'FLA#:% 7 uma vari)vel maLe. GocF 2ode definir essa vari)vel ou no MaLefile ou na lin<a de comando. #NU maLe ir) su(stituir o valor da vari)vel 8uando executar a regra. $or exem2lo6 2ara recom2ilar com a otimi,a -o <a(ilitada:

$ ma$e clean rm &; P6o reciprocal $ ma$e .=L(WS=&/ gcc &/ &c main6c gEE &/ &c reciprocal6cpp gEE &/ &o reciprocal main6o reciprocal6o Note 8ue a flag E+2 foi inserida no lugar de ^"'FLA#:% nas regras. Nessa se -o6 vocF viu como a maioria das ca2acidades ()sicas do maLe. GocF 2oder) encontrar maiores informa 0es na documenta -o so(re o maLe.

De-urando com o $+" De0u

er 3$DB5

+ de(ugger6 ou de2urador6 7 o 2rograma 8ue vocF usa 2ara desco(rir 2or8ue o seu 2rograma n-o est) se com2ortando da maneira es2erada. K ele far) isso in?meras ve,es. + #NU Me(ugger "#M5% 7 um de2urador usado 2ela maioria dos 2rogramadores Linux. GocF 2ode usar o #M5 2ara fa,er um 2asso a 2asso de seu c.digo6 colocar (reaL2oints e examinar o valor de vari)veis locais.

Com-ilando com in*orma9es de De0u

in

$ara usar o #M56 vocF ter) 8ue com2ilar o seu c.digo com informa 0es de de(ugging. $ara fa,er isso6 adicione Eg na lin<a de comando. :e vocF estiver usando um MaLefile como descrito anteriormente6 vocF 2ode a9ustar as 'FLA#: adicionando Eg e executar o maLe:

$ ma$e .=L(WS=&g gcc &g &c main6c gEE &g &c reciprocal6cpp gEE &g &o reciprocal main6o reciprocal6o

Ruando vocF com2ila com Eg6 o com2ilador inclui informa 0es extra nos ar8uivos o(9etos e nos execut)veis. + de2urador usa essa informa -o 2ara desco(rir a 8ue endere os corres2ondem as lin<as dos c.digos fonte e 2ara im2rimir as vari)veis locais etc.

"sando o $DB
GocF 2ode rodar o gd( dessa forma:

$ gdb reciprocal Ruando o gd( iniciali,a6 vocF deve ver o 2rom2t:

(gdb) + 2rimeiro 2asso 7 executar o 2rograma dentro do de2urador. A2enas digite run e os argumentos do 2rograma.

(gdb) run

Starting program0 reciprocal -rogram recei:ed signal S*WSEWB, Segmentation ;ault6 99strtol9internal (nptr=070, endptr=070, base=10, group=0) at strtol6c0 <2

<2 strtol6c0 'o such ;ile or director!6

(gdb) + 2ro(lema a8ui 7 8ue n-o <) c<ecagem de exce 0es n. c.digo de main. + 2rograma es2era um argumento6 mas nesse caso o 2rograma foi invocado sem argumentos. + :I#:K#G indica 8ue ocorreu uma 8ue(ra. #M5 sa(e 8ue a 8ue(ra aconteceu numa fun -o c<amada gstrtolginternal. Kssa fun -o 7 da (i(lioteca 2adr-o ' e a seu fonte n-o foi instalado6 o 8ue 9ustifica o YNo suc< file or directorHZ. GocF 2ode ver a 2il<a usando o comando !<ere:

(gdb) %here G0 99strtol9internal (nptr=070, endptr=070, base=10, group=0) at strtol6c0 <2 G1 07"003#;b# in atoi (nptr=070) at 66/stdlib/stdlib6h0 51 G 07<0"<#3e in main (argc=1, arg:=07b;;;;5e") at main6c0<

GocF 2ode ver 8ue a fun -o main c<amou atoi com um 2onteiro NULL6 8ue gerou todos os 2ro(lemas. GocF 2ode su(ir dois n;veis na 2il<a at7 alcan ar a fun -o main usando o comando u2:

(gdb) up G 07<0"<#3e in main (argc=1, arg:=07b;;;;5e") at main6c0< < i = atoi (arg:S1T)L Note 8ue o gd( 7 ca2a, de encontrar o fonte de main.c e 2ode mostrar o lin<a onde a c<amada errQnea de fun -o ocorreu. GocF 2ode ver o valor das vari)veis usando o comando 2rint:

(gdb) print arg:S1T $ = 070 Isso confirma o 2ro(lema da 2assagem de um 2onteiro NULL 2ara atoi. GocF 2ode inserir um (reaL2oint usando o comando (reaL:

(gdb) brea$ main @rea$point 1 at 07<0"<# e0 ;ile main6c, line <6 Ksse comando 20e um (reaL2oint na 2rimeira lin<a de main. Agora6 tente rodar o 2rograma com um argumento:

(gdb) run 2 Starting program0 reciprocal 2 @rea$point 1, main (argc= , arg:=07b;;;;5e") at main6c0< < i = atoi (arg:S1T)L GocF 2ode ver 8ue o de2urador 2arou no (reaL2oint. GocF 2ode continuar a execu -o usando o comando next:

(gdb) ne7t 3 print; (M+he reciprocal o; $d is $g[nO, i, reciprocal (i))L :e vocF 8uiser ver o 8ue est) acontecendo em reci2rocal6 use o comando ste2

(gdb) step reciprocal (i=2) at reciprocal6cpp0# # assert (i J= 0)L GocF agora est) no cor2o da fun -o reci2rocal.

Sistema de controle de vers9es@ CHS I Concurrent Hersions SBstem Dirado de <tt2://t!iLi.im.uf(a.(r/(in/vie!/#AGOI/Dutorial'G:


+ 'G: ")oncurrent *ersions +ystem% 2ermite 8ue se tra(al<e com diversas vers0es de ar8uivos organi,ados em um diret.rio e locali,ados local ou remotamente6 mantendoE se suas vers0es antigas e os logs de 8uem e 8uando mani2ulou os ar8uivos. A exem2lo de outros soft!ares usados neste 2ro9eto6 o 'G: 2ode ser (aixado gratuitamente e tem o seu c.digo a(erto. Instala -o e configura -o do servidor 'G::

+ 'G: 2ossui alguns m7todos 2ara acessar o servidor 'G: e 8ue devem ser configurados durante a instala -o do 'G: na m)8uina servidora. + 'G: 2ode ser (aixado no seu s;tio oficial citado acima. $ara 2acotes Me(ian (asta a2enas executar o comando:

G apt&get install c:s Assim (asta seguir as telas de configura -o 2ara ter o 2acote 'G: instalado e "o2cionalmente% com o servidor sendo executado. GocF 2oder) a 8ual8uer momento reconfigurar o 'G: executando:

G dp$g&recon;igure c:s Uma (oa documenta -o de referFncia 7 encontrada no 2acote cvsDdoc. 'onfigurando m7todos de acesso ao re2osit.rio + 'G: 7 uma a2lica -o cliente/servidor6 2ossuindo diversas maneiras de fa,er o acesso seu re2osit.rio. Kstes m7todos s-o os seguintes: M7todo local: Acessa o diret.rio do re2osit.rio diretamente no disco local. A vantagem deste m7todo 7 8ue n-o 7 re8uerido nem nome nem sen<a 2ara acesso "vocF 2recisa a2enas ter 2ermiss0es 2ara acesso aos ar8uivos 8ue dese9a tra(al<ar% e tam(7m n-o 7 2reciso nen<uma conex-o de rede. Kste m7todo 7 ideal 2ara tra(al<ar na m)8uina local ou com os ar8uivos administrativos do 'G: existentes no diret.rio 'G:O++D do re2osit.rio. A muito ?til tam(7m 2ara configurar outros m7todos de acesso6 como o 2server. $ara utili,ar o m7todo de acesso local6 (asta definir a vari)vel 'G:O++D da seguinte forma "assumindo 8ue o re2osit.rio este9a instalado em /var/li(/cvs6 2adr-o 2ara o Me(ian%:

$ e7port .BSA//+=/:ar/lib/c:s ou

$ e7port .BSA//+=local0/:ar/lib/c:s Me2ois disso6 (asta utili,ar os comandos normais do cvs sem 2recisar se autenticar no sistema.

M7todo ext: Kste m7todo de acesso l<e 2ermite es2ecificar um 2rograma externo 8ue ser) usado 2ara fa,er uma conex-o remota com o servidor cvs.Kste 2rograma 7 definido na vari)vel 'G:gO:[ e caso n-o ela se9a es2ecificada o 2adr-o 7 rs<. Kste m7todo re8uer 8ue o usu)rio 2ossua um login/sen<a no (anco de dados de autentica -o /etc/2ass!d do servidor de destino. :uas 2ermiss0es de acesso ao 'G: "leitura/grava -o% ser-o as mesmas definidas neste ar8uivo. Mefina a vari)vel 'G:O++D da seguinte forma 2ara utili,ar este m7todo de acesso:

$ e7port .BSA//+=0e7t0QusuarioR^Qser:idorR0caminho9do9repositorio $ c:s login + camin<o 2adr-o do re2osit.rio no Me(ian 7 /var/li(/cvs6 mas nada im2ede 8ue o usu)rio crie um re2osit.rio em 8ual8uer outra 2asta do seu interesse. Kntretanto algumas funcionalidades 2odem ser 2erdidas com o 2rocedimento de colocar o re2osit.rio em outras 2astas. $or exem2lo6 existe um 2acote c<amado cvs2e0 8ue dis2oni(ili,a uma interface !e( 2ara os re2osit.rios da m)8uina. 'aso algu7m use outro local como /<ome/ + m7todo de acesso IextI usa uma conex-o segura 8ue 2ode ser 2or ss% ":ecure :<ell% ou rs% "Oemote :<ell%. + uso mais fre8Cente do ext 7 2ara conex0es seguras feitas via ss<6 e a configura -o 7 feita da seguinte forma:

$ e7port .BS9ASH=ssh $ e7port .BSA//+=0e7t0QusuarioR^Qser:idorR0caminho9do9repositorio $ c:s chec$out

+ acesso via ss< tra, a vantagem de 8ue as sen<as trafegar-o de forma segura via rede6 n-o sendo facilmente ca2turadas 2or sniffers e outros 2rogramas de monitora -o 8ue 2ossam estar instalados na rota entre vocF e o servidor. + acesso de leitura/grava -o do usu)rio6 7 definido de acordo com as 2ermiss0es deste usu)rio no sistema. Uma maneira recomendada 7 definir um gru2o 8ue ter) acesso a grava -o no 'G: e adicionar usu)rios 8ue 2ossam fa,er grava -o neste gru2o 2ara um determinado 2ro9eto ou re2osit.rio6 como 2or exem2lo:

G cho%n root0c:sadmin /:ar/lib/c:s G chmod 225 /:ar/lib/c:s Mesta forma todos os usu)rios ter-o acesso de leitura/escrita ao re2osit.rio local6 o 8ue 2ode n-o ser dese9ado. Usando o ext 7 recomendado a cria -o de mais gru2os 2or

2ro9eto 2ara 8ue usu)rios de outros 2ro9etos n-o deletem ou alterem ar8uivos dos 2ro9etos 8ue n-o l<e envolvem. M7todo -server "2ass!ord server%: Kste 7 um m7todo de acesso remoto 8ue utili,a um (anco de dados de usu)rios sen<as 2ara acesso ao re2osit.rio. A diferen a em rela -o ao m7todo de acesso ext 7 8ue o 2server roda atrav7s de um servidor 2r.2rio na 2orta 2*J1. + acesso dos usu)rios "leitura/grava -o% no re2osit.rio 2ode ser feita tanto atrav7s do (anco de dados de usu)rios do sistema "/etc/2ass!d% como atrav7s de um (anco de dados se2arado 2or re2osit.rio. A grande vantagem deste segundo m7todo 7 8ue cada 2ro9eto 2oder) ter mem(ros com acessos diferenciadosN o mem(ro x 2oder) ter acesso ao 2ro9eto sgml mas n-o ao 2ro9eto focalinuxN ou o usu)rio H 2oder) ter acesso de grava -o "2ara tra(al<ar no 2ro9eto focalinux% mas somente acesso de leitura ao 2ro9eto sgml. Kste 7 o m7todo de acesso 2referido 2ara a cria -o de usu)rios anQnimos "uma ve, 8ue o administrador de um servidor 8ue <os2ede muitos 2ro9etos n-o vai 8uerer a(rir um acesso anQnimo via ext 2ara todos os 2ro9etos%. Dam(7m existe a vantagem 8ue novos mem(ros do 2ro9eto e tarefas administrativas s-o feitas 2or 8ual8uer 2essoa 8ue 2ossua acesso de grava -o aos ar8uivos do re2osit.rio. $ara usar o 'G: configurado 2elo 2server (asta na defini -o da vari)vel 'G:O++D colocar:

$ e7port .BSA//+=0pser:er0QusuarioR^Qser:idorR0caminho9do9respositorio $ c:s login $ c:s chec$out $ c:s 666 $erce(a 8ue 2elo m7todo ext n-o era 2reciso fa,er Icvs loginI6 mas 2elo -server 7 necess)rio6 antes de 8ual8uer outro comando 'G:. A configura -o do servidor 2ara este m7todo 2ode ser selecionada executando o comando a(aixo e selecionando :IM 2ara a o2 -o de 2server.

G dp$g&recon;igure c:s Ksta forma de acesso arma,ena os usu)rios em um (anco de dados 2r.2rio6 n-o re8uerendo a cria -o de contas locais no ar8uivo /etc/2ass!d. $ara criar um servidor deste ti2o siga os seguintes 2rocedimentos:

1. Kx2orte a vari)vel 'G:O++D a2ontando 2ara o re2osit.rio 8ue dese9a configurar


o acesso. 'omo isto 7 uma configura -o administrativa6 assuma o m7todo de acesso local sendo usada 2elo usu)rio administrador do servidor Iex2ort 'G:O++Di/var/li(/cvsI.

2. Kntre &. Kdite

no diret.rio definido no 'G:O++D e entre num su(diret.rio existente c<amado 'G:O++D6 os ar8uivos de configura -o do re2osit.rio se encontram l). o ar8uivo con*i e mude a vari)vel SBstemAut% 2ara no. Isto di, ao servidor 2server n-o usar os ar8uivos de autentica -o do sistema6 mas a inv7s disso usar seu (anco de dados 2r.2rio.

*. 'rie um ar8uivo 2ass!d no diret.rio 'G:O++D o formato deste ar8uivo 7:


usuario0senha0usuario9local Kxem2lo:

gle!dsonm0X3 d$1 3"$0c:suser anon!mous00pooruser +nde:


usuario: Nome da conta de usu)rio 8ue far) acesso ao 'G:. sen<a: :en<a 8ue ser) usada 2elo usu)rio. Kla dever) ser cri2tografada usando o algoritmo crH2t. + comando mL2ass!d sen<a 2ode ser usado 2ara gerar a sen<a cri2tografada. 'aso este cam2o se9a deixado em (ranco6 nen<uma sen<a de usu)rio ser) utili,ada. + utilit)rio mL2ass!d est) 2resente no 2acote !<ois na Me(ian. usuarioglocal: Usu)rio local 8ue ter) suas 2ermiss0es ma2eadas ao usu)rio do 'G:. 'omo a conta de usu)rio do cvs n-o existe no sistema6 7 necess)rio 8ue o sistema ten<a uma maneira de sa(er 8ue n;vel de acesso este usu)rio ter). 'aso n-o crie este usu)rio ou ele se9a inv)lido6 vocF ter) erros do ti2o I: no suc< userI no momento 8ue fi,er o Icvs loginI.

Uma forma segura de se fa,er isto6 7 criar uma conta de usu)rio somente com acesso aos ar8uivos do 'G:6 sem s<ell e sen<a. Isto 2ermitir) ma2ear a UIM/#IM do usu)rio criado com o acesso do 'G: sem com2rometer a seguran a do sistema de ar8uivos. Isto 2ode ser feito atrav7s do seguinte comando:

G adduser &&disabled&pass%ord &&disabled&login usuario A necess)rio es2ecificar um diret.rio <ome do usu)rio6 2ois o servidor cvs 2recisa ter acesso ao ar8uivo /<ome/ 'ertifi8ueEse 8ue o usu)rio local 2ossui 2ermiss0es de grava -o no diret.rio do 'G:6 caso contr)rio ele n-o 2oder) fa,er commits. Lem(reEse 8ue as 2ermiss0es de leitura/grava -o do usu)rio ser-o controladas atrav7s de ar8uivos do 2r.2rio 2server6 mas tam(7m 7 necess)ria a 2ermiss-o de grava -o do usu)rio no re2osit.rio. Isto 2oder) ser feito atrav7s de gru2os de sistema e garante uma du2la camada de seguran a.

1. $ara

dar direito de leitura ao re2osit.rio6 crie um ar8uivo c<amado readers e adicione os nomes de usu)rios 8ue ter-o acesso ao re2osit.rio "um 2or lin<a%. + nome 8ue dever) ser usado 7 o nome do usu)rio de 'G: e n-o do sistema6

segundo o exem2lo: gle!dsonm anon!mous

1. $ara

dar direito de grava -o ao re2osit.rio6 crie um ar8uivo c<amado !riters. :eu formato 7 idFntico ao ar8uivo readers. o acesso a 'G: usando um (anco de dados 2r.2rio est) 2ronto\ (asta dar o commit nos ar8uivos6 adicionar os ar8uivos readers6 !riters e 2ass!d no re2osit.rio 2ara o servidor de 'G: 2ara teElo funcionando. Note 8ue em vers0es mais novas do 'G:6 n-o 7 2oss;vel transferir o ar8uivo 2ass!d via rede6 ent-o ser) necess)rio criaElo manualmente dentro do re2osit.rio do servidor.

2. $ronto6

+ m7todo de acesso do 'G: aos ar8uivos readers e !riters 7 restritiva6 2ortanto se um nome de usu)rio existir no ar8uivo readers e !riters o 8ue valer) ser) o menor n;vel de acesso. Gendo os exem2los acima6 os usu)rios gleHdsonm e anonHmous ter-o somente acesso a leitura do re2osit.rio e outros6 8ue n-o eles6 se estiverem no ar8uivo !riters ter-o acesso de leitura e grava -o. Alguns conceitos:

4roGeto: con9unto de fontes ou documentos6 organi,ados de maneira <ier)r8uica. Re-osit;rio: con9unto l.gico de 2ro9etos.

Iniciando o uso do 'G: 'rie o re2osit.rio

$ m$dir diretorio9do9proIeto/ $ cd diretorio $ c:s init ou

$ cd diretorio9onde9proIeto9:ai9;icar $ c:s init nome9proIeto $ ls nome9proIeto Kx2orte a vari)vel de am(iente 'G:O++D:

$ e7port .BSA//+=diretorio9do9proIeto/

ou

$ e7port .BSA//+=QusuarioR^QmaNuinaR0diretorio9do9proIeto/ +u usa a o2 -o Ed do comando IcvsI:

$ c:s &d SQusuarioR^QmaNuinaR0Tdiretorio9do9proIeto/ Im2ortando os fontes 'aso os fontes do 2ro9eto 9) existam "antes de se criar o re2osit.rio 'G:%6 im2orte seus fontes: Kntre no diret.rio onde se encontra seu 2ro9eto e digite

$ c:s import &m _@re:e ,escri`ao_ nome9do9proIeto desen:ol:edor 'aso n-o se9a utili,ada a o2 -o Em 2ara descrever o 2ro9eto6 o 'G: a(rir) um editor de texto 2ara 8ue isso se9a feito. $egando os ar8uivos "co i checkout%

$ c:s co diretorio9do9proIeto ou

$ c:s co nome9do9proIeto Isso criar) o diret.rio com o nome do re2osit.rio localmente. :e mais de um usu)rio forem tra(al<ar no mesmo 2ro9eto ao mesmo tem2o6 cada um deve rodar esse comando em um diret.rio distinto. :e for um diret.rio num servidor remoto:

$ c:s &d usuario^maNuina0diretorio9do9proIeto co diretorio9do9proIeto $ondo ar8uivos

'aso se9a ar8uivo novo

$ c:s add arNui:o9no:o $ c:s update Muito im-ortante> ainda mais se tratando /ue mais de uma -essoa t. mexendoJ

$ c:s commit Oemovendo ar8uivos

$ c:s remo:e arNui:o $ rm arNui:o $ c:s commit 'aso o 2ro9eto se9a modificado

$ c:s update $ c:s commit $ara manter o +unca es/uecer o cvs update e o cvs commit \\\ '<ecando altera 0es no 2ro9eto $ara acom2an<ar6 durante o desenvolvimento6 a vers-o do ar8uivo 8ue est) sofrendo altera -o6 o 'G: dis20e de um diff . Assim6 o comando: re2osit.rio atuali,ado.

$ c:s di;; verifica e mostra 8uais lin<as de todos os ar8uivos do 2ro9eto sofreram altera -o. $ara c<ecar as altera 0es de um s. ar8uivo:

$ c:s di;; arNui:o +(serva -o final

+ 'G: reali,a um controle muito eficiente de vers0es e 7 ca2a,6 inclusive6 de reali,ar altera 0es no mesmo ar8uivo6 caso duas 2essoas editem o mesmo ar8uivo ao mesmo tem2o. :e <ouver conflito6 entretanto6 o sistema deixar) a decis-o 2ara ser tomada 2elos <umanos. :er) dado um aviso 8ue o mesmo 2onto do ar8uivo foi alterado6 com um log do 8ue foi feito 2or cada usu)rio6 e algu7m vai ter 8ue usar o dicernimento e escol<er 8ual das duas altera 0es dever) ser efetivada.

K( Bi0lio ra*ia
=1> O. :tone6 N. Matt<e!6 ,eginning -inu. Programming6 2nd Kdition6 Xrox6 2JJ1 =2> '. Negus6 -inu. ,ible6 2JJ/ Kdition6 XileH $u(lis<ing6 2JJ/ =&> K. Nemet<6 #. :nHder6 :. :ee(ass6 D. O. [ein6 !anual de Administra%"o do +istema '/01 6 &a edi -o6 5ooLman6 2JJ2 =*> M. Mitc<ell6 V. +ld<am6 A. :amuel6 Advanced -inu. Programming 6 1st Kdition6 Ne! Oiders $u(lis<ing6 2JJ1

Potrebbero piacerti anche