Português do Brasil English
Devin no Facebook  Devin no Twitter  RSS do Site 
Linux    

Comandos de Informações do Sistema Linux


Comentários  10
Visualizações  
99,916

Uma das funções principais de um administrador de sistemas é monitorar e obter informações do sistema que está sendo administrado. No Linux, existem dezenas de comandos que ajudam o administrador obter informações diversas como: espaço em disco, mensagens do kernel, bibliotecas carregadas, arquivos abertos, arquivos travados, informações de hardware e muito mais.

Antes de mais nada, é bom saber que além dos comandos citados a seguir, os mais diversos tipos de informação podem ser encontrados nos diretórios /proc (sistema/kernel) e /sys (hardware). Geralmente são arquivos texto e podem ser visualizados com o cat ou qualquer editor de texto. Não que os comandos a seguir sejam inúteis (pelo contrário).

date – Data do sistema

Sintaxe: $ date [+formato]

A simples execução do date mostra a data do sistema atual, por exemplo:

$ date
Tue Nov 11 23:02:26 BRST 2008

Como podemos ver, há informações da data, da hora e do fuso-horário. Neste caso, a sintaxe está em inglês, porque o sistema utilizado na execução está configurado para inglês. No caso do português, ficaria:

$ date
Ter Nov 11 21:20:00 BRST 2008

Para mudar o formato dessa mostragem, usamos caracteres especiais depois do símbolo “+”, como neste exemplo:

$ date "+%d/%m/%Y"
11/11/2008

Neste caso, formatei de forma %d/%m/%Y, onde %d é o dia, %m é o mês e %Y é o ano. Uma lista completa de caracteres especiais pode ser encontrada na página de manual do comando date:

$ man date

Além de apenas mostrar a hora atual, este comando pode ser muito útil na hora de criar arquivos com nomes específicos, por exemplo: backups com a data e hora no nome dos arquivos. O uso deste comando com shell-script pode ser muito extenso e útil!

cal – Calendário

Sintaxe: $ cal [opções]

Se você não tem um calendário visual em algum lugar e estiver com a linha de comando na sua frente, o comando cal vai te mostrar um calendário formatado de forma amigável e de fácil consulta. Por exemplo:

$ cal
November 2008
Su Mo Tu We Th Fr Sa
1
2  3  4  5  6  7  8
9  10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

Sem parâmetro nenhum, o cal me mostrou o calendário do mês atual. Note que em um terminal texto, o dia atual vai estar marcado com as cores invertidas.

Mais uma vez, este exemplo foi em inglês, mas se o sistema for configurado para português as palavras vão mudar, como no exemplo a seguir:

$ cal -3
    outubro 2008         novembro 2008         dezembro 2008
Do Se Te Qu Qu Se Sá  Do Se Te Qu Qu Se Sá  Do Se Te Qu Qu Se Sá
          1  2  3  4                     1      1  2  3  4  5  6
 5  6  7  8  9 10 11   2  3  4  5  6  7  8   7  8  9 10 11 12 13
12 13 14 15 16 17 18   9 10 11 12 13 14 15  14 15 16 17 18 19 20
19 20 21 22 23 24 25  16 17 18 19 20 21 22  21 22 23 24 25 26 27
26 27 28 29 30 31     23 24 25 26 27 28 29  28 29 30 31
                      30

O parâmetro -3 mostrou não apenas o mês atual, mas também o mês anterior e o próximo. Por fim, se você colocar como opção o ano, ele vai mostrar o calendário de todos os mêses do ano determinado:

$ cal 2010

df – Mostra informações de espaço em disco

Sintaxe: $ df [opções] [arquivo]

Se quisermos saber informações de espaço em disco como quanto está sendo usado e quanto está livre, podemos usar o comando df. Sem nenhuma opção, o df lista todos os sistemas de arquivos montados, qual seu espaço total em blocos de 1K, quanto desse espaço está sendo usado (em blocos e em porcentagem), quanto está disponível e em que diretório do sistema estão montados. Exemplo:

$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda3             63838084  60116572   3072952  96% /
tmpfs                  1037464         0   1037464   0% /lib/init/rw
udev                     10240       104     10136   2% /dev
tmpfs                  1037464         0   1037464   0% /dev/shm
/dev/sda2               101105     49225     51880  49% /boot
/dev/sdb2             58464080  33914736  24549344  59% /media/IPOD

Podemos notar que, por exemplo, a raiz do meu sistema (/) tem 4% livre, ou seja, 3072952 blocos de 1K livres, o que dá aproximadamente 3GB.

Ao utilizar a opção -h, podemos ver melhor o resultado:

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              61G   58G  3.0G  96% /
[...]

Note que agora ao invés dele mostrar os blocos de 1K “crus”, o comando deixou de uma forma mais legível convertendo as unidades de bytes em Megabytes, Gigabytes, Terabytes, Pentabytes e por aí vai :)

Se você especificar o parâmetro [arquivo], sendo [arquivo] um arquivo ou diretório qualquer, o df vai mostrar as informações de espaço para apenas o sistema de arquivos desse arquivo ou diretório, por exemplo:

$ df -h /
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              61G   58G  3.0G  96% /

$ df -h /boot
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              99M   49M   51M  49% /boot

Veja que ao especificar o diretório, eu peguei apenas as informações de espaço deste diretório.

Há também outras opções úteis, porém não tanto usadas. A primeira é verificar, ao invés do espaço em disco, verificar a capacidade de inodes de um sistema de arquivos. Em outras palavras, dá para ver quantos arquivos ou diretórios o sistema pode ter. Exemplo:

$ df -i /boot
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda2              26208      38   26170    1% /boot

Neste caso, existem 38 inodes usados e a cada arquivo ou diretório novo que eu criar, esse número vai aumentando. Felizmente a quantidade de inodes é, na grande maioria dos casos, mais do que o suficiente. Se por acaso você utilizar o resto dos 26170 arquivos, o sistema vai lhe avisar que não há mais espaço em disco, olhe isso:

$ ls -l /boot/teste | wc -l
26170

$ df -i /boot
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda2              26208   26208       0  100% /boot

$ df -h /boot
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              99M   49M   51M  50% /boot

Note que apesar de estar usando apenas 50M, o /boot não tem mais espaço aqui porque eu tenho 26208 arquivos dentro dele! Obviamente esta não é uma situação normal, mas é bom saber. Aqui eu criei um script com um laço infinito que criava arquivos vazios, até acabar o espaço de inodes.

Por último, a opção -T adiciona também o sistema de arquivos:

$ df -T / /boot
Filesystem    Type   1K-blocks      Used Available Use% Mounted on
/dev/sda3     ext3    63838084  60116556   3072968  96% /
/dev/sda2     ext3      101105     49771     51334  50% /boot

Um campo a mais apareceu aí…

du – Mostra espaço em disco usado por diretórios

Sintaxe: $ du [opções] [diretorio]

Enquanto o comando df mostra o espaço usado nas partições/sistemas de arquivo como um todo, o comando du pode ser usado para mostrar o espaço em disco usado de arquivos ou diretórios bem específicos. Exemplo:

$ du ~/tmp/c
32      /home/hugo/tmp/c

O comando acima calculou o tamanho em disco usado pelo diretório /home/hugo/tmp/c, que é de 32 bytes.

Sem parâmetro nenhum, o comando du vai mostrar várias linhas, cada uma com o tamanho dos diretórios e subdiretórios, e no final vai mostrar uma linha com a quantidade de bytes no total. Exemplo:

$ cd /home/hugo
$ du Desktop/
112     Desktop/random/relationship
27620   Desktop/random/v
8892    Desktop/random/woa
[...]
498488  Desktop/

O du foi mostrando o espaço usado por todos os diretórios e no final calculou que o diretório Desktop dentro do /home/hugo tem 498488 bytes. Utilizando a opção -h, o tamanho fica mais fácil de visualizar:

$ du -h Desktop/
112K    Desktop/random/relationship
27M     Desktop/random/v
8.7M    Desktop/random/woa
[...]
487M    Desktop/

Se você utilizar a opção -s, ele mostra apenas o resultado final:

$ du -hs Desktop/
487M    Desktop/

Caso você não especifique nada depois das opções, ele vai calcular o diretório atual que você se encontra.

É bom lembrar que cada vez que executamos o comando du, ele obtém as informações de todos os arquivos e diretórios, seus tamanhos e calcula tudo no final. Isso quer dizer que quanto maior a “complexidade” do diretório, seu tamanho, quantidade de arquivos e sub-diretórios, o processo pode demorar um pouco ;)

fdisk, sfdisk – Informações sobre partições

Sintaxe: # fdisk -l [hd]
Sintaxe: # sfdisk -l [hd]

Os comandos fdisk e sfdisk na verdade são utilitários completos para criar/remover/alterar partições de um ou mais HDs. Enquanto o fdisk, mais popular, lida com o usuário de forma interativa, o sfdisk só aceita linhas de comandos e parâmetros.

O parâmetro -l (ele) destes dois comandos mostram informações sobre um HD e sua lista de partições com detalhes. Por isso, estes comandos são extremamente úteis para saber qual o atual esqueam de particionamento de uma máquina.

Exemplo:

# fdisk -l

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x16351635

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        6375    51207156    7  HPFS/NTFS
/dev/sda2            6376        6388      104422+  83  Linux
/dev/sda3            6389       14593    65906662+  8e  Linux LVM

Podemos ver o tamanho do HD (/dev/sda), quais partições, seus tipos e tamanhos, sua numeração… Se existisse outro HD, ele também mostraria. Para listar apenas um HD, basta especificar depois do parâmetro -l:

# fdisk -l /dev/sdb

Disk /dev/sdb: 60.0 GB, 60011642880 bytes
255 heads, 62 sectors/track, 7413 cylinders
Units = cylinders of 15810 * 512 = 8094720 bytes
Disk identifier: 0x20202020

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          15      112423+   0  Empty
Partition 1 does not end on cylinder boundary.
/dev/sdb2              15        7414    58492664+   b  W95 FAT32

O mesmo procedimento serve para o sfdisk.

Tanto o fdisk, quanto o sfdisk olham diretamente no dispositivo físico do disco, ao invés da tabela gravada no kernel. Algumas vezes as duas tabelas podem ser diferentes, e por isso você também pode olhar a tabela de partições reconhecida pelo kernel Linux através do comando:

# cat /proc/partitions

hdparm – Informações detalhadas sobre HDs

Sintaxe: # hdparm -i <hd>

O hdparm é um utilitário para configurações específicas de HDs. Por exemplo, ativar DMA (Direct Memory Access – Acesso Direto à Memória), especificar modos (e taxas) de transferência, entre outras coisas. Uma das opções dele é a -i, que mostra todas as informações detalhadas do HD. Exemplo:

# hdparm -i /dev/sda

/dev/sda:

Model=SAMSUNG HM120JI                         , FwRev=YF100-15, SerialNo=      S09GJ10P141906
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
RawCHS=16383/16/63, TrkSize=34902, SectSize=554, ECCbytes=4
BuffType=DualPortCache, BuffSize=8192kB, MaxMultSect=16, MultSect=?16?
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=234441648
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes:  pio0 pio1 pio2 pio3 pio4
DMA modes:  mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
AdvancedPM=yes: unknown setting WriteCache=enabled
Drive conforms to: ATA/ATAPI-7 T13 1532D revision 0:  ATA/ATAPI-1,2,3,4,5,6,7

* signifies the current active mode

Podemos ver o modelo do HD, tipos de buffer, tamanho de buffer, setores, modos de transferência, conexão, opções de cache, entre outros. Muitas dessas opções podem ser configuradas com o hdparm, mas aí já sai fora do escopo do nosso assunto.

free – Informações sobre memória

Sintaxe: $ free [opções]

Uma das tarefas mais básicas é saber quanto de memória o sistema está usando e quanto está livre… O comando free serve justamente para isto. Executando apenas ele, temos:

$ free
total       used       free     shared    buffers     cached
Mem:       2074928    2013752      61176          0     341764     656544
-/+ buffers/cache:    1015444    1059484
Swap:      1048568        104    1048464

Podemos ver o total de bytes, os bytes usados, os livres, os utilizados para cache de disco e buffers. Além disso, podemos ver também a memória virtual (swap), seu total, o quanto o sistema está utilizando e o quanto está livre.

Para facilitar a visualização, usamos o parâmetro -m, que transforma os bytes em Megabytes:

$ free -m
total       used       free     shared    buffers     cached
Mem:          2026       1960         66          0        329        640
-/+ buffers/cache:        989       1036
Swap:         1023          0       1023

No exemplo, podemos ver que temos 2GB (2000MB) de memória física no total. Destes 2GB, estou usando 1.96GB e só tenho 66MB livres! Isto acontece porque o Linux tenta nunca deixar a memória livre, ele é inteligente o suficiente para usar toda a memória sem comprometer o sistema. Quando há memória livre, o kernel aloca esta memória para ser usada como cache de disco, diminuindo assim o tempo que os programas acessam seus dados do HD (que é praticamente a mídia mais lenta de um sistema).

Sendo assim, fazendo os cálculos, os dados de aplicativos estão utilizando 50%, os buffers do disco estão utilizando uns 15% e o cache de disco está utilizando uns 32%.

As informações sobre memória também podem ser encontradas com mais detalhes no arquivo /proc/meminfo:

$ cat /proc/meminfo

swapon – Informações sobre memória virtual (swap)

Sintaxe: # swapon -s

A memória virtual (swap) é um pedaço do HD que é utilizado como se fosse memória RAM caso a memória RAM esteja muito lotada ou indisponível no momento. O comando swapon serve para ativar ou desativar arquivos ou partições de swap no sistema.

O parâmetro -s serve para mostrar uma lista dos arquivos ou partições swap habilitadas:

# swapon -s
Filename                                Type            Size    Used    Priority
/dev/mapper/VolGroup01-Swap             partition       1048568 104     -1

Encontramos acima o arquivo, o tipo (partição ou arquivo), tamanho, quanto está sendo usado e qual a sua prioridade. A prioridade existe porque há sempre a possibilidade de usar vários swaps dentro de um sistema, e nesse caso quanto maior o número da prioridade, o sistema vai dar mais preferência.

cat /proc/cpuinfo – Informações sobre o processador

Sintaxe: $ cat /proc/cpuinfo

Não é um comando propriamente dito e sim a visualização do arquivo /proc/cpuinfo. Dentro deste arquivo, podemos encontrar todas as informações sobre o(s) processador(es) reconhecidos pelo sistema. Exemplo:

$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 14
model name      : Genuine Intel(R) CPU           T2300  @ 1.66GHz
stepping        : 8
cpu MHz         : 1000.000
cache size      : 2048 KB
[...]
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc arch_perfmon bts pni monitor vmx est tm2 xtpr
bogomips        : 3402.52
clflush size    : 64
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 14
model name      : Genuine Intel(R) CPU           T2300  @ 1.66GHz
stepping        : 8
cpu MHz         : 1000.000
cache size      : 2048 KB
[...]

No exemplo, temos dois processadores (na verdade um processador com dois núcleos – para o sistema é a mesma coisa). Podemos ver a marca e modelo do processador, seu clock, tamanho do cache, flags, entre outros.

uname – Informações de versão do kernel, arquitetura e outros

Sintaxe: $ uname [opções]

O uname é um comando muito útil. Ao entrar em um novo sistema ao qual não lhe é familiar, talvez um dos primeiros comandos que você precisa digitar é o uname. Ele mostra as informações sobre a versão do kernel, que tipo de sistema é, seu nome, se é multi-processado (SMP), a qual momento o kernel foi compilado e qual a arquitetura do sistema.

Exemplo:

$ uname -a
Linux madoka 2.6.26-1-686 #1 SMP Wed Sep 10 16:46:13 UTC 2008 i686 GNU/Linux

lspci – Mostra informações sobre dispositivos PCI

Sintaxe: $ lspci [opções]

Este é um ótimo comando para identificar o hardware de um computador. Com o lspci, podemos obter onde (qual barramento PCI) o hardware está localizado, o tipo de hardware, sua marca e modelo. Exemplo:

$ lspci
00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (rev 03)
00:01.0 PCI bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port (rev 03)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 01)
00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 01)
00:1c.2 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 3 (rev 01)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 01)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 01)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e1)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 01)
00:1f.2 SATA controller: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA AHCI Controller (rev 01)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 01)
01:00.0 VGA compatible controller: nVidia Corporation G72M [GeForce Go 7400] (rev a1)
06:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
08:06.0 CardBus bridge: Texas Instruments PCIxx12 Cardbus Controller
08:06.1 FireWire (IEEE 1394): Texas Instruments PCIxx12 OHCI Compliant IEEE 1394 Host Controller
08:06.2 Mass storage controller: Texas Instruments 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)
08:06.3 SD Host controller: Texas Instruments PCIxx12 SDA Standard Compliant SD Host Controller
08:08.0 Ethernet controller: Intel Corporation PRO/100 VE Network Connection (rev 01)

Basicamente, com esse comando já dá para saber tudo que este notebook usado no exemplo tem.

Ao especificar o parâmetro -v, obtemos uma lista ainda maior, só que agora com muito mais detalhes. Além do tipo de hardware, marca e modelo, podemos ver a quem pertence, onde a memória está alocada, flags, portas de interrupção usadas, que driver de kernel está sendo usado, entre outros. Exemplo:

$ lspci -v
[...]
01:00.0 VGA compatible controller: nVidia Corporation G72M [GeForce Go 7400] (rev a1)
Subsystem: Hewlett-Packard Company Device 30a5
Flags: bus master, fast devsel, latency 0, IRQ 16
Memory at d1000000 (32-bit, non-prefetchable) [size=16M]
Memory at c0000000 (64-bit, prefetchable) [size=256M]
Memory at d0000000 (64-bit, non-prefetchable) [size=16M]
Capabilities: <access denied>
Kernel driver in use: nvidia
Kernel modules: nvidia, nvidiafb
[...]

Ao especificar -vv (dois vês), temos ainda mais informações! E talvez, ao especificar três vês, o sistema explode de tanta informação.

Estas listas também podem ser mostradas de forma hierárquica, ou seja, identificando quem pertence a quem. Para fazer isto, utilizamos a opção -t.

lsusb – Mostra informações sobre dispositivos USB

Sintaxe: $ lsusb [opções]

Igual com o lspci, mas ao invés de mostrar dispositivos PCI, mostra os dispositivos USB! Com ele podemos obter em que posição do USB o dispositivo se encontra, qual a identificação única (ID) do dispositivo, marca e modelo. Exemplo:

$ lsusb
Bus 005 Device 002: ID 05ac:1209 Apple, Inc. iPod Video
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 09da:000a A4 Tech Co., Ltd Port Mouse
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Podemos ver que aqui temos dois dispositivos USB conectados no sistema: um iPod da Apple e um mouse ótico da marca A4 Tech. As outras informações são os hubs USB, ou seja, os lugares onde você pode “espetar” mais dispositivos :)

Ao utilizar a opção -v, pode-se obter muito mais detalhes sobre cada um dos dispositivos.


Comentários  10
Visualizações  
99,916


TagsLeia também

Apaixonado por Linux e administração de sistemas. Viciado em Internet, servidores, e em passar conhecimento. Idealizador do Devin, tem como meta aprender e ensinar muito Linux, o que ele vem fazendo desde 1997 :-)


Leia também



Comentários

10 respostas para “Comandos de Informações do Sistema Linux”

  1. Noel disse:

    Estoum montando um servidor e achei excelentes artigos aqui. Parabéns

  2. Muriel Spaler disse:

    Sao essas dicas que fazem a diferenca quando vc mais precisar.

    valeu mesmo .

  3. Gleydson disse:

    Otima dicas estou testando todos comando sou novo no linux to achando show de bola …

  4. Fábio Holliday disse:

    Obrigado Hugo, sou seu fã mesmo…. Muito útil.

  5. Dayana disse:

    Sou novata e os artigos que tem postado está ajudando bastante!!! =D
    Muito grata!!

  6. Silvio disse:

    qual arquivo o lsusb consulta para mostrar as informações ?

  7. Marcio disse:

    Como faço para desbloquear um HD que esta com o status igual a frozen com esse apçicativo?

  8. Alex Torres disse:

    Prezado Hugo,
    Dentre estes comandos tem algum que mostra a temperatura da CPU?

Deixe uma resposta