Escolar Documentos
Profissional Documentos
Cultura Documentos
Bem-vindo DBA
Conta Sair Ajuda País Comunidades Eu sou... Eu quero... Pesquisar
Arup Nanda
Nesta quinta e última parte da série, daremos destaque a mais comandos e técnicas para administrar um ambiente Linux, inclusive os
virtualizados.
# export ORACLE_HOME=/opt/oracle/product/11gR2/db1
Depois, você recorrer à variável colocando um ''$'' como prefixo antes do nome da variável, por exemplo:
# cd $ORACLE_HOME
Essa é uma variável definida pelo usuário. Do mesmo modo, há diversas variáveis definidas no shell propriamente dito, com o nome
predefinido no shell e que controlam o modo como você interage nele.
É interessante conhecer essas variáveis (pelo menos as mais importantes) para aprimorar a qualidade e a eficiência de seu trabalho.
PS1
Essa variável define o prompt de comando do Linux. No exemplo apresentado a seguir, tentaremos alterar o prompt de comando do padrão ''# ''
para ''$ '':
Você viu como o prompt mudou para $? Você pode colocar qualquer caractere aqui para alterar o prompt padrão. As aspas duplas não são
necessárias, mas como queremos colocar um espaço depois de ''$'',
tivemos de inserir esse caractere entre aspas.
É só isso – é só mostrar o prompt num sofisticado caractere ou string de caracteres predefinidos? De jeito nenhum. Você também pode colocar
símbolos especiais na variável para mostrar valores especiais. Por exemplo, o símbolo \u mostra o nome de usuário que efetuou login e \h, o
nome do host. Se usarmos esses dois símbolos, o prompt poderá ser personalizado para mostrar o usuário e o local onde foi efetuado login:
Aqui vemos o prompt quando o usuário Oracle efetuou login no servidor chamado oradba1 – o suficiente para que você se lembre quem é o
usuário e em qual máquina ele efetuou login.
É possível personalizar ainda mais o prompt usando outro símbolo, \W, que mostra o nome base do diretório atual. Veja como ficou o prompt:
Como o diretório atual é HOME, aparece o símbolo ''~''. Quando você muda para outro diretório, o símbolo é alterado.
Adicionar o diretório atual é uma excelente maneira de lembrar-se onde você está e quais serão as implicações de suas ações. A execução de
rm * causa um impacto no diretório /tmp diferente do que ocorreria em /home/oracle, certo?
Existe outro símbolo, o - \w. Há uma diferença muito importante entre \w e \W. Este produz o nome base do diretório atual, enquanto aquele
mostra o diretório completo:
Notou a diferença? No prompt anterior, no qual a opção \W foi usada, foi apresentado somente o diretório db1, que é o nome base. No prompt
seguinte, no qual a opção \w foi usada, foi exibido o diretório completo:
/opt/oracle/product/11gR2/db1.
Em muitos casos, um nome de diretório completo no prompt pode ser de grande ajuda. Imagine que existem três Oracle Homes, cada qual
com um subdiretório chamado db1. Como você poderá saber ao certo em que diretório está se for exibida apenas a indicação ''db1''? Um
diretório completo não deixa dúvidas.No entanto, a exibição por extenso torna o prompt muito longo, o que pode ser um pouco inconveniente.
Eis alguns outros símbolos que você pode usar na variável shell do PS1:
http://www.oracle.com/technetwork/pt/articles/linux/part5-087549-ptb.html?printOnly=1 1/11
26/8/2014 Artigos: Linux - Guia para dominar comandos avançados do Linux, Parte 5: Administrando o ambiente Linux (continuação)
\A O horário no formato horas:minutos, como ocorre com a opção \@, mas com o formato de
24 horas.
IFS
Essa variável pede para o shell tratar as respectivas variáveis como um todo ou separadas. Se você quiser separá-las, o valor definido para a
variável IFS será usado como separador. IFS é justamente a sigla para Input Field Separator (separador de campo). Para demonstrar, vamos
definir uma variável conforme segue.
# pfiles=initODBA112.ora:init.ora
Na verdade, há dois arquivos: initODBA112.ora e init.ora, e você deseja exibir a primeira linha de cada um deles. Para tanto, use o comando
head -1.
# head -1 $pfiles
head: cannot open `initODBA112.ora:init.ora'
for reading: No such file or directory
# export IFS=":"
# head -1 $pfiles
==> initODBA112.ora <==
# first line of file initODBA112.ora
Muito bem – o shell expandiu o comando head -1 $pfiles para head -1 initODBA112.ora e head -1 init.ora. Portanto, o comando foi executado
corretamente.
PATH
Quando você usa um comando no Linux, ele está em um shell, como vimos com o comando kill na parte 4 desta série, ou em um arquivo
executável. Se for um executável, como você pode saber onde está o dito-cujo?
Vejamos, por exemplo, o comando rm, que remove algum arquivo e pode ser usado em qualquer diretório. Se, obviamente, o arquivo executável
rm não existe em todos os diretórios, como o Linux sabe onde procurá-lo?
A variável PATH contém os locais onde o shell deve procurar por esse executável. Veja um exemplo de definição de PATH:
# echo $PATH
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:
Quando você emite um comando como o rm, o shell procura pelo arquivo rm nestes locais, na seguinte ordem:
/usr/kerberos/bin
/usr/local/bin
/bin
/usr/bin
/usr/X11R6/bin
. (the current directory
Se o arquivo não for encontrado nesses locais, o shell retornará uma mensagem de erro -bash: comando não encontrado. Se você quiser
adicionar mais locais à variável PATH, use o símbolo '':'' como separador.
Você observou um fato muito interessante acima? O local do ''diretório atual'' é definido no fim, não no início. O senso comum pode sugerir que
se coloque o local no início para que o shell procure
pelo executável primeiro no diretório atual antes de buscá-lo em outro lugar. Se você colocá-lo no fim, instruirá o shell a procurar no diretório
atual no fim do processo. Existe um método melhor?
Os especialistas recomendam colocar o diretório atual (.) no fim do comando PATH, não no início. Por quê? Por motivos de segurança. Imagine
que você está experimentando algumas ideias para aprimorar os comandos shell e, inadvertidamente, deixa esse arquivo no seu diretório
home. Ao efetuar login, você estará no diretório home e quando executar esse comando, não estará executando o comando comum, mas sim o
arquivo executável no seu diretório home.
Isso pode ser desastroso em alguns casos. Suponha que está fazendo testes com uma nova versão do comando ''cp'' e que existe um arquivo
chamado cp em seu diretório home. Esse arquivo pode fazer um estrago. Se você digitar ''cp somefile anotherfile'', sua versão do arquivo cp será
executada e causará danos. Se você colocar o diretório atual no fim, executará o comando ''cp'' normalmente e evitará riscos.
Esta prática também afasta o risco de que algum hacker coloque um arquivo de comando nocivo na forma de comandos comuns. Alguns
especialistas chegam a sugerir a remoção completa do ''.'' da variável PATH para evitar qualquer execução indesejada. Se tiver de executar
alguma coisa no diretório atual, use apenas a opção ./ notation como a seguir:
# ./mycommand
CDPATH
Muito semelhante à variável PATH, CDPATH expande o escopo do comando cd além do diretório atual.
Por exemplo, quando você digita o comando cd command, conforme segue:
# cd dbs
-bash: cd: dbs: No such file or directory
Isso faz sentido, pois o subdiretório dbs não existe no diretório atual. Ela está em /opt/oracle/product/11gR2/db1. É por isso que o comando cd
não dá certo. Naturalmente, você pode navegar até o diretório /opt/oracle/product/11gR2 e executar o comando cd com sucesso. Se quiser
aumentar o escopo para incluir o diretório /opt/oracle/product/11gR2/db1, poderá emitir o comando:
# export CDPATH=/opt/oracle/product/11gR2/db1
http://www.oracle.com/technetwork/pt/articles/linux/part5-087549-ptb.html?printOnly=1 2/11
26/8/2014 Artigos: Linux - Guia para dominar comandos avançados do Linux, Parte 5: Administrando o ambiente Linux (continuação)
# cd dbs
/opt/oracle/product/11gR2/db1/dbs
# pwd
/opt/oracle/product/11gR2/db1/dbs
Há inúmeras outras variáveis, mas como são amplamente utilizadas, você deve conhecê-las e dominá-las.
set
Este comando controla o comportamento do shell, conta com várias opções e argumentos, mas explicarei apenas os mais importantes.
Um erro muito comum que as pessoas cometem ao usar comandos de sobreposição, como o cp e o mv, é substituir arquivos corretos
inadvertidamente. Para evitar o risco, use um ''alias'' (explicado na Parte 1 desta série), por exemplo, usando a opção mv –i em vez de
simplesmente mv. Entretanto, como você pode impedir que alguém ou algum script substitua os arquivos pelo operador de redirecionamento
(''>'')?
Vejam,os um exemplo. Imagine que você tem um arquivo chamado very_important.txt e alguém (ou algum script) acidentalmente usou uma
linha de comando como:
# ls -l > very_important.txt
O arquivo é substituído imediatamente e seu conteúdo original é perdido. Para evitar esse risco, você pode usar o comando set com a opção -o
noclobber, conforme segue:
# set -o noclobber
# ls -l > very_important.txt
-bash: very_important.txt: cannot overwrite existing file
O shell agora impede a substituição do arquivo. Mas e se você quiser sobrescrevê-lo? Use o operador >|.
# ls -l >| very_important.txt
Para desativá-lo:
# set +o noclobber
Outro comando muito funcional para usar o editor vi a fim de editar comandos. Mais adiante nesta parte da série, você aprenderá a verificar os
comandos emitidos e como reexecutá-los. Uma maneira rápida de reexecutar o comando é recuperá-lo usando o editor vi. Para ativá-lo, execute
o seguinte comando:
# set -o vi
Agora, imagine que você está procurando um comando que contém a letra ''v'' (como vi, vim etc.). Para procurar o comando, digite esta
sequência de caracteres. As teclas a serem pressionadas aparecem entre colchetes:
Essa sequência recuperará o último comando executado contendo a letra ''v''. Nesse caso, como o último comando foi –o vi, essa opção
aparece no prompt de comando.
# set -o vi
Se esse não for o comando procurado, pressione a tecla ''n'' para recuperar o comando seguinte. Desse modo, você poderá recuperar todos os
comandos executados contendo a letra ''v''. Quando encontrar o comando desejado, pressione [a tecla ENTER] para executá-lo. A pesquisa
poderá ser tão explícita quanto você quiser. Imagine que você está procurando um comando mpstat executado anteriormente. Para encontrá-lo,
basta digitar esta string de pesquisa ''mpstat'':
Suponha que o comando acima mostra mpstat 5 5 e, na verdade, você quer executar o comando mpstat 10 10. Em vez de digitar a string
novamente, você pode editar o comando em vi. Para tanto, pressione [a tela Esc] e a tecla [v], e o comando aparecerá no editor vi. Agora você
poderá editar o comando como quiser. Quando salvá-lo no vi digitando :wq, o comando modificado será executado.
type
Na Parte 4 você aprendeu sobre o kill, um comando especial, que é tanto um utilitário (um executável em algum diretório) quanto um shell built-
in. Em outras partes desta série, você também aprendeu sobre outros aliases. Às vezes, existem alguns comandos usados em scripts shell –
''do'', ''done'', ''while'', por exemplo que não são comandos propriamente ditos. Tratam-se de palavras-chave shell.
Como você saberá que tipo de comando é esse? O próprio tipo de comando indicará isso. Veja como usamos esse recurso para mostrar os
tipos de comandos mv, do, fc e oh.
# type mv do fc oh
mv is /bin/mv
do is a shell keyword
fc is a shell builtin
oh is aliased to `cd $ORACLE_HOME'
Estas opções mostram muito claramente que mv é um utilitário (junto com o respectivo local). A opção do é uma palavra-chave usada em
scripts, fc é integrada e oh é um alias (e indica o objeto que recebeu o alias).
history
Quando você entra no sistema Linux, normalmente executa vários comandos no prompt. Como saber quais comandos foram executados? Esse
tipo de informação pode ser útil por vários motivos: se você quiser reexecutar um comando sem precisar digitá-lo de novo, para certificar-se de
que executou o comando correto (por exemplo, se removeu o arquivo certo), se precisar verificar quais comandos foram emitidos, e assim por
diante. O comando history fornece um histórico dos comandos executados.
# history
1064 cd dbs
1065 export CDPATH=/opt/oracle/product/11gR2/db1
1066 cd dbs
http://www.oracle.com/technetwork/pt/articles/linux/part5-087549-ptb.html?printOnly=1 3/11
26/8/2014 Artigos: Linux - Guia para dominar comandos avançados do Linux, Parte 5: Administrando o ambiente Linux (continuação)
1067 pwd
1068 env
1069 env | grep HIST
… and so on …
Observe os números antes de cada comando. Eles representam o evento ou número do comando. Você aprenderá como usar esse recurso a
seguir nesta seção. Se quiser exibir somente algumas linhas do histórico – digamos, apenas os últimos cinco comandos – em vez de todas as
informações disponíveis:
# history 5
Na verdade, a maior utilidade do comando history é a capacidade de reexecutar um comando sem digitá-lo novamente. Para tanto, insira um !
seguido pelo evento ou número do comando que precede o respectivo nome no histórico. Para executar novamente o comando cd dbs
mostrado no número 1066, digite o seguinte:
# !1066
cd dbs
/opt/oracle/product/11gR2/db1/dbs
O comando !! (dois pontos de exclamação) executa novamente o último comando aplicado. Você também podeinserir uma string após o
comando ! para executar mais uma vez o último comando com o padrão da string inserida na posição inicial. O comando a seguir executa
novamente o comando mais recente que comece com cd:
# !cd
cd dbs
/opt/oracle/product/11gR2/db1/dbs
E se você quiser reexecutar um comando contendo uma string – não necessariamente no início? O modificador ? estabelece uma
correspondência de padrões nos comandos. Para procurar um comando contendo a palavra, emita o seguinte código:
# !?network?
cd network
/opt/oracle/product/11gR2/db1/network
Também é possível modificar o comando a ser reexecutado. Por exemplo, imagine que você emitiu um comando cd
/opt/oracle/product/11gR2/db1/network e deseja reexecutá-lo, adicionando /admin ao fim da string. Basta digitar:
# !1091/admin
cd network/admin
/opt/oracle/product/11gR2/db1/network/admin
fc
Este comando é um shell built-in usado para mostrar o histórico de comandos, como acontece com a opção history. A opção mais comum é -l
(a letra ''L'', não o número ''1'') que mostra os 16 comandos mais recentes:
# fc -l
1055 echo $pfiles
1056 export IFS=
... and so on ...
1064 cd dbs
1065 export CDPATH=/opt/oracle/product/11gR2/db1
1066 cd dbs
Você também pode usar fc para mostrar apenas alguns comandos numa determinada faixa de números de eventos, por exemplo, 1060 e 1064:
# fc -l 1060 1064
1060 pwd
1061 echo CDPATH
1062 echo $CDPATH
1063 cd
1064 cd dbs
A opção -l também abrange outros dois parâmetros – a string a executar uma correspondência de padrões. Segue um exemplo em que você
deseja exibir o histórico de todos os comandos iniciados com a palavra echo, do registro até o comando mais recente que comece com pwd.
# fc -l echo pwd
1062 echo $CDPATH
1063 cd
1064 cd dbs
1065 export CDPATH=/opt/oracle/product/11gR2/db1
1066 cd dbs
1067 pwd
Se quiser reexecutar o comando cd dbs (comando número 1066), basta inserir esse número depois de fc com a opção -s:
# fc -s 1066
cd dbs
/opt/oracle/product/11gR2/db1/db
Outro uso muito interessante do comando fc -l é a substituição de comandos. Imagine que você quer executar um comando semelhante ao
1066 (cd dbs), mas pretende emitir um cd network, não o cd dbs.
Use o seguinte argumento de substituição:
# fc -s dbs=network 1066
cd network
/opt/oracle/product/11gR2/db1/network
# fc 1066
Abrirá um arquivo vi contendo o comando cd dbs, que pode ser editado e executado.
cpio
Imagine esta situação: você pretende enviar um conjunto de arquivos para alguém ou algum lugar e não quer correr o risco de perdê-los para
não fragmentar o conjunto. O que pode ser feito para garantir a integridade da transmissão? É simples. Se você conseguir colocar todos os
http://www.oracle.com/technetwork/pt/articles/linux/part5-087549-ptb.html?printOnly=1 4/11
26/8/2014 Artigos: Linux - Guia para dominar comandos avançados do Linux, Parte 5: Administrando o ambiente Linux (continuação)
arquivos em um único arquivo e enviá-lo ao destinado, poderá ficar tranquilo que todos os arquivos serão enviados com segurança.
A opção -v é usada para exibir um resultado detalhado, o que poderá ser útil quando você quiser um feedback preciso do que está acontecendo.
Primeiro, vejamos como colocar vários arquivos em um arquivo compactado. Neste exemplo, colocaremos todos os arquivos com a extensão
''trc'' em um diretório específico, num arquivo compactado chamado myfiles.cpio:
Como a opção -v foi usada para obtenção de um resultado detalhado, o comando cpio mostrou cada item adicionado ao arquivo compactado. A
opção -o foi usada para criar um arquivo compactado. A opção -c foi usada para instruir o comando cpio a escrever as informações de
cabeçalho em ASCII, a fim de facilitar a movimentação entre diferentes plataformas.
Outra opção é is –O, que aceita o arquivo compactado resultante como um parâmetro.
Aqui, as opções -v e –i são usadas para resultado detalhado e para extração do conteúdo de arquivos compactados. A opção –c foi usada para
instruir o comando cpio a ler as informações do cabeçalho como ASCII. Quando extrai um arquivo já existente (como no caso de
odba112_ora_13591.trc), o comando cpio não o substitui; simplesmente o ignora com a mensagem. Para forçar a substituição, use a opção -u.
Para exibir somente o conteúdo sem extrai-lo efetivamente, use a opção –t com –i (extração):
E se você estiver extraindo um arquivo já existente? Poderá extrai-lo, mas talvez com um nome diferente. Por exemplo, caso você tente restaurar
um arquivo chamado alert.log (arquivo de log de uma instância Oracle) e não queira substituir o atual alert.log.
Uma opção muito útil é –r, que permite renomear os arquivos a serem extraídos de modo interativo.
Se você criou compactou um diretório usando o comando cpio e desejar extrair o conteúdo na mesma estrutura de pastas, use a opção –d
durante a extração.
Ao criar um arquivo compactado, você pode adicionar arquivos existentes (anexar) usando a opção –A, conforme segue:
O comando tem várias outras opções, mas você precisa conhecer apenas as que lhe serão úteis.
tar
Outro mecanismo para criar um arquivo compactado é o comando tar. Originalmente criado para arquivamento em unidades de fita (portanto o
nome Tape Archiver), o comando tar é muito difundido por sua simplicidade e tem três opções principais:
Depois de criar o arquivo compactado, você pode listar o conteúdo com a opção –t.
# tar tf myfiles.tar
+asm_ora_14651.trc
odba112_ora_13591.trc
odba112_ora_14111.trc
odba112_ora_14729.trc
odba112_ora_15422.trc
http://www.oracle.com/technetwork/pt/articles/linux/part5-087549-ptb.html?printOnly=1 5/11
26/8/2014 Artigos: Linux - Guia para dominar comandos avançados do Linux, Parte 5: Administrando o ambiente Linux (continuação)
Para extrair o conteúdo de um arquivo compactado, use a opção –x. Veja um exemplo (a opção –v foi usada para mostrar o resultado detalhado):
zip
A compactação é uma parte muito importante na administração de um ambiente Linux. Talvez você precise compactar vários arquivos a fim de
liberar espaço para novos dados ou para enviá-los por via email, etc.
O Linux oferece diversos comandos de compactação. Vejamos os mais comuns: zip e gzip.
O comando zip produz um único arquivo consolidando outros arquivos e compactando-os em um arquivo zip (compactado). Veja um exemplo do
uso do comando:
Aqui produzimos um arquivo chamado myzip.zip com todos os arquivos do diretório com a extensão .aud.
O comando zip aceita várias opções. A mais comum é a -9, que instrui o zip a compactar o máximo possível, mas sacrifica os ciclos da CPU (e,
portanto, demora mais). A outra opção, a -1, instrui justament e o oposto: compactação mais rápida, porém reduzida.
Você também pode proteger o arquivo zip criptografando-o com uma senha. Sem a senha correra, o arquivo zip não poderá ser descompactado.
Essa característica é atribuída em tempo de execução com a opção –e (encrypt):
# zip -e ze *.aud
Enter password:
Verify password:
adding: odba112_ora_10025_1.aud (deflated 32%)
adding: odba112_ora_10093_1.aud (deflated 31%)
... and so on ...
A opção -P permite fornecer a senha na linha de comando. Como permite que outros usuários vejam a senha em texto sem formatação,
verificando processos ou procurando no histórico de comandos, essa opção não é tão recomendada quanto a -e.
Você pode verificar a integridade dos arquivos zip com a opção -T. Se o arquivo zip estiver criptografado por senha, será necessário fornecê-la.
# zip -T ze
[ze.zip] odba112_ora_10025_1.aud password:
test of ze.zip OK
Naturalmente, para usar o conteúdo de um arquivo compactado, é preciso descompactá-lo. Para tanto, o comando necessário nada mais é que
o famoso unzip. Vejamos o uso simples desse comando para descompactar o arquivo ze.zip.
# unzip myfiles.zip
Se o arquivo zip estiver criptografado por senha, você receberá uma solicitação para digitar a senha. Ao inseri-la, ela não será reproduzida na
tela.
# unzip ze.zip
Archive: ze.zip
[ze.zip] odba112_ora_10025_1.aud password:
password incorrect--reenter:
password incorrect--reenter:
replace odba112_ora_10025_1.aud? [y]es, [n]o, [A]ll, [N]one, [r]ename: N
Neste exemplo, como você digitou a senha incorreta inicialmente, terá de digitá-la novamente. Quando recebeu a senha correta, o comando
unzip descobriu que já existe um arquivo chamado odba112_ora_10025_1.aud e solicitou sua interferência. Observe as alternativas – também
existe a opção de renomear o arquivo descompactado.
Lembra-se do zip protegido por senha inserida na linha de comando zip com a opção –P? Você pode descompactar esse arquivo inserindo o
comando na respectiva linha com a mesma opção –P.
A opção -P é diferente de –p, que instrui a descompactação de arquivos na saída padrão que, posteriormente, pode ser redirecionada para outro
arquivo ou programa.
O principal atrativo do comando zip é sua maior compatibilidade. Você pode compactar um arquivo com o comando zip no Linux e descompactá-
lo no sistema operacional X ou no Windows. O utilitário unzip está disponível em várias plataformas.
Imagine que você compactou vários arquivos armazenados em diferentes subdiretórios de um diretório. Quando o arquivo for descompactado,
serão criados os subdiretórios conforme necessário. Se quiser que todos os arquivos sejam descompactados no diretório atual, use a opção -j.
# unzip -j myfiles.zip
Uma das combinações mais úteis é usar o comando tar para consolidar os arquivos e compactar o arquivo resultante com o comando zip. Em
vez de um processo de duas etapas (tar e zip), você passa o resultado do comando tar para o zip conforme segue:
O caractere especial ''-'' no zip significa o nome do arquivo. O comando acima submete todos os itens ao comando tar e cria um arquivo zip
chamado myfiles.zip. Do mesmo modo, ao descompactar o arquivo e extrair o respectivo conteúdo, você pode eliminar o processo de duas
etapas e executá-las de uma só vez:
gzip
O gzip (abreviação de GNU zip) é outro comando usado para compactar arquivos, destinado a substituir o antigo utilitário de compactação da
UNIX.
A principal diferença entre o zip e o gzip é que o primeiro cria um arquivo zip contendo vários itens e o segundo compacta cada arquivo
http://www.oracle.com/technetwork/pt/articles/linux/part5-087549-ptb.html?printOnly=1 6/11
26/8/2014 Artigos: Linux - Guia para dominar comandos avançados do Linux, Parte 5: Administrando o ambiente Linux (continuação)
separadamente. Veja este exemplo de utilização:
# gzip odba112_ora_10025_1.aud
Observe que você não recebeu uma solicitação para dar um nome ao arquivo zip. O comando gzip pega cada arquivo (por exemplo,
odba112_ora_10025_1.aud) e simplesmente cria um arquivo zip com o nome de odba112_ora_10025_1.aud.gz. Além disso, é importante
observar que ele remove o arquivo original odba112_ora_10025_1.aud. Se você passar um conjunto de arquivos como parâmetro para o
comando:
# gzip *
Ele criará um arquivo zip com a extensão .gz para cada item presente no diretório. Inicialmente, o diretório continha os seguintes arquivos:
a.txt
b.pdf
c.trc
a.txt.gz
b.pdf.gz
c.trc.gz
O mesmo comando também é usado para descompactar arquivos. A opção -d ¾ aliás, bastante intuitiva ¾ e usada para descompactar arquivos
agrupados com o gzip.
Para verificar o arquivo compactado pelo comando gzip e o grau de compactação, você pode usar a opção -l. Na verdade, essa opção não
realiza nenhuma ação; ela apenas mostra o conteúdo do arquivo compactado.
# gzip -l *
compressed uncompressed ratio uncompressed_name
698 1150 42.5% +asm_ora_14651.trc
464 654 35.2% odba112_ora_13591.trc
466 654 34.9% odba112_ora_14111.trc
466 654 34.9% odba112_ora_14729.trc
463 654 35.3% odba112_ora_15422.trc
2557 3766 33.2% (totals)
Você também pode compactar os arquivos em um diretório usando a opção recursiva (-r). Para aplicar o comando gzip a todos os arquivos no
diretório de log, use:
# gzip -r log
Para verificar a integridade de um arquivo compactado pelo gzip, use a opção -t:
# gzip -t myfile.gz
Quando você quiser criar um nome diferente do padrão .gz para o arquivo compactado pelo gzip, use a opção –c. Assim, o comando gzip gravará
o arquivo na saída padrão que poderá ser direcionada para um arquivo. Você pode usar a mesma técnica para colocar mais de um item no
mesmo arquivo gzip. Vamos compactar dois itens – odba112_ora_14111.trc, odba112_ora_15422.trc – no mesmo arquivo 1.gz.
# gzip -l 1.gz
compressed uncompressed ratio uncompressed_name
654 -35.9% 1
A taxa de compactação exibida refere-se somente ao último arquivo na lista (é por isso que o original aparece com um tamanho inferior ao do
arquivo compactado). Na descompactação, os dois originais são exibidos um após o outro e ambos são descompactados corretamente.
A opção -f força a sobreposição dos arquivos, se estiverem presentes. A opção –v mostra o resultado com mais detalhes. Veja este exemplo:
# gzip -v *.trc
+asm_ora_14651.trc: 42.5% -- replaced with +asm_ora_14651.trc.gz
odba112_ora_13591.trc: 35.2% -- replaced with odba112_ora_13591.trc.gz
odba112_ora_14111.trc: 34.9% -- replaced with odba112_ora_14111.trc.gz
odba112_ora_14729.trc: 34.9% -- replaced with odba112_ora_14729.trc.gz
odba112_ora_15422.trc: 35.3% -- replaced with odba112_ora_15422.trc.gz
Um comando relacionado é o zcat. Se quiser exibir o conteúdo do arquivo compactado com o comando gzip sem descompactá-lo, use o
comando zcat:
# zcat 1.gz
O comando zcat é semelhante ao gzip -d | cat no arquivo, mas não o descompacta efetivamente.
A exemplo do comando zip command, o gzip também aceita opções de grau de compactação
Também existe o comando gunzip, que é equivalente ao gzip -d (para descompactar um arquivo gzip).
Como não existe mais a obrigatoriedade de uma relação um-a-um entre um servidor físico e um lógico ou virtual, alguns conceitos podem
parecer complicados. Por exemplo, qual é a memória disponível? É a disponibilidade do servidor virtual (1), do servidor físico individual (2) onde
reside o servidor virtual ou do total do pool de servidores ao qual pertence o servidor virtual (3)? Sendo assim, os comandos Linux podem se
comportar de maneira um pouco diferente quando operados em um ambiente virtual.
Além disso, como o ambiente virtual também precisa de administração, existem alguns comandos especializados para o gerenciamento da
infraestrutura virtualizada. Nesta seção, você aprenderá sobre os comandos especializados e as atividades relacionadas ao ambiente virtual.
Usaremos o Oracle VM como exemplo.
http://www.oracle.com/technetwork/pt/articles/linux/part5-087549-ptb.html?printOnly=1 7/11
26/8/2014 Artigos: Linux - Guia para dominar comandos avançados do Linux, Parte 5: Administrando o ambiente Linux (continuação)
Um dos componentes principais da virtualização em um ambiente Oracle VM é o Oracle VM Agent, que deve estar operante para que o Oracle VM
funcione plenamente. Para verificar o funcionamento do agente, é preciso acessar o servidor de administração (provm1, neste caso) e usar o
comando service:
O resultado mostra claramente que todos os processos-chave estão operantes. Se não estiverem, pode haver uma configuração errada e
convém reconfigurá-los (ou talvez eles nunca tenham sido configurados):
O mesmo comando service também é usado para iniciar, reiniciar ou interromper processos do agente:
No entanto, a melhor maneira de administrar o ambiente é pelo console da GUI baseado na Web. Por padrão, a página do administrador
(Manager Webpage) está disponível no servidor Admin, porta 8888. Para ativá-la, você pode digitar o seguinte no navegador (presumindo que o
nome do servidor admin seja oradba2).
http://oradba2:8888/OVS
Efetue login como admin, use a senha criada durante a instalação e será exibida a seguinte tela:
Image 1
A parte inferior da tela mostra os servidores físicos do pool. Neste caso, o pool de servidores é chamado provmpool1 e o IP do servidor físico é
10.14.106.0. Nessa tela, você pode reiniciar, desligar ou retirar o servidor do pool, bem como editar os detalhes desse servidor. Também é
possível adicionar um novo servidor físico ao pool clicando no botão Add Server.
Se você clicar no endereço IP do servidor, os detalhes desse servidor físico serão exibidos conforme segue:
Image 2
Talvez o item mais útil seja a guia Monitor. Se você clicar nessa guia, serão exibidas as informações de utilização dos recursos do servidor –
CPU, disco e memória, como demonstrado a seguir. Nessa página, você pode verificar visualmente se os recursos estão sub ou
sobreutilizados, se precisa adicionar mais servidores físicos e assim por diante.
http://www.oracle.com/technetwork/pt/articles/linux/part5-087549-ptb.html?printOnly=1 8/11
26/8/2014 Artigos: Linux - Guia para dominar comandos avançados do Linux, Parte 5: Administrando o ambiente Linux (continuação)
Voltando à página principal, a guia Server Pools mostra os diferentes pools de servidores definidos. Aqui você pode definir outro pool,
interromper e restaurar o funcionamento do pool, entre outras ações:
Image 4
Se quiser adicionar um usuário ou outro administrador, clique na guia Administration. Existe um administrador padrão chamado ''admin''. É
possível verificar todos os administradores aqui, definir suas propriedades, como endereços de email, nomes etc.:
Image 5
Talvez a atividade mais frequente que você vai executar é administrar cada máquina virtual (VM, na sigla em inglês). Quase todas as funções
estão localizadas na guia Virtual Machines na homepage principal, que mostra as VMs criadas até o momento. Segue uma captura de tela
parcial mostrando duas máquinas chamadas provmlin1 e provmlin2:
A VM chamada provmlin2 é exibida como ''powered off'', ou seja, aparece como desligada para os usuários finais. A outra, provmlin1, apresenta
algum tipo de erro. Vamos começar com a VM provmlin2.
Selecione o botão de opção ao lado dela e clique no botão Power On. Depois de algum tempo, essa VM aparecerá como ''Running'' (em
execução), conforme segue:
Se você clicar no nome da VM, conseguirá ver os respectivos detalhes, entre os quais:
Image 8
A tela acima mostra que à VM foram alocados 512MB de RAM, que ela executa um Oracle Enterprise Linux 5, tem apenas um core, e assim por
diante. Um das informações principais disponíveis na página é a porta VNC: 5900. Com esse dado, você pode ativar o terminal VNC dessa VM.
Aqui, usei um VNV viewer com o nome de host provm1 e porta 5900:
http://www.oracle.com/technetwork/pt/articles/linux/part5-087549-ptb.html?printOnly=1 9/11
26/8/2014 Artigos: Linux - Guia para dominar comandos avançados do Linux, Parte 5: Administrando o ambiente Linux (continuação)
Image 9
Desse modo, a sessão VNC é ativada no servidor. Agora você pode iniciar uma sessão do terminal:
Image 10
Como a porta 5900 do VNC apontou para a máquina virtual chamada provmlin4, o terminal nessa VM foi ativado. Agora, você pode emitir seus
comandos Linux normalmente nesse terminal.
xm
No servidor que executa máquinas virtuais, os comandos de medição de desempenho, como o uptime (descrito na Parte 3 desta série) e o top
(descrito na Parte 2) têm diferentes significados comparados aos seus equivalentes no servidor físico. Num servidor físico, o comando uptime
refere-se ao período de atividade do servidor, enquanto no mundo virtual, ele pode ser ambíguo, referindo-se a cada servidor virtual no servidor
em questão. Para avaliar o desempenho do pool de servidores físicos, use um comando diferente, o xm. Os comandos são emitidos com base
nesse comando principal. Por exemplo, para relacionar os servidores virtuais, você pode usar o comando xm list:
Seguem os demais comandos disponíveis no xm. Muitos deles podem ser executados também por meio da GUI.
Vejamos os comandos usados com maior frequência. Além de saber o tempo de atividade, talvez você queira verificar o desempenho do
sistema usando o comando top. O comando xm top atua de modo bem parecido com o do top no shell regular de servidor – ele é atualizado
automaticamente, tem algumas chaves que exibem diferentes tipos de medições como CPU, I/O, rede etc. Segue o resultado do comando xm
top básico:
Ele mostra estatísticas na forma de porcentagens de uso da CPU, memória etc. referentes a cada VM. Se você pressionar N, verá as atividades
de rede mostradas a seguir:
http://www.oracle.com/technetwork/pt/articles/linux/part5-087549-ptb.html?printOnly=1 10/11
26/8/2014 Artigos: Linux - Guia para dominar comandos avançados do Linux, Parte 5: Administrando o ambiente Linux (continuação)
Net1 RX: 0bytes 0pkts 0err 0drop TX: 0bytes ...
Net2 RX: 0bytes 0pkts 0err 0drop TX: 0bytes ...
Net3 RX: 0bytes 0pkts 0err 0drop TX: 0bytes ...
Net4 RX: 0bytes 0pkts 0err 0drop TX: 0bytes ...
Net5 RX: 0bytes 0pkts 0err 0drop TX: 0bytes ...
Net6 RX: 0bytes 0pkts 0err 0drop TX: 0bytes ...
Net7 RX: 0bytes 0pkts 0err 0drop TX: 0bytes ...
22_provmlin4 --b--- 28 0.1 524288 33.5 1048576 67.1 1 1 9 282 1 06598 1220 0
VCPUs(sec): 0: 28s
Domain-0 -----r 4667 1.6 544768 34.9 no limit n/a 2 8 68791 2902688 0 00 0 0
VCPUs(sec): 0: 2753s 1: 1913s
Vejamos algumas atividades bastante comuns. Uma delas é distribuir a memória disponível entre as VMs. Se você quiser definir 256 MB de
RAM para cada VM, use o comando xm mem-set conforme segue. Depois, use o comando xm list para confirmar a distribuição de RAM.
Conclusão
Aqui termina a extensa série de cinco partes sobre comandos avançados do Linux. Como mencionei no início da série, o Linux tem milhares de
comandos úteis em muitas ocasiões e novos comandos são desenvolvidos e adicionados regularmente. Não é importante conhecer todos os
comandos disponíveis, mas sim saber quais são mais úteis para você
Nesta série, apresentei e expliquei alguns dos comandos necessários para realizar a maior parte de suas tarefas diárias. Se você colocar em
prática alguns deles, junto com as respectivas opções e argumentos, conseguirá lidar com qualquer infraestrutura Linux sem problemas.
Arup Nanda ( arup@proligence.com) é exclusivamente DBA (administrador de bancos de dados) Oracle há mais de 12 anos, com experiência
que abrange todas as áreas da tecnologia de bancos de dados da Oracle, e foi eleito o "DBA do Ano" pela Oracle Magazine em 2003. Arup faz
apresentações e escreve artigos com frequência em eventos e publicações relacionados à Oracle e atua como diretor Oracle ACE.
http://www.oracle.com/technetwork/pt/articles/linux/part5-087549-ptb.html?printOnly=1 11/11