Anda di halaman 1dari 27

Dominando a Linha de Comando Ter fluncia no uso da linha de comando um pr-requisito para qualquer bom administrador.

. Usar o prompt , de certa forma, muito parecido com aparecer uma segunda lngua, onde os comandos equivalem s palavras e a sintaxe e os argumentos usados equivalem gramtica. A nica forma de adquirir um bom vocabulrio e, principalmente, de entender a gramtica estudando, mas, por outro lado, a nica forma de adquirir fluncia realmente falando, o que na nossa analogia equivale a acumular "horas de vo" no uso do terminal. No comeo normal que voc fique catando milho e precise pesquisar e olhar as pginas de manual para se lembrar mesmo dos comandos mais simples, mas, com o tempo, usar o terminal acaba sendo uma coisa to natural quanto falar ou escrever. O importante no desanimar. Este um tutorial de duas partes destinado a servir como uma guia de referncia para o uso da linha de comando e dos utilitrios bsicos de administrao do sistema. Ela no tem o objetivo de esgotar o assunto, mas pode ter certeza que encontrar muitas dicas. Vamos comear com uma reviso dos comandos bsicos do terminal, junto com algumas dicas teis. cd : Possivelmente o comando mais bsico do prompt, permite navegar entre diretrios, como em "cd /etc". Voc pode tanto indicar o caminho completo at o diretrio desejado, como em "cd /var/log/apache2", ou usar caminhos relativos, indicando o destino a partir do diretrio atual. Se voc est dentro da pasta "/etc" e quer acessar a pasta "/etc/bind", precisa digitar apenas "cd bind". Para subir um diretrio, use "cd .." e, para subir dois nveis, use "cd ../..". pwd : Serve apenas para confirmar o diretrio atual. usado sem parmetros, simplesmente "pwd". ls : Lista os arquivos dentro do diretrio atual. Por padro, ele mostra apenas os nomes dos arquivos e no mostra os arquivos ocultos. Para ver tudo, incluindo os arquivos ocultos, use "ls -a", para ver tambm as permisses de acesso e o tamanho dos arquivos, use o "ls -la". Para ver o tamanho dos arquivos especificados de forma legvel ("329M" em vez de "344769698") adicione o parmetro "h", como em "ls -lha". Voc pode ver tambm os arquivos de qualquer diretrio, sem ter que primeiro precisar usar o "cd" para acess-lo. Para isso, basta indicar o diretrio, como "ls -lha /etc". Em muitas distribuies, como no CentOS, o "ls" mostra uma listagem colorida, que torna fcil identificar os arquivos (pastas aparecem em azul, arquivos compactados em vermelho e assim por diante), o que torna mais fcil identificar os arquivos. Para ativar esse recurso em outras distribuies, adicione a linha: alias ls="ls --color=auto" ... no final do arquivo "/etc/profile". Outra personalizao muito usada fazer com que os comandos "rm", "cp" e "mv" peam confirmao, o que reduz a possibilidade de causar danos catastrficos ao digitar comandos incorretos. Para isso, adicione as trs linhas abaixo no final do arquivo "/etc/profile": alias rm="rm -i" alias mv="mv -i" alias cp="cp -i"

cp : O cp um comando aparentemente simples, mas que esconde vrios segredos. A sintaxe bsica para copiar arquivos usar o comando cp, seguido do nome do arquivo e a pasta para onde ele vai, como em "cp /etc/fstab /tmp". Entretanto, em sua forma bsica o cp serve apenas para copiar arquivos isolados; para copiar pastas, necessrio que voc adicione a opo "-r" (que ativa a cpia recursiva), como em "cp -r /home/gdh/* /backup/". Um parmetro bastante til o "-a", que faz com que o cp sempre copie recursivamente, mantenha as permisses do arquivo original e preserve os links simblicos que encontrar pelo caminho. Em resumo, faz o cp se comportar de uma forma mais simples e lgica, por isso voc acaba usando-o quase sempre, em substituio ao "-r", como em: # cp -a /var/www /mnt/sda2/backup/ Voc pode ainda usar o "*" e a "?" como curingas quando quiser copiar vrios arquivos. Para copiar todos os arquivos da pasta atual para a pasta "/mnt/hda6", por exemplo, use "cp * /mnt/hda6". A "?" por sua vez mais contida, substituindo um nico caractere. Por exemplo, "cp arquivo?.txt /mnt/hda6", copia o "arquivo1.txt", "arquivo2.txt" e o "arquivo3.txt", mas no o "arquivo21.txt". mv : O mv serve tanto para mover arquivos de um lugar para o outro, quanto para renomear arquivos, como em: # cd /etc/squid # mv squid.conf squid.conf.modelo rm : Por padro, o rm deleta apenas arquivos simples, como em "rm arquivo.txt". Para que ele remova pastas, necessrio adicionar parmetro "-r", como em "rm -r arquivos/". Em muitas distribuies, o padro do rm pedir confirmao antes de remover cada arquivo, o que se torna invivel ao remover um diretrio com diversos arquivos. A confirmao eliminada ao adicionar o parmetro "-f", o que nos leva ao "rm -rf" (que o formato mais comumente usado). Tome cuidado ao usar o "-rf", pois ele no pede confirmao, deleta os arquivos diretamente. Voc pode muito bem pensar em digitar "rm -rf ./*" (para apagar todos os arquivos do diretrio atual) e, na pressa, acabar digitando "rm -rf /*", que apaga todos os arquivos do sistema, incluindo arquivos em todas as parties e em todos os compartilhamentos de rede que estiverem montados (!). Ou seja, ao us-lo, respire fundo e verifique se realmente est deletando a pasta certa antes de pressionar Enter. possvel tambm usar caracteres curingas na hora de remover arquivos. Para remover todos que possurem a extenso ".jpg", use "rm -f *.jpg". Para remover todos os arquivos que comearem com "img", use "rm -f img*". Lembre-se de que voc pode usar tambm o "?" quando quiser usar o curinga para apenas um caractere especfico. Se voc quiser remover os arquivos "doc1.txt", "doc2.txt" e "doc3.txt", mas sem remover o "doc10.txt" e o "doc11.txt", voc poderia usar o comando "rm -f doc?.txt". mkdir : Cria diretrios, como em "mkdir trabalhos" ou "mkdir /mnt/backup". Para criar pastas recursivamente (ou seja, criar todas as pastas necessrias at chegar a que voc pediu, caso necessrio), adicione o parmetro "-p", como em:

# mkdir -p /var/log/apache2 rmdir : Remove diretrios. A diferena entre ele e o "rm -f" que o rmdir remove apenas diretrios vazios, evitando acidentes. du : O du permite ver uma lista com o espao ocupado por cada pasta dentro do diretrio atual. uma forma rpida de encontrar grandes arquivos ou pastas que esto consumindo muito espao, como no caso de logs no rotacionados que crescem a ponto de ameaarem ocupar todo o espao livre na partio raiz do sistema. man : impossvel para um ser humano (pelo menos para um ser humano normal ;) memorizar todos os parmetros de mais do que um punhado de comandos. Assim como em outras reas, voc memoriza os parmetros que usa com mais freqncia e tem apenas uma vaga noo sobre os demais. O prompt inclui um sistema de ajuda bastante detalhado, acessvel atravs do comando man. No apenas os comandos, mas tambm a grande maioria dos arquivos de configurao possuem pginas de manual com os parmetros suportados. O principal objetivo das pginas de manual listar as opes suportadas e no necessariamente serem uma leitura didtica. Elas so mais teis quando voc j tem uma boa noo sobre o que o comando faz e precisa se lembrar de uma opo especfica do que como um guia de estudos. Para usar, basta chamar o "man" seguido do comando desejado, como em "man ls". Dentro do leitor, use as setas para rolar a tela e, para sair, pressione a tecla "q". Como falei, existem manuais tambm para a muitos dos arquivos de configurao. Experimente usar o "man fstab" ou "man resolv.conf", por exemplo. Um pequeno truque que voc pode salvar o contedo das pginas do man em arquivos de texto (de forma a abri-los em outro editor de texto, ou imprimir), direcionando a sada do comando para o arquivo desejado, como em: $ man ls > ls.txt A seta faz com que a sada do comando seja direcionada, indo para dentro do arquivo em vez de ser exibida na tela. O arquivo automaticamente criado, caso no exista. Ao usar uma nica seta (>) como no exemplo, o contedo do arquivo subscrito, por isso preciso um certo cuidado ao usar. Outra opo usar duas setas (>>), o que faz com que o contedo seja adicionado ao final do arquivo, em vez de substituir o contedo anterior. As setas so exaustivamente usadas em shell scripts, pois permitem direcionar a sada de um comando para o outro, permitindo que eles sejam combinados das mais diversas formas. Devido quantidade de parmetros disponveis, os manuais de muitos programas so muito longos e complicados. Por isso, muitos suportam o parmetro "--help", que exibe uma ajuda resumida, contendo apenas os parmetros mais usados. Experimente, por exemplo, o "ls --help". Se voc quiser apenas uma descrio rpida do que um determinado comando faz, experimente o comando "whatis" (o que ), como em: "whatis ls".

Mais uma variante do man o comando "info", que contm manuais alternativos para muitos comandos. Enquanto os manuais do man so tcnicos, desenvolvidos para serem manuais de referncia, os do info normalmente utilizam uma linguagem mais simples, abordando apenas as opes mais comuns. Nem todos os comandos possuem uma pgina info, mas o nmero vem crescendo. Para us-lo, basta digitar "info comando", como em "info ls". Se por acaso o comando "info" no estiver disponvel, instale-o usando o gerenciador de pacotes, como em "aptget install info". locate : Este outro comando bastante til. Ele permite encontrar arquivos de forma instantnea, servindo como uma espcie de busca indexada. Assim como mecanismos de busca, como o Google, o locate no sai procurando em todo o HD at achar o arquivo que pediu; ele procura apenas dentro de uma base de dados, que contm os nomes de todos os arquivos. Esta base gerada ao rodar o comando "updatedb", que precisa ser executado pelo menos uma vez antes que voc possa us-lo. A vantagem de usar a base de dados que as buscas so instantneas, a desvantagem que voc precisa rodar o updatedb (como root) de vez em quando, a fim de incluir as ltimas modificaes. Para procurar um arquivo, simplesmente use "locate arquivo". Se voc est procurando por um programa, experimente o comando "which", uma variante do locate que mostra apenas executveis. find : O find tambm permite localizar arquivos, mas funciona da forma tradicional, realmente vasculhando os diretrios em busca dos arquivos, ao invs de usar uma base de dados, como o locate. Embora seja lento ao procurar em diretrios com muitos arquivos e subdiretrios, o find eficiente se voc souber previamente onde procurar. Por exemplo, o diretrio "/etc" concentra as configuraes do sistema. Se voc estiver procurando pelo arquivo "smb.conf" (onde armazenada a configurao do Samba), voc poderia ir direto fonte, usando o comando "find /etc -name smb.conf". Note que alm do diretrio onde ele vai procurar (/etc no exemplo), voc deve usar o parmetro "-name" antes de indicar o nome do arquivo que est procurando. Omitindo o diretrio, ele simplesmente procura dentro do diretrio atual. Voc pode tambm fazer buscas por todos os arquivos com uma determinada extenso, como em "find /mnt/hda6 -name *.mp3". su: No Linux, existe uma separao clara entre o root e os demais usurios do sistema. O root o nico que pode alterar a configurao do sistema e usar a maior parte das ferramentas de configurao. Os usurios normais, por sua vez, podem usar os programas instalados e modificar arquivos dentro do seu diretrio home. Esta organizao permite que vrias pessoas usem o mesmo micro (o que vital no caso dos servidores), sem que um possa alterar as configuraes do outro, nem muito menos mudar as configuraes do sistema. O su permite que voc se "promova" a root a qualquer momento. O uso bsico simplesmente digitar "su -", seguido da senha, como em: $ su Password:

O "$" do terminal vira um "#", alertando que a partir da voc tem plenos poderes. Se ao tentar abrir arquivos grficos voc receber uma mensagem dizendo que no possvel se conectar ao X, experimente usar o comando "sux" (se ele no estiver disponvel, instale o pacote "sux") no lugar do su. Ele configura as permisses do servidor X corretamente. sudo : O Ubuntu e outras distribuies derivadas dele utilizam o sudo como um substituto senha de root. Neles, a conta de root vem desativada por padro e voc executa comandos como root incluindo o "sudo" no incio do comando, como em "sudo gedit /etc/fstab". Se preferir voltar ao sistema tradicional, usando o "su -" para se logar como root, basta destravar a conta de root usando o comando "sudo passwd". Assim como outros utilitrios, o sudo possui um arquivo de configurao, o "/etc/sudoers", que permite definir quais usurios podero usar o sudo e dentro de quais limitaes. No Ubuntu, apenas o usurio administrativo criado durante a instalao pode usar o sudo, o que determinado pela linha: %admin ALL=(ALL) ALL ... dentro do arquivo. Isso faz com que todos os usurios do grupo "admin" (que originalmente contm apenas o usurio criado durante a instalao) possam usar o sudo para executar qualquer comando (ALL). Por segurana, o sudo solicita sua senha de usurio ao executar qualquer comando, uma ltima linha de proteo contra a possibilidade de algum usar seu micro quando voc no estiver por perto. Se preferir desativar a verificao, substitua a linha por: %admin ALL=NOPASSWD: ALL Se quiser "promover" outros logins, criados depois da instalao, de forma que eles tambm possam executar comandos usando o sudo, basta adicion-los ao grupo "admin", como em: # adduser gdh admin cat : Alm de permitir ver rapidamente o contedo de um arquivo, como em "cat /etc/fstab", ele tambm pode ser combinado com outros comandos para realizar tarefas mais complexas. Por exemplo, se voc tem um arquivo "boot.img" com a imagem de um disquete de boot, no bastaria simplesmente copiar o arquivo para o disquete com o comando cp; voc precisaria fazer uma cpia bit a bit. Existem vrias formas de fazer isso, mas uma soluo simples seria usar o comando "cat boot.img > /dev/fd0". Neste caso, ele lista o contedo do arquivo, mas ao invs de mostrar na tela ele o escreve no disquete (/dev/fd0). Voc ver muitos usos teis para estes recursos especiais ao estudar sobre shell script. &: No Linux, todos os aplicativos, mesmo os grficos, podem ser chamados a partir de uma janela de terminal. O problema que, ao chamar algum aplicativo, o terminal ficar bloqueado at que o aplicativo seja finalizado, obrigando-lhe a abrir um para cada programa. Acrescentar o & no final do comando, como em "gedit /etc/fstab &" resolve este problema, mantendo o terminal livre. Se voc esquecer de acrescentar ao "&" ao abrir um programa, ainda pode "destravar" o terminal pressionando "Ctrl+Z" (que paralisa o programa e te devolve o controle do terminal) e depois "bg", que reinicia o programa em background.

Alguns aplicativos exibem mensagens diversas e avisos depois de serem abertos, o que "suja" o terminal, mas sem comprometer o que voc est fazendo. Se isto te incomodar, voc pode adicionar um "&>/dev/null" ao comando, o que descarta todas as mensagens, como em: $ konqueror ~ & &>/dev/null O "~" uma varivel do terminal, que representa seu diretrio home. Voc pode us-lo para abreviar comandos: para copiar a pasta "/mnt/sdc1/arquivos" para sua pasta home, voc pode usar "cp -a /mnt/sdc1/arquivos ~", ao invs de digitar "cp -a cp -a /mnt/sdc1/arquivos /home/gdh", por exemplo. head: Este um dos primos do cat, ele permite ver apenas as primeiras linhas do arquivo, ao invs de exibir tudo. Basta especificar o nmero de linhas que devem ser exibidas, como por exemplo "head -20 /var/log/apache2/access.log". Outro parente distante o tail (cauda), que mostra as ltimas linhas do arquivo. O uso o mesmo, basta indicar o nmero de linhas que devem ser mostradas e o nome do arquivo, como em "tail -50 /var/log/squid/access.log". Como pode imaginar, ele muito til para acompanhar arquivos de log, que so atualizados continuamente. Como as novas entradas destes arquivos vo sendo inseridas no final do arquivo, o tail permite verificar rapidamente apenas as novas incluses, sem precisar perder tempo abrindo o arquivo inteiro. Voc pode obter um monitor de logs simples combinando o tail com o comando "watch", que permite executar um comando a cada 2 segundos, atualizando a tela automaticamente. Para acompanhar os logs de acesso do seu servidor web, por exemplo, voc poderia usar: # watch tail -n 20 /var/log/apache2/access.log Para acompanhar os logs do Squid, voc usaria: # watch tail -n 20 /var/log/squid/access.log ... e assim por diante. | (pipe): Junto com as setas de redirecionamento (> e >>), o pipe ( | ) muito usado em scripts e comandos diversos. Ele permite fazer com que a sada de um comando seja enviada para outro ao invs de ser mostrada na tela. Parece uma coisa muito extica, mas acaba sendo incrivelmente til, pois permite "combinar" diversos comandos que originalmente no teriam nenhuma relao entre si, de forma que eles faam alguma coisa especfica. Um dos usos mais corriqueiros usar o pipe e o grep para filtrar a sada de outros comandos, procurando por alguma informao especfica. Imagine por exemplo que voc quer ver todas as entradas referentes a um determinado endereo IP no log do Apache (ou do Squid, ou de qualquer outro servio). Voc pode usar o comando cat para exibir5 o arquivo de log e usar o pipe e o grep para filtrar a sada, de forma que ele exiba apenas linhas contendo algum endereo especfico, como em: # cat /var/log/apache2/access.log | grep 200.101.213.68

Outro exemplo simples: sua placa de rede no est funcionando e voc quer saber se o mdulo de kernel "sis900", que d suporte a ela, est carregado. Voc pode ver os mdulos que esto carregados usando o comando "lsmod", mas a lista um pouco longa. Voc poderia completar o lsmod com "| grep sis900", que vai filtrar usando o grep, mostrando na tela apenas as linhas contendo "sis900". O comando ficaria ento "lsmod | grep sis900". Se no aparecer nada na tela, voc sabe de antemo que o mdulo no est ativo, Neste caso, voc poderia tentar carreg-lo manualmente usando o comando "modprobe sis900", como root. wget : O wget um gerenciador de downloads bastante competente, que oferece um grande volume de opes, todas usadas via linha de comando. Isso o torna ideal para situaes em que voc est acessando um servidor remoto via SSH e precisa baixar um grande arquivo, ou um pacote de instalao. Em vez de primeiro baixar o arquivo para a sua mquina e depois transferilo para o servidor, voc pode fazer com que o arquivo seja baixado diretamente pelo servidor, economizando tempo. O uso mais bsico usar o wget seguido da opo "-c", que faz com que ele continue o download caso interrompido, como em: # wget -c http://download3.vmware.com/software/vmserver/VMware-server-1.0.5-80187.tar.gz Caso a conexo esteja ruim e a transferncia esteja parando freqentemente, voc pode especificar um timeout usando a opo "-T", ela faz com que o wget reinicie a transferncia caso no receba dados dentro do tempo especificando (em segundos), como em: # wget -c -T 30 http://download3.vmware.com/software/vmserver/VMware-server-1.0.580187.tar.gz Uma dica que voc pode selecionar a URL do arquivo a ser baixado na janela do navegador e colar o texto no terminal usando o boto central do mouse. Se voc estiver usando o konsole ou o nome-terminal, voc pode tambm colar o texto da rea de transferncia clicando com o boto direito sobre o terminal e usando a opo "colar". ln : O comando ln permite criar links. Existem dois tipos de links suportados pelo Linux, os hard links e os soft links (tambm chamados de links simblicos) Os soft links so os mais simples e tambm os mais usados, eles desempenham a funo de um atalho simples, que aponta para um arquivo ou pasta. O sistema trata o link da mesma forma que o arquivo, de forma que ao gravar informaes no link, ou acessar seu contedo voc est na verdade trabalhando diretamente no arquivo. A principal exceo que ao mover, deletar ou renomear o link, voc altera apenas o link propriamente dito e no o arquivo. Um soft link um atalho esttico, ao mover ou deletar o arquivo, o link fica quebrado. Os hard links por sua vez so mais intimamente ligados ao arquivo e so alterados junto com ele. Se o arquivo muda de lugar, o link automaticamente atualizado. Isto possvel porque nos sistemas de arquivos usados pelo Linux cada arquivo possui um cdigo de identificao (o inode), que nunca muda. O sistema sabe que o arquivo renomeado o mesmo do atalho simplesmente procurando-o pelo inode ao invs do nome. A grande limitao que os hard links

podem ser criados apenas se o link e o arquivo de destino esto dentro da mesma partio. Este um dos motivos dos links simblicos serem mais usados. Se usado sem argumentos, o comando ln cria um hard link, como em: $ ln /var/www/gdhpress/arquivo /home/gdhpress/arquivo Para criar um link simblico, acrescente o argumento "-s", como em: $ ln -s /var/www/gdhpress/html/ /home/gdhpress/html Voc ver muitos links espalhados pela estrutura de diretrios do Linux, um recurso muito usado quando os arquivos de sistemas mudam de lugar numa nova verso. Mantendo um link na localizao antiga, todos os programas antigos continuam funcionando. tar : O comando tar pode ser usado para empacotar, compactar e descompactar arquivos, por isso ele acaba sendo uma ferramenta extremamente usada. Por exemplo, para descompactar um arquivo com a extenso .tar.gz, pelo terminal, voc usaria o comando: $ tar -zxvf arquivo.tar.gz Aqui o "tar" o comando e o "-zxvf" so parmetros passados para ele. O tar permite tanto compactar quanto descompactar arquivos e pode trabalhar com muitos formatos de arquivos diferentes, por isso necessrio especificar que ele deve descompactar o arquivo (-x) e que o arquivo est comprimido no formato gzip (z). O "v" na verdade opcional, ele ativa o modo verbose, onde ele lista na tela os arquivos extrados e para onde foram. Se voc tivesse em mos um arquivo .tar.bz2 (que usa o bzip2, um formato de compactao diferente do gzip), mudaria a primeira letra dos parmetros, que passaria a ser "j", indicando o formato, como em: $ tar -jxvf arquivo.tar.bz2 O tar permite tambm compactar arquivos e pastas diretamente atravs do terminal. Nesse caso, trocamos a opo "x" (extract) por "c" (create) e passamos a indicar o arquivo que ser criado e a pasta ou arquivo que ser comprimido, como em: $ tar -zcvf backup.tar.gz /var/www/gdhpress Nesse exemplo, criamos o arquivo "backup.tar.gz" incluindo o contedo da pasta especificada. O formato do arquivo no indicado pela extenso, mas sim pelo parmetro "z" includo no comando. Se voc preferir compactar a pasta usando o bzip2, que mais demorado, mas em compensao resulta em arquivos menores, pode substituir o "z" por "j", como em: $ tar -jcvf backup.tar.gz /var/www/gdhpress

Histrico: O terminal mantm um histrico dos ltimos 500 comandos digitados, que salvo automaticamente no arquivo ".bash_history", dentro do diretrio home. Para repetir um comando recente, simplesmente pressione as setas para cima ou para baixo at encontr-lo. Para exibir a lista dos comandos anteriores, use o comando "history", como em: # history 1 joe /etc/init.d/firewall 2 echo 1 > /proc/sys/net/ipv4/tcp_syncookies 3 apt-get install postfix 4 joe /etc/postfix/main.cf 5 tail -n 30 /var/log/apache2/access.log Como voc pode ver, os comandos so numerados, de acordo com a ordem em que foram digitados. Inicialmente a lista ser pequena, mas com o tempo ela acumular vrias dezenas de comandos. Um recurso interessante a possibilidade de re-executar qualquer comando da lista chamando-o pelo nmero, basta usar uma exclamao seguida pelo nmero com o qual o comando aparece na lista (sem espao, como em "!23" ou "!4"). Se quisesse executar novamente o comando "echo 1 > /proc/sys/net/ipv4/tcp_syncookies" que aparece como nmero 2 da lista, por exemplo, usaria: # !2 Como pode ver, o histrico uma ferramenta bastante til para lembrar e executar rapidamente comandos muito longos, ou comandos que voc executa com freqncia. Voc pode tambm fazer buscas usando o pipe e o grep como em "history | grep cp" (que mostra todas as entradas onde foi usado o comando cp) ou "history | grep apt-get" (que mostra todos os comandos onde foi usado o apt-get). Ponto e vrgula: Voc tambm pode executar uma fila de comandos de uma vez. Basta separlos por ponto e vrgula, como em "ls; pwd" ou "cd /mnt/arquivos; ls". O ponto e vrgula permite tambm que voc agrupe diversos comandos, de forma que eles sejam executados em ordem. Se voc precisa baixar 3 arquivos ISOs, por exemplo, voc pode agrupar 3 comandos do wget, cada um com um dos arquivos em uma nica linha, separados por ponto e vrgula, como em: $ wget -c http://url/cd1.iso; wget http://url/cd2.iso; wget http://url/cd3.iso Com isso, os 3 arquivos so baixados seqencialmente, sem necessidade de interveno. Case Sensitive: Salvo poucas excees, todos os comandos e parmetros dentro de arquivos de configurao so case-sensitive, ou seja, precisam ser digitados literalmente, respeitando as maisculas e minsculas. Na maioria dos casos, tantos os comandos quanto os parmetros suportados por eles utilizam letras minsculas, mas existem excees, como no caso do comando "MySecureShell" (um shell alternativo para download de arquivos), que precisa ser digitado assim mesmo, com o M e os

dois S maisculos. Existem ainda muitos casos de comandos que suportam parmetros com letras maisculas e minsculas, com resultados diferentes. O comando "ls -s", por exemplo, mostra o tamanho dos arquivos na listagem, enquanto o "ls -S" mostra os arquivos organizados por tamanho (o maior primeiro). Existe um nmero grande demais de exemplos para citar aqui, o importante ter em mente que eles existem. reboot: Reinicia o sistema. Faz par com o halt, que faz o desligamento completo. De uma forma geral, voc nunca deve usar o comando "halt" em um servidor remoto, pelo simples fato de que voc precisar de algum no local para lig-lo novamente depois. Nos poucos casos em que realmente necessrio reiniciar o sistema (como ao atualizar o kernel), use sempre o reboot. shutdown: Tambm serve para desligar ou reiniciar o sistema, mas permite que voc especifique um horrio. bastante til no caso dos servidores, pois permite que voc agende os reboots do sistema, fazendo-os em horrios de baixa demanda. Especifique um tempo em minutos que o sistema esperar antes de desligar, usando o parmetro "+" como em shutdown -r +60. Voc pode ainda especificar um horrio, no formato hh:mm como em shutdown -r +06:00 (para desligar s 6:00 da manh). Substitua o "-r" por "-h" se quiser desligar o sistema em vez de reiniciar. Atalhos : Finalizando esta seo de dicas iniciais, aqui vai uma pequena lista de atalhos teis: Ctrl+L : Limpa a tela, atalho para o comando "clear". Ao usar bastante o terminal, voc acaba se acostumando a us-lo bastante. Ctrl+C : Este um dos atalhos mais usados no terminal, ele serve para terminar a execuo de qualquer comando. Se voc digitou um "tar -zcvf arquivos.tar.gz /mnt/arquivos" e quer abortar o backup para faz-lo em outra hora, ou se algum programa bloqueou o teclado e voc quer finaliz-lo na marra, o Ctrl+C a soluo. CTRL+L : Atalho para o comando logout, que encerra a sesso atual. Se voc usou o comando "su -" para virar root, o Ctrl+L vai faz-lo voltar ao prompt inicial. Pressionando Ctrl+L mais uma vez, voc faz logout, fechando o terminal. Ctrl+Alt+Del: Na maioria das distribuies, o Ctrl+Alt+Del um atalho para o comando "reboot", que reinicia o sistema. Entretanto, ele s funciona se usado em um dos terminais de texto puro. Se usado dentro do modo grfico, o atalho lido gerenciador, que provavelmente mostrar a opo de fazer logout. Um dos recursos mais teis do terminal o uso da tecla TAB para completar comandos, o famoso bash_completion, ou auto-completar. Pressionando a tecla TAB uma vez o interpretador tenta completar o comando automaticamente e, se houver mais de uma possibilidade, o segundo toque faz com que ele liste as opes. Usar a tecla TAB no ajuda apenas a reduzir o volume de teclas digitadas e assim reduzir o tempo necessrio para digitar os comandos, mas tambm ajuda voc a se lembrar de comandos que no usa com freqncia e reduz os erros de digitao.

Por estranho que possa parecer, este recurso to til vem desativado na maioria das distribuies, mas ativ-lo bastante simples; basta adicionar a seguinte linha no arquivo "/etc/profile": [ "$PS1" -a -f /etc/bash_completion ] && . /etc/bash_completion. Naturalmente, para que a linha funcione, necessrio que o arquivo "/etc/bash_completion" esteja presente. Na maioria das distribuies, ele faz parte do pacote do bash, o que faz com que j venha pr-instalado e pronto para usar, mas existem algumas excees notveis, como no caso do CentOS. (Nesses casos, baixe o arquivo .tar.gz no http://freshmeat.net/projects/bashcompletion/, descompacte e copie o arquivo manualmente para a pasta /etc.) Path: Por padro, o sistema procura por comandos a executar apenas dentro de algumas pastas especficas. Este conjunto de pastas chamado de "PATH" e armazenado em uma varivel de sistema com o mesmo nome. Voc pode ver a lista usando o comando: $ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games . A pasta "/bin" contm utilitrios bsicos do sistema, como os comandos cat, cp, mv e rm. A maioria dos executveis de programas instalados vo para a pasta "/usr/bin", incluindo programas. Se voc executar o mesmo comando como root, voc vai ver que a lista de pastas um pouco diferente: $ su - # echo $PATH usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin. Como voc pode ver, o PATH do root inclui tambm os diretrios "/usr/sbin" e "/usr/local/sbin". Estas duas pastas so reservadas a comandos que podem ser executados apenas pelo root. Se voc tentar executar qualquer comando que no esteja em uma das pastas listadas no PATH, receber um "command not found", mesmo que o arquivo esteja dentro da pasta atual. Nesse caso, necessrio especificar o caminho completo para o arquivo, como em: # /home/root/NVIDIA-Linux-x86-1.0-9746-pkg1.run Se o arquivo estiver dentro do diretrio atual, voc pode execut-lo incluindo um "./" (que indica o diretrio atual), como em: # ./NVIDIA-Linux-x86-1.0-9746-pkg1.run Se, ao tentar executar o arquivo voc receber um "Permission denied" (mesmo como root), falta marcar a permisso de execuo do arquivo. Por padro, qualquer arquivo baixado ou copiado de outro lugar criado com a permisso de execuo desmarcada, de forma a evitar acidentes. Voc precisa ativ-la manualmente antes de executar, como em: # chmod +x NVIDIA-Linux-x86-1.0-9746-pkg1.run Ao trabalhar com a configurao manual dos servios, o editor de textos acaba sendo sua principal ferramenta de trabalho. Existem inmeros editores de texto no Linux, boa parte deles

so voltados para programao, com suporte a reconhecimento de sintaxe e diversas outras funes teis para programao, mas tambm existem editores mais simples, destinados a quem quer simplesmente editar e salvar arquivos de texto, sem muita firula. Alguns exemplos de editores grficos comumente usados so o kedit e kwrite no KDE, e o gedit no Gnome. O grande problema com eles que eles so ferramentas grficas, que no estaro disponveis quando voc estiver configurando um servidor sem o ambiente grpafio instalado via SSH. Chegamos ento aos editores de texto puro, como o joe, nano, mcedit e o vi. Em qualquer um deles, a sintaxe bsica o comando do editor seguido pelo arquivo que deseja editar, como em: # joe /etc/fstab O mais simples o mcedit. Ele faz parte do pacote "mc", que encontrado em todas as distribuies. Ele normalmente no vem instalado por padro, mas voc resolve isso rapidamente instalando o pacote manualmente, como em: # apt-get install mc No mcedit as funes so acessadas usando as teclas F1 a F10, com uma legenda mostrada na parte inferior da tela. Para salvar voc pressiona F2 e para sair, F10. Ele provavelmente o editor mais fcil de usar, a grande limitao que ele no permite que voc cole texto de outras janelas usando o boto do meio do mouse, um recurso extremamente til ao copiar exemplos e modelos de configurao. O joe um meio termo. Ele um editor simples e leve, muito parecido com o antigo Wordstar do DOS e usa as mesmas teclas de atalho que ele. Para salvar o arquivo e sair, voc pressiona "Ctrl+K" e depois "X", para salvar sem sair o atalho "Ctrl+K" seguido de "D". Para sair descartando as alteraes, pressione "Ctrl+C", para abrir a janela de ajuda, com os atalhos para as demais funes pressione "Ctrl+K", "H" e, novamente "Ctrl+K", "H" para fech-la. O nano outro editor de texto simples e leve, da o nome. Para salvar e sair, pressione "Ctrl+X", depois "S" e Enter, para sair sem salvar pressione "Ctrl+X" e "N" e, para apenas salvar, use o "Ctrl+O". Assim como o mcedit, o joe e o nano no vm pr-instalados na maioria das distribuies, mas voc pode instal-los rapidamente usando o gerenciador de pacotes, como em: # apt-get install joe nano Finalmente, temos o vi, que por algum motivo conquistou um grupo de usurios fiis ao longo de seus quase 30 anos de vida e, graas eles, continua vivo at hoje, muito embora seja um dos editores menos amigveis. O vi tem trs modos de operao: comando, edio e o modo ex. Ao abrir o programa, voc estar em modo de comando; para comear a editar o texto, pressione a tecla "i". A partir da, ele funciona como um editor de textos normal, onde o Enter insere uma nova linha, as setas movem o cursor, etc.

Quando terminar de editar o arquivo, pressione "Esc" para voltar ao modo de comando e em seguida "ZZ" (dois Z maisculos) para salvar o arquivo e sair. Para sair sem salvar pressione Esc e digite ":q!" (exatamente como aqui, dois pontos, qu, exclamao, seguido de Enter). Uma segunda opo para salvar e sair pressionar Esc seguido de ":wq". Para apenas salvar, sem sair, pressione Esc seguido de ":w" e para sair sem salvar use o Esc seguido de ":q!". Resumindo, o Esc faz com que o vi volte ao modo de comando, o ":" nos coloca no modo ex, onde podemos salvar e fechar, entre outras funes. O "q" fecha o programa, o "w" salva o arquivo e o "!" uma confirmao. Embora no seja exatamente pequeno (se comparado a editores mais simples, como o joe ou o nano), muito menos fcil de usar, o vi praticamente o nico editor que pode ser encontrado em qualquer distribuio. Uma observao que o Debian o Ubuntu e outras distribuies derivadas deles utilizam o nvi como editor padro, no lugar do vi tradicional. Ele se comporta de forma estranha e bastante improdutivo. Se voc gosta do vi, recomendo que instale o vim, que a verso completa do editor: # apt-get install vim Continuando, ao sair do editor, volta para o terminal. Voc pode verificar se o arquivo realmente foi salvo corretamente usando o cat, como em "cat /etc/fstab". No caso de arquivos longos, acrescente "| more", que permite ler uma pgina de cada vez, como em "cat /var/log/syslog | more". O horrio do sistema mais uma configurao importante em um servidor, j que ele usado nos logs gerados, nos atributos dos arquivos e assim por diante. Se o relgio do servidor est errado, todos os logs sero gerados com horrios incorretos, sem falar nos horrios dos e-mails enviados atravs do servidor e de diversos outros problemas. A questo do horrio to importante que existe um protocolo de rede destinado a solucionar o problema, o NTP (Network Time Protocol). Para us-lo, o primeiro passo verificar se os pacotes "ntp" e "ntpdate" esto instalados no sistema. Nas distribuies derivadas do Debian, voc pode instal-los rapidamente usando o apt-get: # apt-get install ntp ntpdate No Fedora e no CentOS o pacote "ntp" vem instalado por padro, mas em caso de dvida voc pode verificar a instalao usando o yum. Uma vez instalado, o ntp passa a ajustar o relgio do sistema de forma transparente, mantendo o relgio sincronizado em relao aos servidores especificados no arquivo "/etc/ntp.conf". Voc pode checar o horrio do sistema usando o comando date: # date Thu Jun 19 14:26:37 BRT 2008

Devido forma como trabalha, ajustando o relgio de forma suave, poucos segundos de cada vez, o NTP destinado a manter o horrio sincronizado, mas no a acertar o relgio do sistema em caso de grandes atrasos. Esta funo reservada ao comando "ntpdate", que ajusta o relgio "na marra", independentemente de quo grande seja o atraso: # ntpdate -u pool.ntp.org A opo "-u" faz com que ele utilize uma porta UDP alta, evitando que voc precise manter a porta 123 aberta no firewall e o "pool.ntp.org" um servidor pblico, que encaminha a sua requisio a algum servidor geograficamente prximo. Voc pode especificar outro servidor diretamente se preferir. Se o horrio aparecer atrasado ou adiantado em algumas horas, sinal de que o fuso-horrio do sistema no foi definido corretamente. Nesse caso, ajuste a configurao usando o comando "tzselect", tambm executado como root. Se o servidor utiliza o horrio de Braslia (UTC -3), por exemplo, voc usaria as opes "2) Americas > 9) Brazil > 8) S & SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)". Embora desenvolvido de forma independente, o Linux um sistema Unix, que herda os recursos multiusurio desenvolvidos desde os primeiros sistemas Unix, usados nas dcadas de 70 e 80. Isso permite que o sistema seja usado por inmeros usurios simultaneamente, sem que um atrapalhe as atividades do outro, nem que possa alterar seus arquivos. Dois exemplos extremos seriam um servidor LTSP, onde dezenas de usurios podem rodar aplicativos simultaneamente, via rede, atravs de terminais burros conectados ao servidor principal, e um servidor web de shared hosting, que pode hospedar milhares de sites diferentes, cada um administrado por um usurio diferente. As restries bsicas de acesso so implementadas atravs de um sistema de permisses simples, porm eficiente, que consiste num conjunto de trs permisses de acesso (ler, gravar e executar) e trs grupos (dono, grupo e outros), que combinadas permitem fazer muita coisa. Os dois comandos mais bsicos so o "adduser" e o "passwd", que permitem, respectivamente adicionar novos usurios e alterar as senhas de acesso posteriormente, como em: # adduser joao (cria o usurio joao, especificando uma senha inicial) # passwd joao (altera a senha posteriormente) O prprio usurio pode alterar a senha usando o comando "passwd", desde que ele saiba a senha antiga. Se o usurio esqueceu a senha, voc pode definir uma nova executando o comando como root; nesse caso o sistema pede a nova senha diretamente, sem solicitar a senha antiga.

Os usurios so cadastrados no sistema atravs do arquivo "/etc/passwd". Se tiver curiosidade em olhar dentro do arquivo voc ver uma entrada para cada usurio, incluindo o diretrio home e o shell usado, como em: joao:x:1001:1001:,,,:/home/joao:/bin/bash Assim como qualquer outro arquivo de configurao, o "/etc/passwd" pode ser editado manualmente, ou com a ajuda do comando "usermod". Existem diversas situaes em que voc pode desejar trocar o shell padro ou o diretrio home do usurio, de forma a limitar o acesso ao servidor. Em um servidor web compartilhado por muitos usurios, por exemplo, o diretrio home de cada usurio seria a pasta contendo os arquivos do site, e o shell padro seria um aplicativo como o MySecureShell, destinado a limitar o acesso do usurio a esta pasta especfica. Bem antigamente, as senhas eram salvas no prprio arquivo "/etc/passwd", juntamente com as demais informaes, o que abria brecha para diversos tipos de ataques. A partir de um certo ponto (por volta de 1996) todas as distribuies passaram a utilizar o sistema shadow, onde as senhas so armazenadas de forma encriptada em um arquivo separado, o "/etc/shadow". Dentro do arquivo voc ver entradas contendo a senha encriptada, como em: joao:$1$LpQPRMC5$eHXLjiW7ks80LQcepW0Rz.:13993:0:99999:7::: As senhas so encriptadas usando um algoritmo de mo nica, que permite apenas encriptar as senhas, mas no recuper-las. Durante o login, o sistema aplica o mesmo algoritmo senha digitada pelo usurio e compara a string resultante com a armazenada no arquivo. Se o resultado for o mesmo, o sistema sabe que a senha confere e o acesso autorizado. Este sistema faz com que as senhas no sejam recuperveis, j que a senha propriamente dita no salva em lugar nenhum. Se o usurio esqueceu a senha, voc pode usar (como root) o comando "passwd" para definir uma nova, mas no possvel recuperar a senha antiga. Continuando, para remover um usurio anteriormente criado, utilize o comando "deluser", como em: # deluser joao Por questo de segurana, o comando remove apenas a conta, sem apagar o diretrio home, ou outras pastas (como o diretrio de spool dos e-mails). O diretrio home especialmente importante, pois ele guarda todas as configuraes e os arquivos do usurio, de forma que em um servidor voc s deve remov-lo depois de ter realmente certeza do que est fazendo. Para remover o usurio apagando tambm o diretrio home, adicione o parmetro "--remove-home", como em: # deluser joao --remove-home Como comentei, o diretrio home importante, por concentrar todos os arquivos do usurio. Uma opo saudvel ao remov-lo criar um backup, de forma que voc possa restaur-lo mais tarde caso necessrio. Para isso, use a opo "--backup", que cria um arquivo compactado, contendo os arquivos do usurio, salvo no diretrio onde o comando for executado:

# deluser joao --remove-home --backup Se executasse o comando "ls" depois de remover o usurio "joao" usando a opo de backup, veria que foi criado o arquivo "joao.tar.bz2", referente ao backup. Voc tambm pode bloquear temporariamente um usurio, sem remover o home ou qualquer outro arquivo usando o comando "passwd -l", como em: # passwd -l joao O "passwd -l" realmente trava a conta, fazendo com que o sistema passe a recursar qualquer senha inserida na hora do login. Para desbloquear a conta posteriormente, use o "passwd -u", como em: # passwd -u joao O Fedora e o CentOS incluem o system-config-users, um utilitrio grfico de administrao de usurios. Uma verso levemente modificada dele pode ser encontrada no Ubuntu e em outras verses baseadas no Debian, na forma do "users-admin", que faz parte do pacote "gnomesystem-tools". Alm da configurao dos usurios, temos a configurao dos grupos, que permitem organizar os usurios, definindo as permisses de acesso de forma mais granular. Imagine um caso em que voc tenha um servidor compartilhado entre vrios usurios, onde apenas trs deles, "maria", "jose" e "joao" devem ter acesso pasta "/var/www/intranet", que contm os arquivos do site interno da empresa. Uma forma simples fazer isso criar um grupo, adicionar os trs usurios ao grupo e ajustar as permisses da pasta de forma que o grupo tenha permisso de escrita. Para adicionar o grupo, usamos o comando "groupadd", como em: # groupadd intranet Para adicionar os usurios desejados ao grupo, usamos o prprio comando "adduser", seguido pelo login e o grupo ao qual ele deve ser adicionado (um de cada vez), como em: # adduser maria intranet No CentOS e em outras distribuies derivadas do Red Hat, o comando "adduser" um link para o comando "useradd", que no suporta essa opo. No caso delas, usamos o comando "usermod -a -G", seguido do usurio e do grupo ao qual ele ser adicionado, como em: # usermod -a -G maria intranet Se voc est usando o system-config-users, ou o users-admin, pode tambm adicionar os usurios ao grupo acessando as propriedades do grupo:

Existem algumas outras pequenas diferenas entre as opes aceitas pelo comando "adduser" entre distribuies derivadas do Debian e derivadas do Red Hat, pois ele na verdade um script, que pode ser alterado pelos desenvolvedores para adicionar atalhos ou funes diversas. Voltando ao tema principal, depois de adicionar os usurios ao grupo, falta ajustar as permisses de acesso, o que feito usando os comandos "chmod" e "chown". O primeiro permite ajustar as permisses dos arquivos e pastas, enquanto o segundo permite transferir a posse, dizendo a qual usurio e a qual grupo determinada pasta ou arquivo pertence. No Linux, as permisses so agrupadas em 3 atributos principais: leitura, gravao e execuo (no caso dos arquivos) ou listagem do contedo (no caso das pastas). Eles so representados, respectivamente, pelas letras r, w e x. As permisses so definidas de forma separada para o dono, o grupo (que inclui todos os usurios includos nele) e para os outros ou seja, todos os demais usurios do sistema. Em geral,

o dono tem acesso completo, o grupo tem permisses variveis, de acordo com a funo da pasta, e os demais podem apenas ler os arquivos, sem alterar o contedo. Se a pasta "/var/www/intranet" no nosso exemplo anterior foi criada pelo root, as permisses de acesso (informadas pelo comando "ls -l") sero: drwxr-xr-x 2 root root 4096 Jun 18 09:43 intranet O primeiro "d" indica que se trata de um diretrio. As trs letras seguintes (rwx) indicam as permisses de acesso para o dono da pasta, que no caso possui acesso completo. Em seguida, temos as permisses de acesso para o grupo (r-x), cujos integrantes podem listar o contedo da pasta (x) e podem ler os arquivos (r), sem poderem alterar nada. As trs ltimas letras (r-x) indicam as permisses para os demais usurios, que tambm podem apenas ler. O "root root" indica o dono e o grupo ao qual pertence a pasta, no caso o root. Ao cadastrar um usurio no sistema sempre criado um grupo com o mesmo nome (contendo apenas o prprio usurio), o que explica o fato da pasta pertencer ao usurio "root" e tambm ao grupo "root". :) Para que os usurios do grupo "intranet" possam alterar o contedo da pasta, o primeiro passo alterar as permisses, transferindo a posse do grupo "root" para o grupo "intranet". Nesse caso no precisamos alterar o dono da pasta, que pode continuar sendo o root: # chown -R root:intranet /var/www/intranet O "-R" no exemplo faz com que a alterao seja aplicada de forma recursiva, afetando todos os arquivos e sub-pastas. Sem ele, a alterao seria aplicada apenas pasta propriamente dita, mas no ao seu contedo. Em seguida, especificamos o novo dono e o novo grupo, separados por ":", seguido da pasta. Com isso, as permisses sero alteradas para: drwxr-xr-x 2 root intranet 4096 Jun 18 09:51 intranet Falta agora alterar as permisses de acesso para o grupo, de forma que os usurios possam finalmente escrever na pasta. Para isso, usamos o comando "chmod -R g+rw", que especifica que o grupo (g) ter permisso de leitura e escrita (+rw): # chmod -R g+rw /var/www/intranet Se voc quisesse fazer o oposto, ou seja, remover a permisso de escrita para o grupo, usaria o "chmod -R g-w /var/www/intranet", se quisesse remover a permisso de leitura para todos os demais usurios usaria o "chmod -R o-r" e, se quisesse abrir as permisses para todo mundo, usaria o "chmod -R ugo+rwx". Aqui vai uma pequena cola com os parmetros: -R : Recursivo, altera as permisses de todo o contedo da pasta, opcional. u : Permisses para o dono da pasta (user).

g : Permisses para o grupo (group). o : Permisses para os demais (others). + : Adiciona a permisso - : Remove a permisso r : Permisso de leitura w : Permisso de escrita x : No caso dos arquivos indica permisso de escrita e, no caso da pasta, permisso para ver o contedo. Voc pode tambm especificar as permisses de acesso no formato clssico, onde as permisses so representadas por trs nmeros, como em: # chmod -R 775 /var/www/intranet Nesse caso, os trs nmeros indicam, respectivamente, as permisses de acesso para o dono, grupo e para os outros. Cada nmero representa a soma das permisses desejadas, sendo que: 4 : Leitura 2 : Gravao 1 : Execuo / listagem Voc simplesmente soma estes nmeros para ter o nmero referente ao conjunto de permisses que deseja: 0 : Sem permisso alguma. Acesso negado. 1 : Permisso apenas para executar (no possvel ler o arquivo ou alter-lo, apenas executar um programa) ou, no caso das pastas, permisso apenas para ver a lista dos arquivos dentro da pasta, sem poder abri-los. 4 : Apenas leitura. Se usado em uma pasta, o usurio no conseguir listar o contedo, ou seja, conseguir abrir os arquivos apenas caso indique o caminho completo. 5 (4+1): Ler e executar (no caso de um arquivo) ou ver os arquivos e abri-los, no caso de uma pasta. 6 (4+2): Leitura e gravao. Assim como no caso do "4", se usado em uma pasta faz com que o usurio no consiga listar o contedo, apenas acessar os arquivos diretamente. 7 (4+2+1): Controle total.

Falar em "gerenciamento de processos" pode parecer coisa de advogado, mas na verdade uma das funes bsicas de qualquer administrador :). Um processo nada mais do que um aplicativo ou um servio ativo, que consome processamento e outros recursos do sistema. Em muitos casos, um determinado servio pode deixar de responder, ou pode ser que um determinado aplicativo simplesmente entre em loop e passe a consumir cada vez mais memria e/ou processamento at que voc consiga fech-lo manualmente. Para listar os processos ativos, ou seja, todos os programas e servios abertos, usamos o comando "ps". Como de praxe, ele suporta um enorme volume de opes, mas o uso mais comum combin-lo com as opes "aux", o que faz com que ele mostre a lista completa, contendo os processos iniciados por todos os usurios: # ps aux A menos que voc j seja um administrador experiente, com profundos conhecimentos, a lista vai mostrar diversos processos que voc no conhece. Uma boa forma de descobrir a funo de cada um usar o comando "whatis", que mostra a descrio curta do programa, como em: # whatis named named (8) - Internet domain name server (DNS) Outra combinao de opes muito usada a "axjf", que mostra os processos de forma um pouco mais organizada, agrupando os processos relacionados: # ps axjf Em qualquer um dos dois casos, a lista geralmente bastante extensa, mas se voc souber o nome do aplicativo ou do servio, voc pode usar o pipe ( | ) combinado com o grep para filtrar a lista, como em: # ps aux | grep gdm root 6042 0.0 0.1 14316 1536 ? Ss Jun10 0:00 /usr/sbin/gdm root 22692 0.0 0.0 14320 892 ? R 20:07 0:00 /usr/sbin/gdm root 22691 0.0 0.0 3020 764 pts/0 R+ 20:07 0:00 grep gdm Existem duas formas de finalizar um processo travado. A primeira usando o comando "kill", onde voc deve especificar o PID, ou seja, o nmero de identificao do processo, mostrado na segunda coluna do relatrio, como em: # kill 6042 Usado dessa forma, o kill tenta finalizar o processo de forma limpa, enviando o sinal de finalizao. Isso geralmente no funciona com processos travados, afinal, se o programa est

travado, provvel que o sinal no seja processado. Nesse caso, adicionados a opo "-9", que faz com que ele seja finalizado na marra, como em: # kill -9 6042 A segunda maneira de finalizar os processos usando o comando "killall", onde voc especifica diretamente o nome do servio ou programa que quer finalizar, como em: # killall gdm Como pode ver, o comando "ps" serve para que voc consiga localizar o culpado do problema, para ento poder finaliz-lo usando o kill ou o killall. Uma variao do "ps" o comando "pstree", que vai um passo alm dentro do conceito de organizao. Ele geralmente combinado com a opo "-p", que faz com que ele mostre os IDs dos processos, de forma que voc possa finaliz-los usando o kill: # pstree -p Temos tambm o comando "top", que desempenha a funo de gerenciador de processos em modo texto, mostrando uma lista atualizada continuamente:

Para organizar a lista, mostrando os processos que esto consumindo mais processamento nas primeiras posies (uma boa forma de localizar processos travados), pressione a tecla "g". Para finalizar um processo, pressione a tecla "k" e digite o PID. Se quiser finalizar o processo na marra, como ao usar o "kill -9", digite "9" quando ele perguntar sobre o sinal que ser usado. Para voltar ao terminal, use a tecla "q". Uso de memria: Uma dvida comum sobre o consumo de memria dos processos, que mostrado na coluna "RSS" do relatrio do ps. O valor informado em kbytes, de forma que um processo que aparea com o valor "6184", por exemplo, est consumindo pouco mais de 6 MB. Entretanto, os nmeros no so exatos, pois no levam em conta um fator importante, que a reutilizao de reas de memria por parte do Kernel. Se um mesmo aplicativo aberto vrias vezes, sempre carregando os mesmos arquivos e as mesmas bibliotecas, o Kernel logo aprender a aproveitar essas informaes, reutilizando as reas de memria em que elas esto armazenadas, em vez de carregar tudo novamente a cada abertura do programa. Se cada instncia do aplicativo consome 6 MB, por exemplo, e ele aberto 20 vezes, o relatrio do ps mostrar 6 MB de consumo de memria para cada um, muito embora na realidade eles estejam consumindo muito menos. O ps no tem acesso a essas informaes e por isso ele se limita a exibir o total usado por cada processo, sem levar em conta as reas compartilhadas. Isso faz com que o relatrio de uso de memria do ps e de outros utilitrios similares sirva mais como uma estimativa aproximada, que no deve ser levada ao p da letra. No Linux, todos os dispositivos de sistema so acessados atravs de arquivos especiais criados dentro do diretrio "/dev". Isso naturalmente inclui os HDs e as parties. Tradicionalmente, os HDs IDE so acessados atravs de devices iniciados com "/dev/hd", como em "/dev/hda" (master da primeira porta IDE), "/dev/hdb" (slave da primeira IDE), "/dev/hdc" (master da segunda IDE) e "/dev/hdd" (slave da segunda IDE) e os HDs SCSI, SATA ou SAS recebem devices iniciados com "/dev/sd", como em "/dev/sda" (primeiro HD), "/dev/sdb" (segundo HD), "/dev/sdc" (terceiro HD) e assim por diante. Entretanto, isso mudou nas verses recentes do Kernel (a partir do 2.6.20), onde, devido a uma mudana no subsistema que d suporte a discos, todos os HDs passaram a receber devices iniciados com "/dev/sd", independente de serem HDs IDE, SATA, SCSI ou USB.

Uma boa forma de ver como o sistema detectou os HDs instalados usar (como root) o comando "fdisk -l", que lista os HDs e as parties disponveis:

Neste exemplo, temos um servidor com trs HDs instalados, um de 200 GB, visto pelo sistema como "/dev/sda", um de 80 GB visto como "/dev/sdb" e um HD maior, de 300 GB, visto como "/dev/sdc". Voc pode notar que o "/dev/sdb"est dividido em vrias parties, incluindo uma partio swap (vista pelo sistema como "/dev/sdb5"), enquanto os outros dois so HDs destinados a armazenar arquivos e por isso foram particionados com uma nica partio. O que faz com que todas as parties sejam corretamente montadas durante o boot so entradas inseridas no arquivo "/etc/fstab". Aqui temos um exemplo de configurao clssica: /dev/sda1 / ext3 defaults 0 1 /dev/hda2 /home ext3 noatime 0 2

/dev/hda5 none swap sw 0 0 /dev/cdrom /mnt/cdrom iso9660 defaults,ro,user,noexec,noauto 0 0 proc /proc proc defaults 0 0 Como pode ver, cada linha descreve uma partio que ser acessada pelo sistema. No exemplo, a primeira linha referente partio raiz, a segunda se refere a uma partio separada, montada no diretrio home, a terceira referente partio swap, a quinta referente ao CD-ROM e a ltima ao diretrio proc, um diretrio especial usado pelo kernel para armazenar variveis de configurao e atalhos de acesso a dispositivos. Dentro de cada linha, o primeiro parmetro (/dev/sda1) indica a partio, o segundo o diretrio onde ela ser montada (/), o terceiro indica o sistema de arquivos em que a partio foi formatada (ext3) enquanto o "defaults 0 1" permite definir configuraes adicionais. O "default", por exemplo um "nada a declarar", que faz com que a partio seja acessada usando as opes padro, enquanto o "noatime" na segunda linha uma opo de otimizao, que faz com que o sistema no atualize a data de acesso quando os arquivos so lidos, o que resulta em um pequeno ganho de desempenho. Normalmente, voc define os pontos de montagem das parties durante a prpria instalao do sistema, de forma que o instalador se encarregar de adicionar as entradas apropriadas automaticamente. Ao instalar outros HDs posteriormente, voc pode fazer com que o sistema passe a us-las inserindo as linhas apropriadas no arquivo "/etc/fstab". Se voc acabou de particionar um novo HD em EXT3 e deseja que a partio "/dev/sdc1" criada seja montada na pasta "/mnt/sdc1", por exemplo, os passos seriam: a) Criar a pasta onde a partio ser montada: # mkdir /mnt/sdc1 b) Testar a montagem da partio: # mount /dev/sdc1 /mnt/sdc1 c) Adicionar a linha abaixo no final do arquivo "/etc/fstab", orientando o sistema a mont-la automaticamente durante o boot: /dev/sdc1 /mnt/sdc1 ext3 defaults 0 0 Alm de ser usado para montar parties locais, o mount usado tambm para montar compartilhamentos de rede. possvel montar compartilhamentos em servidores Windows, ou servidores Linux rodando o Samba, compartilhamentos em NFS ou at mesmo montar pastas em mquinas remotas usando o sshfs. Continuando, se voc estiver usando o Ubuntu, vai perceber que ele no faz referncia s parties dentro do fstab pelo dispositivo, mas sim pelo UUID, que um identificador nico. O

uso dos UUIDs complica a configurao, mas oferece a vantagem de garantir que o sistema continue sendo capaz de montar as parties mesmo que os HDs mudem de posio ou sejam instalados em portas diferentes da placa-me. Para seguir o padro do Ubuntu, identificando a partio atravs do UUID, voc pode verificar qual o UUID referente sua partio usando o comando "blkid", como em: # blkid /dev/sdc1 /dev/sdc1: UUID="5c5a3aff-d8a3-479e-9e54-c4956bd2b8fd" SEC_TYPE="ext2" TYPE="ext3" Voc pode ento especificar o UUID na linha do fstab no lugar do device, como em: UUID=5c5a3aff-d8a3-479e-9e54-c4956bd2b8fd /mnt/sdc1 ext3 defaults 0 0 Um aviso importante que o fstab um dos arquivos essenciais para a inicializao do sistema, por isso voc sempre deve checar e rechecar as alteraes. Um erro na linha referente partio raiz, por exemplo, simplesmente far o sistema deixar de inicializar. Outra observao que voc deve deixar sempre uma linha em branco no final do arquivo, caso contrrio passar a receber um aviso durante o boot. Ela necessria por um motivo muito simples: sem ela, se um utilitrio de configurao qualquer tentar inserir informaes no final do arquivo, vai acabar inserindo-as no final da linha anterior (em vez de em uma nova linha), resultando em uma configurao invlida. Alm da questo da montagem de parties, temos a questo da reparao de parties com estruturas danificadas devido a quedas de energia ou problemas diversos. A cada boot o sistema realiza um teste rpido de integridade das parties, utilizando o fsck, que anlogo ao scandisk do Windows. Em casos de problemas graves, que no possam ser corrigidos automaticamente, ou de erros inesperados ao tentar montar as parties indicadas no arquivo /etc/fstab, o boot interrompido e voc recebe a fatdica mensagem: Give root password for maintenance (or type Control-D for normal startup): Este prompt o que temos de mais prximo a uma tela azul no mundo Linux, essencialmente um "se vire", que causa arrepios em muitos administradores :). Na maioria dos casos, ao pressionar "Ctrl+D" a mquina simplesmente reiniciada e o mesmo erro volta a ser exibido, de forma que a nica forma de continuar realmente solucionando o problema. Comece fornecendo a senha de root. Isso lhe dar acesso ao modo single-user, um prompt limitado, destinado a permitir o uso de ferramentas de reparao. Se o problema for em uma das parties do HD, o prximo passo executar a verso apropriada do fsck, indicando a partio a ser reparada (em caso de dvida, voc pode listar as parties do sistema usando o comando "fdisk -l"), como em:

# fsck.ext3 /dev/sda1 (para parties formatadas em ext3) ou: # reiserfsck --fix-fixable /dev/sda2 (para parties formatadas em ReiserFS) Muito provavelmente, o teste do fsck indicar erros que precisaro da sua confirmao antes de serem corrigidos, da a necessidade de usar o prompt de recuperao. Na maioria dos casos, voc pode simplesmente responder "y" para tudo, mas caso existam dados realmente importantes na partio melhor prestar mais ateno. Arquivos danificados ou fragmentos de arquivos que puderam ser recuperados vo para a pasta "lost+found" no diretrio raiz da partio. O fsck no capaz de recuperar o sistema de arquivos em casos de problemas com o superbloco, o setor que contm informaes essenciais, como o tipo, tamanho, status e informaes sobre a estrutura do sistema de arquivos. Sempre que a partio criada, so criados vrios superblocos alternativos, que servem justamente de backups para casos de problemas com o primeiro. Voc pode ver a lista de endereos usando o comando "mkfs.ext3 -n partio", como em: # mkfs.ext3 -n /dev/sda1 Ao usar o comando, nunca esquea de incluir o "-n", caso contrrio ao invs de mostrar as informaes, ele vai formatar a partio. No final do relatrio voc encontra: Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Chame novamente o comando "fsck.ext3", adicionando a opo "-b", seguida do endereo do superbloco que ser usado. Caso eventualmente o primeiro resulte em erro, experimente o segundo, e assim por diante: # fsck.ext3 -f -b 32768 /dev/hda2 Para parties EXT2, use o comando "fsck.ext2", que suporta os mesmos parmetros. Continuando, se o erro for no "/etc/fstab", ou em outro arquivo de configurao (voc pode ter deixado a configurao com erros ao editar manualmente o arquivo e s perceber vrios dias depois, ao precisar reiniciar o servidor), necessrio remontar a partio raiz em modo de leitura e escrita antes de poder fazer a edio. Isso feito usando o comando "mount -o remount rw particao-raiz", como em: # mount -o remount rw /

A partir da, voc pode fazer a edio usando o vi, joe, ou outro editor que rode em modo texto e salvar as alteraes: # joe /etc/fstab Terminado, reinicie o sistema usando o "reboot" e tudo deve voltar ao normal. Outra dica que, se o servidor possui um drive de CD-ROM, voc pode usar um CD do Ubuntu, ou de qualquer outra distribuio live-CD como sistema de recuperao. Voc pode usar o liveCD para executar os comandos de recuperao do fsck, ou para montar as parties e assim pode editar o fstab ou outros arquivos de configurao. O live-CD pode ser usado tambm para resetar a senha de root, nos famosos casos em que ela esquecida. Para isso, comece montando a partio raiz do sistema, a partir do live-CD, como em: # mount -t ext3 /dev/sda1 /mnt/sda1 Se voc estiver usando o Ubuntu ou outra distribuio derivada dele, pode se logar como root no prompt usando o comando "sudo su". A partir da, use o comando "chroot" para acessar o sistema dentro da partio, indicando o diretrio onde ela foi montada, como em: # chroot /mnt/sda1 Isso lhe dar um prompt de comando do sistema dentro da partio, o que permite que voc troque a senha de root usando o comando passwd: # passwd

Anda mungkin juga menyukai