Você está na página 1de 12

Brasil Comunidades Sou um... Eu quero...

Framework para
Desenvolvimento de Aplicativos
Application Express
Business Intelligence
Cloud Computing
Communications
Desempenho e Disponibilidade
de Banco de dados
Data Warehousing
.NET
Linguagens de Programao
Dinmica
Embedded
Enterprise 2.0
Arquitetura Enterprise
Enterprise Management
Grid Computing
Identidade e Segurana
Java
Linux
Service-Oriented Architecture
SQL & PL/SQL
Administrao de Servers e
Storage
Desenvolvimento de Servers e
Storage
Hardware e Arquitetura de
Sistemas
Virtualizao
Guia para dominar comandos avanados do Linux, Parte 4: Administrando o ambiente Linux
Arup Nanda
Publicado em maio de 2009
Nesta parte do guia, voc aprender como administrar o ambiente Linux de modo eficaz com os comandos usados com maior
frequncia.
ifconfig
O comando ifconfig mostra os detalhes da(s) interface(s) de rede definida(s) no sistema. A opo mais comum -a, que mostra todas as interfaces.
# ifconfig -a
O nome normalmente usado para a interface de rede Ethernet eth0. Para encontrar os detalhes de uma interface especfica, por exemplo, eth0,
voc pode usar:
# ifconfig eth0
Apresentamos o resultado a seguir com a explicao:

Vejamos algumas partes fundamentais do resultado:
Link encap: o tipo de hardware fsico compatvel com esta interface (Ethernet, no caso).
HWaddr: o identificador exclusivo da placa NIC. Toda placa NIC tem um identificador exclusivo atribudo pelo fabricante, chamado MAC ou endereo
MAC. O endereo IP anexado ao MAC no servidor. Se esse endereo for alterado ou a placa for transferida para outro servidor, o identificador
MAC no ser alterado.
Mask: a mscara de rede.
inet addr: o endereo IP anexado interface.
RX packets: o nmero de pacotes recebidos por esta interface.
TX packets: o nmero de pacotes enviados.
errors: o nmero de erros no envio ou recebimento.
O comando no usado somente para verificar as configuraes; ele usado tambm para configurar e administrar a interface. Veja a seguir uma
breve lista de parmetros e opes para este comando:
up/down ativa ou desativa uma interface especfica. Voc pode usar o parmetro down para desligar
uma interface (ou desativ-la):
# ifconfig eth0 down
Do mesmo modo, para lig-la (ou ativ-la), use:
# ifconfig eth0 up
media define o tipo de mdia Ethernet, como 10baseT, 10 Base 2 etc. Os valores comuns para o parmetro media so: 10base2, 10baseT e AUI.
Se quiser que Linux detecte o tipo de mdia automaticamente, especifique a opo auto, como mostramos a seguir:
# ifconfig eth0 media auto
add define um endereo IP especfico para a interface. Se voc quisesse definir o endereo IP como 192.168.1.101 para a interface eth0, emitiria o
seguinte comando:
# ifconfig eth0 add 192.168.1.101
netmask define o parmetro de mscara de rede da interface. Veja um exemplo de como definir a mscara de rede da interface eth0 como
255.255.255.0
# ifconfig eth0 netmask 255.255.255.0
Em um ambiente Oracle RAC (Real Application Clusters), preciso definir a mscara de rede de determinada maneira com esse comando.
Em algumas configuraes avanadas, possvel alterar o endereo MAC atribudo para a interface de rede. O parmetro hw realiza a alterao. O
formato geral :
Oracle Technology Network Articles Linux

Produtos e Servios Solues Downloads Loja Suporte Education Parceiros Sobre Oracle Technology Network
Secure Search
Artigos: Linux - Guia para dominar comandos avanados do Linux, Parte ... http://www.oracle.com/technetwork/pt/articles/linux/part4-082155-ptb.html
1 de 12 9/13/2012 18:10
ifconfig
<Interface> hw
<TypeOfInterface> <MAC>

O parmetro <TypeOfInterface> mostra o tipo de interface, por exemplo, ether, no caso de Ethernet. Veja como o endereo MAC atribudo interface
eth0 alterado para 12.34.56.78.90.12 (Observao: o endereo MAC apresentado aqui fictcio. Se corresponder a algum MAC real, ser mera
coincidncia):
# ifconfig eth0 hw ether 12.34.56.78.90.12
Esse procedimento ser til, caso voc adicione uma nova placa (com um novo endereo MAC), mas no deseja alterar a configurao relacionada
ao Linux, como as interfaces de rede.
Aplicao para os usurios Oracle
Este, bem como o nestat descrito a seguir, um dos comandos mais utilizados para administrar o Oracle RAC. O desempenho do Oracle RAC
depende muito da interconexo usada entre os ns do cluster. Se estiver saturada (ou seja, no suporta mais nenhum trfego adicional) ou falhando,
o desempenho ser reduzido. A melhor ao neste caso examinar o resultado da instruo ifconfig para verificar eventuais falhas. Veja um exemplo
tpico:
# ifconfig eth9
eth9 Link encap:Ethernet HWaddr 00:1C:23:CE:6F:82
inet addr:10.14.104.31 Bcast:10.14.104.255 Mask:255.255.255.0
inet6 addr: fe80::21c:23ff:fece:6f82/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1204285416 errors:0 dropped:560923 overruns:0 frame:0
TX packets:587443664 errors:0 dropped:623409 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1670104239570 (1.5 TiB) TX bytes:42726010594 (39.7 GiB)
Interrupt:169 Memory:f8000000-f8012100

Observe o texto realado em vermelho. A contagem de pacotes perdidos extremamente alta; o nmero ideal 0 ou aproximadamente isso. Um
nmero elevado, acima de meio milho, indica que um defeito na interconexo derruba os pacotes, provocando reenvio destes uma boa pista para
o diagnstico de problemas.
netstat
Para avaliar o status de entrada e sada atravs da interface de rede, use o comando netstat, que pode fornecer as informaes completas sobre o
desempenho da interface de rede, chegando at o nvel de soquete. Veja este exemplo:
# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 prolin1:31027 prolin1:5500 TIME_WAIT
tcp 4 0 prolin1l:1521 applin1:40205 ESTABLISHED
tcp 0 0 prolin1l:1522 prolin1:39957 ESTABLISHED
tcp 0 0 prolin1l:3938 prolin1:31017 TIME_WAIT
tcp 0 0 prolin1l:1521 prolin1:21545 ESTABLISHED

and so on

O resultado acima continua para mostrar todos os soquetes abertos. Em termos bastante simples, um soquete est relacionado a uma conexo entre
os dois processos. [Observao importante: no sentido exato, soquetes e conexes so tecnicamente diferentes. Um soquete pode existir sem
uma conexo. No entanto, uma discusso sobre soquetes e conexes estaria alm do escopo deste artigo. Portanto, apresentei apenas o conceito
de maneira fcil de entender.] Naturalmente, uma conexo precisa de uma origem e um destino, chamados endereo local e remoto. Os pontos finais
podem se situar no mesmo servidor ou em servidores diferentes.
Em muitos casos, os programas so conectados ao mesmo servidor. Por exemplo, se dois processadores se comunicarem entre si, os endereos
local e remoto sero iguais, como mostra a primeira linha, tanto o endereo local quanto o remoto equivalem ao servidor prolin1. Entretanto, os
processos se comunicam por meio de uma porta, que ser diferente. Essa porta mostrada ao lado do nome do host, aps o sinal de dois-pontos (:).
O programa do usurio manda os dados a serem enviados pelo soquete para uma fila e o destinatrio os l em uma fila no terminal remoto.
Veja as colunas resultantes:
A coluna na extrema esquerda Proto mostra o tipo de conexo tcp neste caso. A coluna Recv-Q mostra os bytes de dados na fila a serem
enviados para o programa do usurio que estabeleceu a conexo. Esse valor deve ser o mais prximo de zero possvel. Em servidores muito
ocupados, esse valor ser superior a zero, mas no dever ser muito alto. Um nmero mais alto pode no significar muita coisa, a no ser que
aparea um nmero maior na coluna Send-Q, descrita a seguir.
A coluna Send-Q indica os bytes na fila a serem enviados para o programa remoto, ou seja, bytes cujo recebimento ainda no foi acusado pelo
programa remoto. Esse valor deve ficar perto de zero. Um nmero maior pode indicar um gargalo na rede.
Local Address a origem da conexo e o nmero da porta do programa.
Foreign Address o host de destino e o nmero da porta. Na primeira linha, a origem e o destino esto no mesmo host: prolin1. Aconexo est
simplesmente em espera. A segunda linha mostra a conexo estabelecida entre a porta 1521 de proiln1 indo para a porta 40205 de applin1 do host.
mais provvel que uma conexo Oracle v do applin1 do cliente para o prolin1 do servidor de banco de dados. Como o detector Oracle em prolin1
executado na porta 1521, esta a porta de origem. Nessa conexo, o servidor envia os dados solicitados para o cliente.
A coluna State mostra o status da conexo. Seguem alguns valores comuns.
ESTABLISHED a conexo foi estabelecida. Isso no significa que os dados esto fluindo entre origem e destino, simplesmente indica que eles se
comunicam.
CLOSED a conexo foi fechada, ou seja, no est em uso agora.
TIME_WAIT a conexo est sendo fechada, mas ainda h pacotes em processamento na rede.
CLOSE_WAIT a extremidade remota foi desligada e pediu o fechamento da conexo.
Bem, com base nos endereos local e externo, especialmente nmeros de porta, voc pode imaginar que as conexes tm relao com o BD Oracle,
mas seria bom ter certeza disso, correto? Sem dvida.
A opo -p mostra tambm as informaes dos processos:
# netstat -p
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 prolin1:1521 prolin1:33303 ESTABLISHED 1327/oraclePROPRD1
tcp 0 0 prolin1:1521 applin1:51324 ESTABLISHED 13827/oraclePROPRD1
tcp 0 0 prolin1:1521 prolin1:33298 ESTABLISHED 32695/tnslsnr
tcp 0 0 prolin1:1521 prolin1:32544 ESTABLISHED 15251/oracle+ASM
tcp 0 0 prolin1:1521 prolin1:33331 ESTABLISHED 32695/tnslsnr
Artigos: Linux - Guia para dominar comandos avanados do Linux, Parte ... http://www.oracle.com/technetwork/pt/articles/linux/part4-082155-ptb.html
2 de 12 9/13/2012 18:10
Assim, a ltima coluna apresenta claramente o processo de IP e o respectivo nome, confirmando que se trata dos seguintes processos: de servidor
Oracle, de detector e de servidor de ASM.
O comando netstat pode ter vrias opes e parmetros. Vejamos alguns dos principais:
Para descobrir as estatsticas de rede referentes s diferentes interfaces, use a opo -i.
# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 6860659 0 0 0 2055833 0 0 0 BMRU
eth8 1500 0 2345 0 0 0 833 0 0 0 BMRU
lo 16436 0 14449079 0 0 0 14449079 0 0 0 LRU
Isso mostra as diferentes interfaces presentes no servidor (eth0, eth8 etc.) e os indicadores associados a cada uma delas.
RX-OK mostra o nmero de pacotes enviados com xito (com relao a esta interface)
RX-ERR mostra o nmero de erros
RX-DRP mostra pacotes derrubados e que precisam ser reenviados (com ou sem xito)
RX-OVR mostra pacotes excedentes
Os prximos conjuntos de colunas (TX-OK, TX-ERR etc.) mostram as estatsticas correspondentes para envio de dados. A coluna Flg consiste em
um valor composto da propriedade da interface. Cada letra indica a presena de uma propriedade especfica. Segue uma explicao das letras.
B Broadcast (transmisso)
M Multicast (transmisso mltipla)
R Running (em execuo)
U Up (ativo)
O ARP Off ( address resol uti on protocol , protocolo de converso de endereos desativado)
P Point to Point Connection (conexo ponto a ponto)
L Loopback (canal de comunicao com apenas um ponto final)
m Master (mestre)
s Slave (escravo)
Voc pode usar a opo --interface (observao: so dois hfens, no um) para exibir as mesmas informaes referentes a uma determinada
interface.
# netstat --interface=eth0
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 277903459 0 0 0 170897632 0 0 0 BMsRU
Obviamente, o resultado ser extenso e um pouco difcil de entender de imediato. Se estiver comparando diferentes interfaces, melhor usar um
resultado tabular. Se quiser examinar os valores num formato mais legvel, use a opo -e para obter um esultado expandido:
# netstat -i -e
Kernel Interface table
eth0 Link encap:Ethernet HWaddr 00:13:72:CC:EB:00
inet addr:10.14.106.0 Bcast:10.14.107.255 Mask:255.255.252.0
inet6 addr: fe80::213:72ff:fecc:eb00/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6861068 errors:0 dropped:0 overruns:0 frame:0
TX packets:2055956 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3574788558 (3.3 GiB) TX bytes:401608995 (383.0 MiB)
Interrupt:169
Esse resultado lhe parece familiar? Deveria, pois o mesmo obtido com o comando ifconfig.
Se preferir que o resultado mostre endereos IP em vez de nomes de host, use a opo -n.
A opo -s mostra um resumo estatstico de cada protocolo em vez de apresentar os detalhes de cada conexo. Voc pode combin-la com o
indicador especfico do protocolo. Por exemplo, a opo -u mostra as estatsticas relacionadas ao protocolo UDP.
# netstat -s -u
Udp:
12764104 packets received
600849 packets to unknown port received.
0 packet receive errors
13455783 packets sent
Do mesmo modo, para ver as estatsticas referentes ao tcp, use a opo -t e, para obter os dados brutos, use -r.
Uma opo realmente til exibir a tabela de roteamento. Para tanto, use a opo -r.
# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.20.191.0 * 255.255.255.128 U 0 0 0 bond0
172.22.13.0 * 255.255.255.0 U 0 0 0 eth9
169.254.0.0 * 255.255.0.0 U 0 0 0 eth9
default 10.20.191.1 0.0.0.0 UG 0 0 0 bond0
A segunda coluna com os resultados do comando netstat, Gateway, mostra o gateway para o qual feito o roteamento dos pontos de entrada. Se
nenhum gateway for usado, ser exibido apenas um asterisco. A terceira coluna, Genmask, mostra a generalidade da rota, ou seja, a mscara de
rede dessa rota. Quando voc fornece um endereo IP para o qual pretende encontrar uma rota adequada, o kernel percorre cada entrada da tabela
de roteamento, usando a lgica binria (bitwise) AND do endereo e a mscara de rede antes de compar-la ao destino da rota.
A quarta coluna, Flags, exibe os seguintes indicadores que descrevem a rota:
G significa que a rota usa um gateway.
U significa que a interface a ser usada est up (ativa e disponvel).
H significa que um apenas um host pode ser alcanado atravs da rota. Por exemplo, o caso da entrada de loopback 127.0.0.1.
D significa que a rota foi criada de modo dinmico.
! significa que a rota foi rejeitada e os dados sero perdidos.
As trs colunas a seguir mostram os parmetros MSS, Window e irtt que sero aplicados s conexes TCP estabelecidas por meio dessa rota.
MSS corresponde a Maximum Segment Size o tamanho do maior datagrama a ser transmitido pela rota em questo.
Window o volume mximo de dados que o sistema aceitar em um nico pico de um host remoto dessa rota.
irtt significa Initial Round Trip Time um conceito um pouco complicado para explicar. Vejamos o que significa irtt separadamente.
Artigos: Linux - Guia para dominar comandos avanados do Linux, Parte ... http://www.oracle.com/technetwork/pt/articles/linux/part4-082155-ptb.html
3 de 12 9/13/2012 18:10
O protocolo TCP conta com uma verificao de confiabilidade integrada. Se falhar durante a transmisso, o pacote de dados ser retransmitido. O
protocolo acompanha o tempo que leva para os dados atingirem o destino e acusa o recebimento. Se o reconhecimento no chegar no perodo
esperado, o pacote ser retransmitido. O perodo que o protocolo precisa aguardar antes de retransmitir os dados definido para a interface uma
vez (mas pode ser alterado) e esse valor conhecido como ini ti al round trip ti me. O nmero 0 indica que o valor padro foi aplicado. Por fim, o
ltimo campo exibe a interface de rede a ser usada pela rota.
nslookup
Cada host acessvel em uma rede deve ter um endereo IP que o identifique de modo exclusivo. Na internet, que no deixa de ser uma imensa rede,
os endereos IP permitem que as conexes atinjam os servidores que executam os sites, por exemplo, www.oracle.com. Ento, quando um host
(como um cliente) quer conectar-se a outro (como um servidor de banco de dados) usando seu nome e no o endereo IP, como o navegador do
cliente sabe a qual endereo IP deve conectar-se?
O mecanismo de traduo do nome do host em endereos IP conhecido como resoluo de nomes. No nvel mais rudimentar, o host tem um
arquivo especial chamado hosts que armazena o endereo IP pares de nomes do host. Veja este arquivo de exemplo:

# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.1.101 prolin1.proligence.com prolin1
192.168.1.102 prolin2.proligence.com prolin2
Neste exemplo, o nome do host prolin1.proligence.com traduzido como 192.168.1.101. A entrada especial com o endereo IP 127.0.0.1 chamada
entrada de loopback e aponta-se de volta ao servidor por meio de uma interface de rede especial chamada lo (vista anteriormente nos comandos
ifconfig e netstat).
At aqui, tudo bem, mas no possvel colocar todos os endereos IP do mundo nesse arquivo. preciso ter outro mecanismo para realizar a
resoluo de nomes. Um servidor especial, chamado nameserver, exerce essa funo. O nameserver funciona como uma lista telefnica usada por
uma operadora, no como uma agenda pessoal. Pode haver vrios nameservers disponveis dentro ou fora da rede privada. Primeiro, o host entra
em contato com um dos nameservers, obtm o endereo IP do host de destino ao qual deseja conectar-se e tenta estabelecer conexo com esse
endereo IP.
Como o host sabe quais so os nameservers em questo? Procurando em um arquivo especial chamado /etc/resolv.conf para obter a informao
desejada. Veja uma amostra do arquivo resolv.

; generated by /sbin/dhclient-script
search proligence.com
nameserver 10.14.1.58
nameserver 10.14.1.59
nameserver 10.20.223.108
Como se pode ter certeza de que a resoluo de nomes est funcionando corretamente com relao a um determinado nome de host? Em outras
palavras, preciso estar certo de que quando tentar entrar em contato com um host chamado oracle.com, o sistema Linux poder encontrar o
endereo IP no ameserver. O comando nslookup til para esse fim. Veja como us-lo:
# nslookup oracle.com
Server: 10.14.1.58
Address: 10.14.1.58#53

Non-authoritative answer:
Name: oracle.com
Address: 141.146.8.66

Vejamos o resultado em detalhes. O resultado Server e o endereo do nameserver. O nameserver converte o nome oracle.com no endereo IP
141.146.8.66 mostrado ao lado da palavra Server no resultado. Se voc colocar esse IP no campo de URL do navegador - http://141.146.8.66 em
vez de http://oracle.com - chegar ao site oracle.com.
Se cometer um erro ou procurar um host incorreto:

# nslookup oracle-site.com
Server: 10.14.1.58
Address: 10.14.1.58#53

** server can't find oracle-site.com: NXDOMAIN

A mensagem bastante clara: esse host no existe.
dig
O comando nslookup foi desaprovado. Em seu lugar, um comando novo e mais poderoso dig (domain informati on groper) deve ser usado. Em
alguns servidores Linux mais recentes o comando nslookup talvez no esteja disponvel.
Vejamos um exemplo. Para verificar a resoluo de nome do host oracle.com, voc pode usar este comando:

# dig oracle.com
; <<>> DiG 9.2.4 <<>> oracle.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62512
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 8, ADDITIONAL: 8

;; QUESTION SECTION:
;oracle.com. IN A

;; ANSWER SECTION:
oracle.com. 300 IN A 141.146.8.66

;; AUTHORITY SECTION:
oracle.com. 3230 IN NS ns1.oracle.com.
oracle.com. 3230 IN NS ns4.oracle.com.
oracle.com. 3230 IN NS u-ns1.oracle.com.
oracle.com. 3230 IN NS u-ns2.oracle.com.
oracle.com. 3230 IN NS u-ns3.oracle.com.
oracle.com. 3230 IN NS u-ns4.oracle.com.
oracle.com. 3230 IN NS u-ns5.oracle.com.
oracle.com. 3230 IN NS u-ns6.oracle.com.
Artigos: Linux - Guia para dominar comandos avanados do Linux, Parte ... http://www.oracle.com/technetwork/pt/articles/linux/part4-082155-ptb.html
4 de 12 9/13/2012 18:10

;; ADDITIONAL SECTION:
ns1.oracle.com. 124934 IN A 148.87.1.20
ns4.oracle.com. 124934 IN A 148.87.112.100
u-ns1.oracle.com. 46043 IN A 204.74.108.1
u-ns2.oracle.com. 46043 IN A 204.74.109.1
u-ns3.oracle.com. 46043 IN A 199.7.68.1
u-ns4.oracle.com. 46043 IN A 199.7.69.1
u-ns5.oracle.com. 46043 IN A 204.74.114.1
u-ns6.oracle.com. 46043 IN A 204.74.115.1

;; Query time: 97 msec
;; SERVER: 10.14.1.58#53(10.14.1.58)
;; WHEN: Mon Dec 29 22:05:56 2008
;; MSG SIZE rcvd: 328

O resultado mammoth ressalta vrios aspectos. Ele mostra que o comando enviou uma consulta ao nameserver que, por sua vez, enviou uma
resposta ao host. A resoluo de nome tambm foi feita em outros nameservers, como ns1.oracle.com. Mostra tambm que a execuo da consulta
levou 97 milsimos de segundo.
Se o tamanho do resultado torn-lo impraticvel, voc poder usar a opo +short para remover todas as respostas prolixas:
# dig +short oracle.com
141.146.8.66
Tambm poder usar o endereo IP para reverter a pesquisa de nome do host do endereo IP. A opo -x usada para esse fim.
# dig -x 141.146.8.66
O parmetro +domain til quando procuramos um host em um domnio. Por exemplo, se estiver procurando o host otn no domnio oracle.com. voc
poder usar:
# dig +short otn.oracle.com
ou o parmetro +domain:
# dig +short +tcp +domain=oracle.com otn
www.oracle.com.
www.oraclegha.com.
141.146.8.66

Aplicao para os usurios Oracle
A conectividade estabelecida entre os servidores de aplicativos e de banco de dados. O arquivo TNSNAMES.ORA, usado pela instruo SQL*Net,
pode ficar parecido com o seguinte:
prodb3 =
(description =
(address_list =
(address = (protocol = tcp)(host = prolin3)(port = 1521))
)
(connect_data =
(sid = prodb3)
)
)
O servidor de aplicativos conseguir converter o nome do host prolin3, que provavelmente estar no arquivo /etc/hosts, ou o host prolin3 dever ser
definido no DNS. Para certificar-se de que a resoluo de nome funciona corretamente e aponta para o host correto, use o comando dig.
Com esses dois comandos, voc pode realizar a maioria das tarefas de rede em um ambiente Linux. No restante destas orientaes, ensinaremos
como administrar um ambiente Linux com eficcia.
uptime
Voc acabou de efetuar login no servidor e percebe que algumas coisas que deveriam estar funcionando no esto. Talvez esses processos tenham
sido eliminados ou todos foram desativados por um desligamento. Em vez de tentar adivinhar, descubra se o servidor foi realmente reiniciado com o
comando uptime, que mostra o perodo em que o servidor est ativo desde a ltima reinicializao.
# uptime
16:43:43 up 672 days, 17:46, 45 users, load average: 4.45, 5.18, 5.38
O resultado mostra vrias informaes teis. Aprimeira coluna mostra o horrio em que o comando foi executado. A segunda parte at 672 dias,
17:46 mostra por quanto tempo o servidor ficou ativo. Os nmeros 17:46 indicam as horas e os minutos. Portanto, o servidor em questo est
ligado h 672 dias, 17 horas e 46 minutos.
O prximo item 45 usurios mostra quantos usurios esto conectados ao servidor no momento.
A ltima parte do resultado mostra qual a carga mdia do servidor nos ltimos 1, 5 e 15 minutos, respectivamente. O termo carga mdia uma
pontuao composta que determina a carga no sistema com base nos indicadores da CPU e de I/O (entrada e sada). Quanto maior a mdia, maior a
carga no sistema. A mdia no baseada em uma escala. Diferentemente das porcentagens, ela no termina em um nmero fixo, como 100. Alm
disso, no possvel comparar a carga mdia de dois sistemas. Trata-se de um nmero para quantificar a carga no sistema e relevante apenas a
esse sistema. O resultado em questo mostra que a carga mdia foi de 4,45 no ltimo minuto; 5,18 nos ltimos cinco minutos, e assim por diante.
O comando no tem opes nem aceita outro parmetro alm de -V, que indica a verso do comando.
# uptime -V
procps version 3.2.3

Aplicao para os usurios Oracle
No h um uso especfico desse comando nos sistemas Oracle, com exceo de que voc pode descobrir a carga no sistema para explicar alguns
problemas de desempenho. Se perceber alguns problemas no desempenho no banco de dados e constatar a existncia de carga elevada de I/O ou
na CPU, verifique imediatamente as cargas mdias usando o comando uptime. Se identificar uma carga mdia alta, aprofunde-se para chegar raiz
do problema. Para tanto, existe um verdadeiro arsenal de ferramentas como mpstat, iostat e sar (abordadas nesta parte da srie de orientaes).
Imagine um resultado como este:

# uptime
21:31:04 up 330 days, 7:16, 4 users, load average: 12.90, 1.03, 1.00
Artigos: Linux - Guia para dominar comandos avanados do Linux, Parte ... http://www.oracle.com/technetwork/pt/articles/linux/part4-082155-ptb.html
5 de 12 9/13/2012 18:10
interessante ver como a carga mdia foi bastante elevada (12,90) no ltimo minuto, mas um tanto baixa, ou mesmo irrelevante, nos ltimos 5 e 15
minutos, com 1,03 e 1,00, respectivamente. O que isso significa? Que em menos de 5 minutos, teve incio algum processo que causou um salto na
carga mdia no ltimo minuto. Esse processo no estava presente antes, pois as cargas mdias anteriores foram pequenas. Esta anlise nos leva a
nos concentramos em processos iniciados nos ltimos minutos, agilizando o processo de resoluo do problema.
Naturalmente, como mostra h quanto tempo o servidor est ativo, o comando tambm explica por que a instncia est ativa desde ento.

who
Quem est conectado ao sistema neste momento? Esta uma pergunta comum, especialmente se voc estiver rastreando um usurio errante que
est executando alguns comandos que consomem muitos recursos.
O comando who responde essa pergunta. Este o uso mais simples, sem argumentos ou parmetros.

# who
oracle pts/2 Jan 8 15:57 (10.14.105.139)
oracle pts/3 Jan 8 15:57 (10.14.105.139)
root pts/1 Dec 26 13:42 (:0.0)
root :0 Oct 23 15:32
O comando pode usar vrias opes. Aopo -s o padro e produz um resultado igual ao apresentado neste exemplo.
Ao analisar o resultado, voc talvez comece a forar a memria para lembrar-se do significado das colunas. No se preocupe. Use a opo -H para
exibir o cabealho:

# who -H
NAME LINE TIME COMMENT
oracle pts/2 Jan 8 15:57 (10.14.105.139)
oracle pts/3 Jan 8 15:57 (10.14.105.139)
root pts/1 Dec 26 13:42 (:0.0)
root :0 Oct 23 15:32
Agora, o significado das colunas est claro. A coluna NAME mostra o nome de usurio da pessoa conectada ao sistema. LINE mostra o nome do
terminal. No Linux, cada conexo identificada como um terminal, com a conveno de nomenclatura pts/<n> em que <n> um nmero que
comea com 1. O terminal :0 identifica o terminal X. TIME mostra quando foi efetuado o primeiro login. COMMENTS mostra o endereo IP de onde o
usurio efetuou login.
E se voc quiser apenas uma lista de nomes de usurios em vez de todos esses detalhes irrelevantes? A opo -q resolve a questo, exibindo os
nomes de usurios em uma linha, em ordem alfabtica, alm de uma contagem do nmero total de usurios em uma ponta (.45 neste caso):
# who -q
ananda ananda jsmith klome oracle oracle root root

and so on for 45 names
# users=45

Alguns usurios podem ter acabado de efetuar login, mas ainda no esto fazendo nada. Voc pode verificar h quanto tempo esses usurios esto
inativos, um comando muito til se voc for o chefe: basta usar a opo -u.
# who -uH
NAME LINE TIME IDLE PID COMMENT
oracle pts/2 Jan 8 15:57 . 18127 (10.14.105.139)
oracle pts/3 Jan 8 15:57 00:26 18127 (10.14.105.139)
root pts/1 Dec 26 13:42 old 6451 (:0.0)
root :0 Oct 23 15:32 ? 24215
A nova coluna IDLE mostra h quanto tempo o usurio est inativo no formato hh:mm. Est vendo o valor old nessa coluna? Ele significa que o
usurio est inativo h mais de um dia. A coluna PID mostra o ID do processo da conexo shell.
Outra opo interessante a b, que mostra quando o sistema foi reiniciado.
# who -b
system boot Feb 15 13:31
Neste exemplo, o sistema foi iniciado em 15 de fevereiro s 13h31. Lembra-se do comando uptime? Ele tambm mostra h quanto tempo o sistema
est ativo. Voc pode subtrair os dias mostrados na coluna uptime para saber o dia da inicializao. O comando who -b simplifica bastante a tarefa,
pois mostra diretamente a hora da inicializao.
Aviso muito importante: o comando who -b mostra apenas o dia e o ms, mas no informa o ano. Assim, se o sistema estiver em funcionamento
h mais de um ano, o resultado no refletir o valor correto. Desse modo, o comando uptime sempre a abordagem recomendada, mesmo que voc
tenha de fazer alguns clculos. Veja este exemplo:

# uptime
21:37:49 up 675 days, 22:40,1 user,load average: 3.35,3.08, 2.86
# who -b
system boot Mar 7 22:58
Observe que a hora da inicializao exibida como 7 de maro. Mas o ano 2007, no 2008! O comando uptime mostra o perodo correto o
sistema est ativo h 675 dias. Se efetuar subtraes no for o seu ponto forte, use uma instruo SQL simples para ver qual era a data h 675 dias:
SQL> select sysdate - 675 from dual;

SYSDATE-6
---------
07-MAR-07

A opo -l mostra os logins efetuados no sistema:
# who -lH
NAME LINE TIME IDLE PID COMMENT
LOGIN tty1 Feb 15 13:32 4081 id=1
LOGIN tty6 Feb 15 13:32 4254 id=6
Para descobrir os terminais de usurio inativos, use a opo -d:
# who -dH
NAME LINE TIME IDLE PID COMMENT EXIT
Feb 15 13:31 489 id=si term=0 exit=0
Feb 15 13:32 2870 id=l5 term=0 exit=0
Artigos: Linux - Guia para dominar comandos avanados do Linux, Parte ... http://www.oracle.com/technetwork/pt/articles/linux/part4-082155-ptb.html
6 de 12 9/13/2012 18:10
pts/1 Oct 10 14:53 31869 id=ts/1 term=0 exit=0
pts/4 Jan 11 00:20 22155 id=ts/4 term=0 exit=0
pts/3 Jun 29 16:01 0 id=/3 term=0 exit=0
pts/2 Oct 4 22:35 8371 id=/2 term=0 exit=0
pts/5 Dec 30 03:15 5026 id=ts/5 term=0 exit=0
pts/4 Dec 30 22:35 0 id=/4 term=0 exit=0
s vezes, o processo init (o primeiro que tem incio quando o sistema iniciado) dispara outros processos. A opo -p mostra todos os logins ativos.
# who -pH
NAME LINE TIME PID COMMENT
Feb 15 13:32 4083 id=2
Feb 15 13:32 4090 id=3
Feb 15 13:32 4166 id=4
Feb 15 13:32 4174 id=5
Feb 15 13:32 4255 id=x
Oct 4 23:14 13754 id=h1
Mais adiante, voc conhecer outro comando write que permite a troca de mensagens em tempo real. Aprender tambm como desativar a
capacidade de outros usurios escreverem no seu terminal (o comando mesg). Se quiser saber quais usurios permitem e quais no permitem que
os outros escrevam em seus terminais, use a opo -T:
# who -TH
NAME LINE TIME COMMENT
oracle + pts/2 Jan 11 12:08 (10.23.32.10)
oracle + pts/3 Jan 11 12:08 (10.23.32.10)
oracle - pts/4 Jan 11 12:08 (10.23.32.10)
root + pts/1 Dec 26 13:42 (:0.0)
root ? :0 Oct 23 15:32
O sinal de adio (+) antes do nome do terminal indica a aceitao de comandos de outros usurios; j o sinal de subtrao (-) indica que o terminal
no permite isso. O sinal ? nesse campo significa que o terminal no suporta inseres, por exemplo, de uma sesso X-window.
Para obter o atual nvel de execuo do sistema, use a opo -r:
# who -rH
NAME LINE TIME IDLE PID COMMENT
run-level 5 Feb 15 13:31 last=S
Para obter uma listagem mais descritiva, use a opo -a (todos), que combina as opes -b -d -l -p -r -t -T -u. Portanto, esses dois comandos
produzem o mesmo resultado:
# who -bdlprtTu
# who -a
Segue um exemplo de resultado (com o cabealho para que voc entenda melhor o significado das colunas):
# who -aH
NAME LINE TIME IDLE PID COMMENT EXIT
Feb 15 13:31 489 id=si term=0 exit=0
system boot Feb 15 13:31
run-level 5 Feb 15 13:31 last=S
Feb 15 13:32 2870 id=l5 term=0 exit=0
LOGIN tty1 Feb 15 13:32 4081 id=1
Feb 15 13:32 4083 id=2
Feb 15 13:32 4090 id=3
Feb 15 13:32 4166 id=4
Feb 15 13:32 4174 id=5
LOGIN tty6 Feb 15 13:32 4254 id=6
Feb 15 13:32 4255 id=x
Oct 4 23:14 13754 id=h1
pts/1 Oct 10 14:53 31869 id=ts/1 term=0 exit=0
oracle + pts/2 Jan 8 15:57 . 18127 (10.14.105.139)
oracle + pts/3 Jan 8 15:57 00:18 18127 (10.14.105.139)
pts/4 Dec 30 03:15 5026 id=ts/4 term=0 exit=0
pts/3 Jun 29 16:01 0 id=/3 term=0 exit=0
root + pts/1 Dec 26 13:42 old 6451 (:0.0)
pts/2 Oct 4 22:35 8371 id=/2 term=0 exit=0
root ? :0 Oct 23 15:32 ? 24215
pts/5 Dec 30 03:15 5026 id=ts/5 term=0 exit=0
pts/4 Dec 30 22:35 0 id=/4 term=0 exit=0
Para obter informaes de seu prprio login, use a opo -m:
# who -m
oracle pts/2 Jan 8 15:57 (10.14.105.139)
Notou o valor pts/2? o nmero do terminal. Para encontrar seu prprio terminal, use o comando tty:
# tty
/dev/pts/2
Existe uma estrutura de comando especial no Linux para mostrar seu prprio login who am I que produz o mesmo resultado apresentado pela
opo -m.
# who am i
oracle pts/2 Jan 8 15:57 (10.14.105.139)
Os nicos argumentos permitidos so am i" e mom likes (sim, acredite ou no!). Ambos produzem o mesmo resultado.
O sistema original do Instant Messenger
Com o advento dos programas de bate-papo e mensagens instantneas, parece que superamos o desafio de manter uma troca de informaes em
tempo real sem nos distrairmos com a comunicao por voz. Mas eles so nicos no domnio de programas especiais? O conceito de bate-papo ou
mensagem instantnea esteve disponvel no *nix por algum tempo. Na verdade, voc tem um sistema IM totalmente seguro criado direto dentro no
Linux. Ele permite que voc converse de maneira seguro com qualquer pessoa conectada ao sistema; sem precisar de conexo com a internet. O
bate-papo habilitado atravs dos comandos: write, mesg, wall e talk. Vamos examinar cada um deles.
O comando write pode escrever em um terminal do usurio. Se o usurio efetuou login em mais de um terminal, voc poder dirigir-se a um terminal
especfico. Veja como voc escreve a mensagem Cuidado com o vrus para o usurio oracle conectado no terminal pts/3:
Artigos: Linux - Guia para dominar comandos avanados do Linux, Parte ... http://www.oracle.com/technetwork/pt/articles/linux/part4-082155-ptb.html
7 de 12 9/13/2012 18:10

# write oracle pts/3
Beware of the virus
ttyl
<Control-D>
#
A combinao de teclas Ctrl-D finaliza a mensagem, retorna a solicitao shell (#) para o usurio e envia para o terminal do usurio. Quando a
mensagem mencionada enviada, o usurio oracle ver as seguintes mensagens no terminal pts/3:
Beware of the virus
ttyl
Cada linha surgir conforme o remetente pressionar a tecla ENTER. Quando o remetente pressiona Ctrl-D, marcando o final da transmisso, o
destinatrio v EOF na tela. A mensagem ser exibida, independentemente da ao atual do usurio. Se o usurio estiver editando um arquivo em vi,
a mensagem aparecer e o usurio poder apag-la pressionando Ctrl-L. Se o usurio estiver na instruo SQL*Plus, a mensagem ainda ser
exibida, mas no afetar o pressionamento.
O que aconteceria se voc no quisesse essa inconvenincia? Voc no quer que ningum envie uma mensagem para voc ; como se voc
deixasse o telefone fora do gancho. Voc no pode fazer isso utilizando o comando mesg. Este comando desativa outras capacidades para enviar
uma mensagem para voc. O comando sem nenhum argumento mostra a capacidade:
# mesg
is y
Isso mostra que outros podem escrever para voc. Para deslig-lo:
# mesg n
Agora para confirmar:
# mesg
is n
Quando voc tenta escrever para os terminais de outros usurios, talvez queira saber quais terminais desativaram escrever de outros. O comando
who -T (descrito anteriormente nestas orientaes) mostra que:
# who -TH
NAME LINE TIME COMMENT
oracle + pts/2 Jan 11 12:08 (10.23.32.10)
oracle + pts/3 Jan 11 12:08 (10.23.32.10)
oracle - pts/4 Jan 11 12:08 (10.23.32.10)
root + pts/1 Dec 26 13:42 (:0.0)
root ? :0 Oct 23 15:32
O sinal + antes do nome do terminal indica que ele aceita comandos write de outros; o sinal - indica que ele no aceita. O sinal ? indica que o
terminal no permite inseres, por exemplo uma sesso X-window.
O que aconteceria se voc escrevesse para todos os usurios conectados? Em vez de digitar para cada usurio, utilize o comando wall:
# wall
hello everyone
Quando enviado, o que segue exibido nos terminais de todos os usurios conectados:
Broadcast message from oracle (pts/2) (Thu Jan 8 16:37:25 2009):
hello everyone

Isso muito til para o usurio raiz. Quando quiser desligar o sistema, desmontar um sistema de arquivos ou executar funes administrativas
similares, voc pode querer que todos os usurios efetuem logoff. Utilize este comando para enviar uma mensagem a todos.
Finalmente, o programa talk permite o bate-papo em tempo real. Basta digitar o seguinte:
# talk oracle pts/2
Se quiser falar com um usurio em um servidor diferente prolin2 voc pode utilizar
# talk oracle@prolin2 pts/2
Ele abre uma janela de bate-papo no outro terminal e agora voc pode usar o bate-papo em tempo real. Isso diferente de um programa de
bate-papo profissional que voc est utilizando agora? Provavelmente no. Mas, a propsito, para conseguir conversar, voc deve ter certeza de
que o talkd daemon est executando, que pode no ter sido instalado.
w
Sim, um comando, mesmo que for apenas uma letra! O comando w uma combinao dos comandos uptime e who, determinados um
imediatamente aps o outro, nessa ordem. Vamos ver um resultado muito comum sem argumentos e opes.
# w
17:29:22 up 672 days, 18:31, 2 users, load average: 4.52, 4.54, 4.59
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
oracle pts/1 10.14.105.139 16:43 0.00s 0.06s 0.01s w
oracle pts/2 10.14.105.139 17:26 57.00s 3.17s 3.17s sqlplus as sysdba

and so on

O resultado tem duas partes distintas. Aprimeira parte mostrar o resultado do comando uptime (descrito anteriormente nessas instrues), que
mostra h quanto tempo o servidor est ativo, quantos usurios efetuaram logon e a carga mdia para os ltimos 1, 5 e 15 minutos. As partes do
resultado foram explicadas no comando uptime. A segunda parte do resultado mostra o resultado do comando who com a opo -H (tambm
explicado nessas instrues). Novamente, essas diversas colunas foram explicadas no comando who.
Se voc prefere no exibir o cabealho, utilize a opo -h.
# w -h
oracle pts/1 10.14.105.139 16:43 0.00s 0.02s 0.01s w -h
Isso remove o cabealho do resultado. til nos scripts shell, onde voc quer ler e agir de acordo com o resultado sem a tarefa adicional de pular o
cabealho.
Artigos: Linux - Guia para dominar comandos avanados do Linux, Parte ... http://www.oracle.com/technetwork/pt/articles/linux/part4-082155-ptb.html
8 de 12 9/13/2012 18:10
A opo -s produz uma verso compacta (curta) do resultado, removendo o tempo de login, e os tempos de JPCU e PCPU.
# w -s
17:30:07 up 672 days, 18:32, 2 users, load average: 5.03, 4.65, 4.63
USER TTY FROM IDLE WHAT
oracle pts/1 10.14.105.139 0.00s w -s
oracle pts/2 10.14.105.139 1:42 sqlplus as sysdba
Voc pode achar que o campo FROM no realmente muito til. Ele mostra o endereo IP do mesmo servidor, pois os logins esto em todos os
locais. Para economizar espao no resultado, voc pode querer suprimi-lo. A opo -f desativa a impresso do campo FROM:
# w -f
17:30:53 up 672 days, 18:33, 2 users, load average: 4.77, 4.65, 4.63
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
oracle pts/1 16:43 0.00s 0.06s 0.00s w -f
oracle pts/2 17:26 2:28 3.17s 3.17s sqlplus as sysdba
O comando s aceita um parmetro: o nome de um usurio. Por padro, w mostra o processo e o login de todos os usurios. Se voc colocar um
nome de usurio, ele mostrar o login somente daquele usurio. Por exemplo, para mostrar o login somente da raiz, emita:
# w -h root
root pts/1 :0.0 26Dec08 13days 0.01s 0.01s bash
root :0 - 23Oct08 ?xdm? 21:13m 1.81s /usr/bin/gnome-session
A opo -h foi utilizada para suprimir a exibio do cabealho.
kill
Um processo est executando e voc quer que ele seja finalizado. O que voc deve fazer? O processo executa em segundo plano, assim no
preciso ir at o terminal e pressionar Ctrl-C; ou, o processo pertence a outro usurio (utilizando o mesmo ID de usurio, como oracle) e voc quer
finaliz-lo. O comando kill vem para resgatar, ele faz o que o nome sugere ele destroi o processo. O uso mais comum :
# kill

<Process ID of the Linux process>

Suponha que voc queira destruir um processo chamado sqlplus emitido pelo usurio oracle, voc precisa conhecer seu processid, ou PID:
# ps -aef|grep sqlplus|grep ananda
oracle 8728 23916 0 10:36 pts/3 00:00:00 sqlplus
oracle 8768 23896 0 10:36 pts/2 00:00:00 grep sqlplus
Agora para eliminar o PID 8728:
# kill 8728
isso, o processo eliminado. Claro, voc precisa ser o mesmo usurio (oracle) para eliminar um processo iniciado pelo oracle. Para eliminar
processos iniciados por outros usurios, voc precisa ser superusurio raiz.
s vezes voc pode simplesmente querer interromper o processo, em vez de elimin-lo. Utilize a opo -SIGSTOP com o comando kill.
# kill -SIGSTOP 9790
# ps -aef|grep sqlplus|grep oracle
oracle 9790 23916 0 10:41 pts/3 00:00:00 sqlplus as sysdba
oracle 9885 23896 0 10:41 pts/2 00:00:00 grep sqlplus
Isso timo para tarefas em Segundo plano, mas com processos em primeiro plano, ele simplesmente interrompe o processo e remove o controle do
usurio. Ento, se voc marcar o processo novamente aps emitir o comando,
# ps -aef|grep sqlplus|grep oracle
oracle 9790 23916 0 10:41 pts/3 00:00:00 sqlplus as sysdba
oracle 10144 23896 0 10:42 pts/2 00:00:00 grep sqlplus
ver que o processo ainda est executando. Ele no foi finalizado. Para eliminar este processo, e todos os processos persistentes que se recusam a
ser finalizado, voc precisa passar um novo sinal chamado SIGKILL. O sinal padro SIGTERM.
# kill -SIGKILL 9790
# ps -aef|grep sqlplus|grep oracle
oracle 10092 23916 0 10:42 pts/3 00:00:00 sqlplus as sysdba
oracle 10198 23896 0 10:43 pts/2 00:00:00 grep sqlplus
Observe as opes -SIGSTOP e -SIGKILL, que passam um sinal especfico (stop e kill, respectivamente) para o processo. Da mesma forma, h
vrios outros sinais que voc pode utilizar. Para obter uma lista de todos os sinais disponveis, utilize a opo -l (que a letra L, no o nmero 1):
# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO
30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1
36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5
40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9
44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13
52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9
56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5
60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1
64) SIGRTMAX
Voc tambm pode utilizar o nmero equivalente do sinal em vez do nome real do sinal. Por exemplo, em vez de eliminar -SIGKILL 9790, voc pode
eliminar -9 9790.
A propsito, este um comando interessante. Lembre-se: quase todos os comandos Linux so, em geral, arquivos executveis localizados em /bin,
/sbin/, /user/bin e diretrios similares. O executvel PATH determina onde esses arquivos de comando podem ser encontrados. Alguns outros
comandos so, na verdade, o comando incorporado, ou seja, eles so parte do prprio shell. Um dos exemplos o comando kill. Para demonstrar,
temos o seguinte:
# kill -h
Artigos: Linux - Guia para dominar comandos avanados do Linux, Parte ... http://www.oracle.com/technetwork/pt/articles/linux/part4-082155-ptb.html
9 de 12 9/13/2012 18:10
-bash: kill: h: invalid signal specification
Observe o resultado que retornou do shell apropriado. A utilizao est incorreta, pois o argumento -h no estava previsto. Agora, utilize o seguinte:
# /bin/kill -h
usage: kill [ -s signal | -p ] [ -a ] pid ...
kill -l [ signal ]
Aha! Esta verso do comando kill como um executvel no diretrio /bin aceitou a opo -h corretamente. Agora voc sabe a diferena sutil entre os
comandos shell built-in e seus utilitrios homnimos na forma de arquivos executveis. Por que importante saber a diferena? Porque a
funcionalidade varia significativamente nesses dois formulrios. O comando kill integrado tem menos funcionalidade do que seu utilitrio equivalente.
Quando voc emite o comando kill est, na verdade, chamando o aplicativo incorporado, no o utilitrio. Para adicionar outra funcionalidade, voc
precisa utilizar o utilitrio /bin/kill.
O utilitrio kill tem muitas opes e argumentos. O mais popular o comando kill, para eliminar os processos com nomes do processo, em vez de
PIDs. Veja um exemplo onde voc quer eliminar todos os processos como nome sqlplus:
# /bin/kill sqlplus
[1] Terminated sqlplus
[2] Terminated sqlplus
[3] Terminated sqlplus
[4] Terminated sqlplus
[5] Terminated sqlplus
[6] Terminated sqlplus
[7]- Terminated sqlplus
[8]+ Terminated sqlplus
s vezes voc pode querer ver se todos os IDs do processo kill terminaro. A opo -p faz isso. Ela imprime todos os PIDs que seriam eliminados,
sem real mente elimin-los. Isso serve como uma confirmao antes da ao:
# /bin/kill -p sqlplus
6798
6802
6803
6807
6808
6812
6813
6817
O resultado mostra os PIDs dos processos que seriam eliminados. Se voc emitir o comando novamente sem a opo -p, isso eliminar todos os
processos.
Nesse momento, voc pode estar tentando a conhecer os outros comandos que esto integrados no shell, em vez de ser utilitrio.
# man -k builtin
. [builtins] (1) - bash built-in commands, see bash(1)
: [builtins] (1) - bash built-in commands, see bash(1)
[ [builtins] (1) - bash built-in commands, see bash(1)
alias [builtins] (1) - bash built-in commands, see bash(1)
bash [builtins] (1) - bash built-in commands, see bash(1)
bg [builtins] (1) - bash built-in commands, see bash(1)

and so on

Algumas entradas parecem familiares: alias, bg e assim em diante. Alguns so puramente integrados, por exemplo, alias. No existe arquivo
executvel chamado alias.
Aplicao para os usurios Oracle
Eliminar um processo tem vrios usos: quase todos para eliminar processos zumbis, processos que esto em Segundo plano e outros que foram
interrompidos respondendo aos comandos normais de desligamento.
Por exemplo, a instncia do banco de dados Oracle no est desligando como resultado de algum problema de memria. Voc precisa desativ-lo,
eliminando um dos principais processos, como pmon ou smon. Esta no dever ser uma atividade para ser executada o tempo todo, apenas quando
voc no tenha muitas opes.
Talvez voc queira eliminar todas as sesses sqlplus ou todas as tarefas rman utilizando o comando kill. Os processos Oracle Enterprise Manager
executam como processos perl; ou executam processos DBCA ou DBUA, que voc pode querer eliminar rapidamente:
# /bin/kill perl rman perl dbca dbua java
Existe tambm um uso mais comum do comando. Quando voc quer encerrar uma sesso do usurio no Oracle Database, em geral voc faz o
seguinte:
Localiza o SID e o Serial# da sesso Elimina a sesso utilizando o comando ALTER SYSTEM Vamos ver o que acontece quando queremos eliminar
a sesso do usurio SH.
SQL> select sid, serial#, status
2 from v$session
3* where username = 'SH';
SID SERIAL# STATUS
---------- ---------- --------
116 5784 INACTIVE

SQL> alter system kill session '116,5784'
2 /

System altered.

Its killed; but when you check the status of the session:

SID SERIAL# STATUS
---------- ---------- --------
116 5784 KILLED
Ele exibido como KILLED, no completamente perdido. Isso acontece porque o Oracle espera at que o usurio SH entre na sua sesso e tente
fazer algo, durante o qual ele obtm a mensagem ORA-00028: sua sesso foi eliminada. Depois disso, a sesso desaparece de V$SESSION.
Uma maneira mais rpida para eliminar uma sesso eliminar o processo do servidor correspondente no nvel Linux. Para fazer isso, primeiro
Artigos: Linux - Guia para dominar comandos avanados do Linux, Parte ... http://www.oracle.com/technetwork/pt/articles/linux/part4-082155-ptb.html
10 de 12 9/13/2012 18:10
localize o PID do processo do servidor:
SQL> select spid
2 from v$process
3 where addr =
4 (
5 select paddr
6 from v$session
7 where username = 'SH'
8 );
SPID
------------------------
30986
O SPID o ID do Processo do processo do servidor. Agora elimine este processo:
# kill -9 30986
Agora, se voc marcar a exibio V$SESSION, ela desaparecer imediatamente. O usurio no obter uma mensagem imediatamente; mas se ele
tentar executar uma consulta no banco de dados, obter:
ERROR at line 1:
ORA-03135: connection lost contact
Process ID: 30986
Session ID: 125 Serial number: 34528
Este um mtodo mais rpido para eliminar uma sesso, mas h algumas restries. O banco de dados do Oracle precisa executar uma limpeza da
sesso recuperao de alteraes e assim em diante. Assim, isso seria executado somente quando as sesses estiverem inativas. Do contrrio,
voc pode utilizar uma das outras duas formas para eliminar uma sesso imediatamente:
alter system disconnect session '125,35447' immediate;
alter system disconnect session '125,35447' post_transaction;

killall
Diferente da dupla natureza do comando kill, o killall apenas um utilitrio, ou seja, um programa executvel no diretrio /usr/bin. Ele similar ao
comando kill em funcionalidade, mas em vez de eliminar um processo baseado no seu PID, ele aceita o nome do processo como um argumento. Por
exemplo, para eliminar todos os processos sqlplus, emita:
# killall sqlplus
Isso elimina todos os processos sqlplus nomeados (que voc tem permisso para eliminar, claro). Diferente do comando integrado kill, no
necessrio saber o ID do Processo dos processos a serem eliminados.
Se o comando no finalizar o processo, ou o processo no responder a um sinal TERM, voc poder enviar um sinal SIGKILL explcito, conforme foi
visto no comando kill utilizando a opo -s.

# killall -s SIGKILL sqlplus
Como o kill, voc pode utilizar a opo -9 em vez de -s SIGKILL. Para obter uma lista de todos os sinais disponveis, utilize a opo -l.
# killall -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO
PWR SYS
UNUSED
Para obter um resultado prolixo do comando killall, utilize a opo -v:
# killall -v sqlplus
Killed sqlplus(26448) with signal 15
Killed sqlplus(26452) with signal 15
Killed sqlplus(26456) with signal 15
Killed sqlplus(26457) with signal 15

and so on

s vezes voc pode querer examinar o processo antes de finaliz-lo. A opo -i permite que voc execute-a de maneira interativa. Esta opo solicita
a sua entrada antes de elimin-la:
# killall -i sqlplus
Kill sqlplus(2537) ? (y/n) n
Kill sqlplus(2555) ? (y/n) n
Kill sqlplus(2555) ? (y/n) y
Killed sqlplus(2555) with signal 15
O que acontece quando voc passa um nome wrong_process?
# killall wrong_process
wrong_process: no process killed
No h nenhum processo em execuo chamado wrong_process, ento nada foi eliminado e o resultado mostrou isso claramente. Para suprimir
essa reclamao nenhum processo eliminado, utilize a opo -q. Esta opo til em scripts shell onde voc no pode analisar o resultado.
Particularmente, voc quer capturar o cdigo de retorno do comando:
# killall -q wrong_process
# echo $?
1
O cdigo de retorno (mostrado pela varivel shell $?) 1, em vez de 0, significando uma falha. Voc pode marcar o cdigo de retorno para
examinar se o processo killall foi executado com sucesso, ou seja, o cdigo de retorno foi 0.
Uma coisa interessante sobre este comando que ele no elimina a se prprio. Claro, ele elimina outros comandos killall determinados em outro
lugar, mas no em si prprio.

Aplicao para os usurios Oracle
Artigos: Linux - Guia para dominar comandos avanados do Linux, Parte ... http://www.oracle.com/technetwork/pt/articles/linux/part4-082155-ptb.html
11 de 12 9/13/2012 18:10
Assim como o kill, o comando killall tambm utilizado para eliminar processos. A maior vantagem do comando killall a capacidade de exibir o
processid e a natureza interativa. Suponha que voc queira eliminar todos os processos perl, java, sqlplus, rman e dbca, mas de maneira interativa;
voc pode emitir:
# killall -i -p perl sqlplus java rman dbca
Kill sqlplus(pgid 7053) ? (y/n) n
Kill perl(pgid 31233) ? (y/n) n

... and so on ...

Isso permite que voc veja o PID antes de elimin-los, o que pode ser muito til.
Concluso
Nessas orientaes, voc aprender sobre esses comandos (mostrados em ordem alfabtica)
dig Uma verso mais recente do nslookup
ifconfig Para exibir informaes nas interfaces de rede
kill Eliminar um processo especfico
killall Eliminar um processo especfico, um grupo de processos e nomes correspondentes a um
padro
mesg Para ativar e desativar a capacidade das outras pessoas a exibir algo no terminal de
algum.
netstat Para exibir estatsticas e outras medies sobre a utilizao da interface de rede
nslookup Para pesquisar um nome do host para seu endereo IP ou pesquisar o endereo IP para
seu nome do host no DNS
talk Para estabelecer um sistema de mensagem instantnea entre dois usurios para
bate-papo em tempo real
uptime H quanto tempo o sistema esteve ativo e sua carga mdia de 1, 5 e 15 minutos
w Combinao de uptime e who
wall Para exibir algum texto nos terminais de todos os usurios conectados
who Para exibir os usurios conectados no sistema e o que eles esto fazendo
write Para exibir instantaneamente algo em uma sesso do terminal de um usurio especfico
Conforme mencionei anteriormente, no tenho a inteno de apresentar cada comando disponvel nos sistemas Linux. Voc precisa dominar
somente alguns deles para administrar um sistema de maneira eficiente e essa srie mostra os mais importantes. Pratique-os no seu ambiente para
compreender muito bem esses comandos, com seus parmetros e opes. Na prxima parte, a ltima voc aprender como administrar um
ambiente, Linux em uma mquina normal, em uma mquina virtual e distribuda.
Arup Nanda ( arup@proligence.com) exclusivamente DBA (administrador de bancos de dados) Oracle h mais de 12 anos, com experincia que
abrange todas as reas da tecnologia de bancos de dados da Oracle, e foi eleito o "DBAdo Ano" pela Oracle Magazine em 2003. Arup faz
apresentaes e escreve artigos com frequncia em eventos e publicaes relacionados Oracle e atua como diretor Oracle ACE.
Subscribe Sobre a Oracle Oportunidades de Emprego Contato Mapa do Site Avisos Legais Termos de Uso Privacidade
E-mail this page Printer View
Oracle Mobile
Artigos: Linux - Guia para dominar comandos avanados do Linux, Parte ... http://www.oracle.com/technetwork/pt/articles/linux/part4-082155-ptb.html
12 de 12 9/13/2012 18:10

Você também pode gostar