Como obter estatísticas sobre o tempo de execução de comandos no Linux

Entre os comandos que todo administrador deveria dominar, o time é, com certeza, um deles.
Útil para obter valores sobre a performance do sistema e para monitorar alguns aspectos da execução de tarefas, o comando time retorna o tempo decorrido desde o início de uma atividade.
Veja como é fácil usá-lo.
tag heuer semi cronograph time cronômetro
Desenvolvedores também podem se beneficiar deste comando, para testar a performance de aplicativos ou scripts.

Como usar o comando time

A sintaxe do comando time é a seguinte:

time <comando> <parâmetros do comando>

É mais fácil entender com um exemplo prático.
Veja como determinar o tempo que o comando ‘ls -l’ leva para retornar a lista de arquivos dentro do seu diretório atual:

time ls -l

Depois de exibir a lista de arquivos, o time mostra a tempo de execução, conforme o exemplo abaixo (2 centésimos de segundo):

real   0m0.002s
user   0m0.000s
sys    0m0.000s

As três linhas se referem aos números referentes ao tempo total (em>real) gasto para rodar o comando ls, o tempo gasto dentro do user mode e o tempo dispendido dentro do kernel mode (sys).
Saiba mais sobre o que são kernel mode e user mode.

Um desenvolvedor preocupado com a performance, pode rodar diversas seu programa ou script, à medida em que faz modificações no código para torná-lo mais eficiente.

time vs /usr/bin/time

Você tem 2 comandos para usar:
time e
/usr/bin/time.
O primeiro, é um comando built-in, ou embutido, no Bash. O segundo, é um aplicativo GNU.
A versão embutida pode fornecer uma precisão de milisegundos, enquanto o programa externo oferece precisão de centésimos de segundos.
A versão Bash tem precisão maior por que usa a função getrusage(), enquanto a versão externa usa a função times().
Por outro lado a versão GNU, oferece mais opções de formatação da saída.

Diferentes shells têm diferentes implementações de comandos internos ou built in commands. Assim, você pode esperar diferentes comportamentos do time executado no zsh, no ksh etc.

Nossos exemplos, a seguir, se baseiam na versão externa (ou GNU), invocada através do comando /usr/bin/time.

Como direcionar a saída do comando para arquivos

Como comportamento padrão, a saída do time é colocada ao final da saída do comando que você executou com ele.
Para redirecionar a saída para um arquivo, veja o seguinte exemplo:

/usr/bin/time -o timelog.log sudo apt update

Para ver o resultado, use o comando cat:

cat timelog.log 
4.72user 0.43system 0:11.99elapsed 42%CPU (0avgtext+0avgdata 47476maxresident)k
14400inputs+557216outputs (8major+55843minor)pagefaults 0swaps

No exemplo acima, as estatísticas referentes ao comando “sudo apt update” são gravadas no arquivo “timelog.log”:
Repare que as opções dadas ao comando time, são feitas antes do comando que você deseja rodar.
Para não apagar os dados anteriores, contidos no arquivo, use a opção ‘append’. Com esta opção, o time acrescenta a nova saída ao arquivo, em vez de sobrepor todo o conteúdo anterior:

/usr/bin/time -a -o timelog.log sudo apt update
cat timelog.log

O resultado, abaixo, se refere a 4 execuções do comando acima:

0.78user 0.06system 0:02.76elapsed 30%CPU (0avgtext+0avgdata 43964maxresident)k
0inputs+155440outputs (0major+37247minor)pagefaults 0swaps
0.79user 0.05system 0:01.14elapsed 74%CPU (0avgtext+0avgdata 44888maxresident)k
0inputs+155408outputs (0major+37269minor)pagefaults 0swaps
0.85user 0.06system 0:01.23elapsed 74%CPU (0avgtext+0avgdata 44252maxresident)k
0inputs+155248outputs (0major+37174minor)pagefaults 0swaps
0.82user 0.06system 0:01.19elapsed 74%CPU (0avgtext+0avgdata 45080maxresident)k
0inputs+155248outputs (0major+37239minor)pagefaults 0swaps

Desta forma, é possível comparar as estatísticas de várias execuções, dentro do mesmo arquivo.

Opções de formatação da saída do comando time

Como você já sabe, ao final da execução o time (Bash built-in) exibe uma saída padrão de dados assim:

real    0m3.789s
user    0m0.912s
sys     0m0.076s

ou assim (GNU):

0.00user 0.00system 0:00.00elapsed ?%CPU (0avgtext+0avgdata 2352maxresident)k
0inputs+0outputs (0major+110minor)pagefaults 0swaps

Neste tópico, vamos ver como melhorar isto.
Você pode usar uma série de opções para alterar a formatação e adequar a apresentação dos dados estatísticos às suas necessidades. Veja uma lista:

  • C — Argumentos usados de nome e linha de comando
  • D — Tamanho médio da área de dados não-compartilhada do processo (em KiB)
  • E — Tempo decorrido no formato de relógio
  • F — Número de page faults (falhas de página)
  • I — Número de entradas no sistema de arquivos feitas pelo processo
  • K — Média geral da memória usada pelo processo em KiB
  • M — Tamanho máximo do resident set do processo durante seu tempo de vida, em KiB.
  • O — Número de saídas geradas pelo processo
  • P — Percentual da CPU que o trabalho (ou job) recebeu
  • R — Número de page faults menores ou recuperáveis
  • S — Total de segundos da CPU usados pelo sistema no kernel mode
  • U — Total de segundos da CPU usados pelo sistema no user mode
  • W — Número de vezes em que o processo foi varrido da memória principal
  • X — Quantidade média de texto compartilhado no processo
  • Z — Tamanho da página do sistema em KiB
  • c — Quantidade de vezes em que processo foi alternado, baseado em contexto
  • e — Tempo real decorrido relacionado ao processo, em segundos
  • k — Número de sinais entregues ao processo
  • p — Tamanho médio do stack não compartilhado do processo em KiB
  • r — Número de mensagens socket recebidas pelo processo
  • s — Número de mensagens socket enviadas pelo processo
  • t — Tamanho médio do resident set do processo em KiB
  • w — Número de vezes em que o processo sofreu alternâncias no modo de execução voluntariamente
  • x — Status de saída do comando.
  • Veja alguns exemplos da formatação da saída do comando, a seguir.

    /usr/bin/time -f "\nResultado do time:\nTempo decorrido = %E, Entradas %I, Saídas %O" apt search weston
    

    Veja como ficou, nas 2 últimas linhas da saída abaixo:

    Sorting... Pronto
    Full Text Search... Pronto
    weston/testing 1.11.0-1 amd64
      reference implementation of a wayland compositor
    
    
    Resultado do time:
    Tempo decorrido = 0:00.77, Entradas 0, Saídas 0
    

    Altere o código, acima, usando outras opções da tabela anterior.
    Para inserir novas linhas e deixar o visual mais fácil de entender, use ‘\n’.

    Referências

    http://linux.about.com/od/commands/a/Example-Uses-Of-The-Command-Time.htm.

Use o systemd para determinar o tempo que sua máquina leva para dar boot.

Há várias formas de medir o tempo que a sua máquina leva para dar o boot.
Apertar o botão POWER, ao mesmo tempo em que se dispara um cronômetro externo, é uma das formas.
Mas, se você usa um sistema com o systemd, pode usar outra alternativa mais cômoda — que permite obter o tempo decorrido desde o boot, até a tela de login do ambiente gráfico, sem precisar desligar e ligar o computador.
Há outros métodos, claro, mas a gente vai abordar apenas este, aqui.
O systemd.services vem com o comando systemd-analyze que, entre outras coisas, serve para mostrar o tempo exato que o seu sistema levou (em segundos) para ficar pronto para uso. Veja um exemplo de uso:

systemd-analyze 

Segundo o resultado, abaixo, deu 16 segundos (e alguns quebrados):

Startup finished in 3.020s (kernel) + 13.080s (userspace) = 16.101s

Entenda como funciona o systemd-analyze

O systemd-analyze pode ser usado para determinar o desempenho de arranque do sistema, obter estatísticas, analisar problemas e descobrir possíveis gargalos no processo.
O comando ‘systemd-analyze time’ mostra os seguintes dados:

  1. o tempo dispendido no kernel antes de chegar ao userspace
  2. o tempo dispendido no espaço do RAM disk (initrd), antes de alcançar o userspace normal
  3. o tempo que o userspace, em si, levou para ser inicializado

Note que estas medidas levam apenas em conta o tempo passado até o momento em que todos os system services forem gerados — e não necessariamente até que eles tenham finalizado completamente.
Você pode obter uma imagem gráfica vetorial detalhada do processo todo, com o uso da opção plot.
Veja como:

systemd-analyze plot > meuboot.svg

Você pode usar o GIMP ou qualquer outro visualizador de imagens para ver este conteúdo. No exemplo abaixo, uso o eye of gnome:

eog meuboot.svg

systemd-analyze plot
A imagem pode ajudar a entender melhor quais processos tomam mais tempo da inicialização no seu computador.

Acesse múltiplos terminais do seu sistema com o Tmux

Administradores de sistemas usam os terminais para realizar a maior parte de suas tarefas — ou, pelo menos aquelas sobre as quais precisam ter mais controle ou, ainda, executar com um nível maior de flexibilidade.
Para isto, é comum abrir mais de um terminal no sistema.
Quando se realiza várias atividades simultâneas de monitoramento, também é comum abrir um terminal para cada.
Em um ambiente gráfico, é possível alternar entre uma janela e outra com ‘Alt + Tab’.
Neste artigo, vamos falar do tmux — abreviatura para terminal multiplexer — um aplicativo simples, que permite controlar uma variedade de terminais a partir de uma só janela.

Um multiplexador de terminal ou terminal multiplexer permite alternar entre vários programas que estejam rodando, dentro de um único terminal.

O tmux permite alternar os programas entre o foreground e o background, além de retribuí-los a outros terminais.

Como instalar o tmux

Embora o processo de instalação varie muito pouco, nos dias atuais, entre uma distro e outra, vale ressaltar que escrevo este texto baseado no Debian 8.3 “Jessie”.
Você só precisa adaptar o comando de instalação à sua própria distribuição GNU/linux.

Se você usa os backports no Debian, dá para encontrar uma versão mais atualizada do aplicativo neste repositório. Observe o exemplo abaixo:

/* Versão disponível nos backports do Debian: */
aptitude -t jessie-backports show tmux | grep -i vers
Versão: 2.1-3~bpo8+1
/* Versão disponível no repositório padrão */
aptitude show tmux | grep -i vers
Versão: 1.9-6

Se você sabe lidar com o repositório dos backports no Debian (que não é difícil), com certeza não precisa da minha ajuda para instalar este software — neste caso, pule esta seção.

Não havendo um motivo muito forte para fazer o contrário, na minha máquina de trabalho, sempre uso o repositório padrão para instalar softwares:

sudo aptitude update
sudo aptitude install tmux

No Ubuntu, você provavelmente vai preferir usar o apt-get:

sudo apt-get update
sudo apt-get install tmux

Distribuições como o CentOS, RHEL e Fedora também devem ter o aplicativo nos seus repositórios básicos:

yum update
yum install tmux

Como funciona o tmux

A função do tmux é tornar possível a criação, o acesso e o controle de múltiplos terminais dentro de uma única tela.
Ao ser iniciado, o aplicativo cria uma nova sessão em uma janela, exibida na tela.
Uma linha de status, na parte inferior da janela de sessão do tmux, mostra informações concernentes à sessão atual. Pode também ser usada para fornecer comandos ao aplicativo.
Uma sessão é uma coleção de pseudo terminais sob a gestão do tmux.
Cada sessão tem uma ou mais janelas ligadas a ela.

Uma sessão é um contêiner para os consoles individuais gerenciados pelos tmux.

Uma janela ocupa uma tela inteira e pode ser dividida em painéis retangulares.
Cada painel representa um emulador de terminal.
Qualquer instância do tmux pode se conectar à mesma sessão e qualquer número de janelas pode estar presente na mesma sessão.
O tmux termina sua execução após a finalização da última sessão.

Cada sessão do tmux é persistente o suficiente para sobreviver a desconexões acidentais — como um timeout do ssh ou um desacoplamento intencional.

Para reacoplar use o seguinte comando:

tmux attach

Uma sessão é exibida na tela por um cliente e todas elas são gerenciadas por um único servidor. Este, cada cliente e todas as sessões pertencem a processos separados que se comunicam através de um soquete no diretório /tmp

Como usar o tmux

Para iniciar uma nova sessão chamada ‘mon’, digite:

tmux new -s mon

tmux new session
O nome da nova sessão é exibido no canto inferior esquerdo da janela.
Ações possíveis nesta sessão:

  • dividir o terminal em quantos painéis você quiser.
    Use Ctrl + b + ” para abrir um novo espaço horizontalmente e Ctrl + b + % para abrir um espaço verticalmente — você provavelmente irá ter que usar a tecla Shift para conseguir estas combinações de teclas.
    Cada painel representará um console em separado.
  • Ctrl + b + →↓↑← — use a combinação com as teclas direcionais para se movimentar entre os painéis.
  • Se você usar a mesma combinação de teclas, anterior, pode alterar o tamanho do painel ativo. Para isto, é necessário manter pressionada a tecla direcional, na direção que você deseja arrastar o quadro do painel.
  • Ctrl + b + t — para mostrar a hora atual dentro do painel ativo.
  • Ctrl + b + x — fecha o painel ativo. O tmux vai pedir confirmação antes de executar esta operação.
  • Ctrl + b + d — desacopla o painel ativo da sessão atual do tmux — ele volta a ser um terminal comum, dentro de uma janela comum.

No tmux, a combinação de teclas para realizar ações são chamadas de key bindings.
Se você sente que as key bindings padrão são inconvenientes para o seu uso, é possível alterá-las no arquivo .tmux.conf que pode ser encontrado dentro do /home de cada usuário.
Para fazer alterações que abranjam todo o sistema, edite o arquivo /etc/tmux.conf — se ele não existir, você vai ter que criá-lo. Para isto, use o primeiro como exemplo.
Havendo os dois arquivos de configuração, o tmux prioriza o de cada usuário.
Na documentação do programa, é possível encontrar mais informações sobre este e outros procedimentos — além de uma relação completa de teclas de atalho ou key bindings.

Como o RunKeeper calcula as calorias gastas durante uma atividade.

Entenda por que o cálculo de calorias gastas (ou queimadas) durante a corrida dá um resultado e depois dá outro.
A diferença não costuma ser muito grande, especialmente em pequenos percursos (abaixo de 5 km).
runkeeper-logo-1024x207
O RunKeeper calcula a quantidade de calorias queimadas baseado nos seguintes fatores:

  • Distância percorrida
  • Velocidade média no decorrer da atividade
  • Tempo de duração do exercício
  • Elevações vencidas
  • Tipo de atividade
  • As informações que você forneceu sobre o seu peso
  • A taxa metabólica basal (BMR)

Female Jogger on Coleman Avunue in Morro Bay, CA 5-2-07 - Photo by Mike Baird http://bairdphotos.com Canon 20D 100-400mm IS lens handheld from an outrigger canoe.
O resultado do cálculo das suas calorias pode mudar um pouco depois que as informações sobre a atividade forem enviadas aos servidores.
Isto é normal.
A explicação é que os servidores tem informações mais exatas sobre a elevação, bem como, são capazes de executar processamento adicional sobre as atividades que o seu aparelho não consegue em tempo real.
Os dados ajustados são enviados de volta ao seu smartphone, assim que você abrir de novo o RunKeeper e fizer a sincronização automática.

Referências

Crédito da imagem: Mulher correndo
Fontes: https://support.runkeeper.com/hc/en-us/articles/201109676-How-are-Calories-Burned-calculated-.
http://gurucollege.net/health/runkeeper-calorie-numbers-explained/.

Comandos para obter informações do seu sistema Ubuntu

Com a abertura de um terminal e poucos comandos, é possível obter informações sobre qualquer aspecto do seu sistema, seja sobre o software instalado, seja sobre o hardware no qual o software está rodando.
Neste artigo, vou dar um passeio por vários comandos do sistema que revelam informações importantes e, por vezes, bem detalhadas acerca da configuração do hardware e do software.
Pode ser útil para quem vai comprar uma máquina e deseja saber rapidamente o que tem pela frente, em vez de confiar na conversa do vendedor.
Alguns destes comandos são muito úteis para quem dá assistência técnica, por revelarem detalhes dos componentes do hardware.
Sugiro guardar o post nos seus favoritos (Ctrl+D), para ter esta lista em mãos sempre que precisar.
Os comandos foram testados no Debian 8.1 e no Ubuntu 14.04 LTS, mas devem funcionar, sem problemas em outras distros, como o Fedora, Suse, Trisquel etc.
Ao final do artigo (e ao longo dele), enumero alguns links que levam a informações mais completas sobre alguns comandos, caso você tenha interesse em se aprofundar um pouco mais.

Como encontrar o hostname

Nome de host ou hostname é o nome que você deu ao seu sistema, no ato da instalação:

hostname
ultra

Ou

cat /etc/hostname 
ultra

Se quiser alterar esta informação, siga as instruções deste artigo.
O nome de domínio DNS do sistema:

dnsdomainname 
coisasdogeek.com.br

Para obter o FQDN (Fully Qualified Domain Name), use a opção ‘-f’:

hostname -f
greensvillage.coisasdogeek.com.br

Como saber o número de série, fabricante e nome do modelo do seu computador

O comando dmidecode é capaz de fornecer estas e várias outras informações relativas ao seu hardware. Leia mais, aqui.
Como obter o número de série

sudo dmidecode -s system-serial-number
HX169QBCB01824

Como obter o nome do fabricante

sudo dmidecode -s system-manufacturer
SAMSUNG ELECTRONICS CO., LTD.

Como obter o modelo do produto

sudo dmidecode -s system-product-name
530U3C/530U4C/532U3C

Uma maior quantidade de informações pode ser vista pausadamente com o uso do comando more:

sudo dmidecode | more

Screenshot - 02-09-2015 - 17:31:18
Informações de hardware detalhadas, pode ser obtidas através do comando lshw:

lshw | more

Para obter informações sobre o hardware instalado, use o comando lsdev:

sudo lsdev | less

Como encontrar informações específicas sobre a CPU

Você pode encontrar este tipo de informações lendo o arquivo /proc/cpuinfo. Veja:

cat /proc/cpuinfo

Pode obter informações específicas sobre o modelo da sua CPU, ao combinar o comando com o grep:

cat /proc/cpuinfo | grep "model name"
model name	: AMD Opteron(tm) Processor 4122

...

Você também pode usar o seguinte comando:

lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                8
On-line CPU(s) list:   0-7
Vendor ID:             AuthenticAMD
CPU family:            16
Model:                 8
Stepping:              0
CPU MHz:               2194.405
BogoMIPS:              4389.07
Virtualization:        AMD-V

Para ver as estatísticas relacionadas às CPUs, use este comando:

sudo mpstat

ou

mpstat 1

ou

mpstat -A

Informações sobre a memória do sistema

Há muitas maneiras de obter dados sobre o uso e a disponibilidade da memória no seu sistema GNU/Linux.
A seguinte é bem básica:

free -h

             total       usado      livre    compart.  buffers     em cache
Mem:          7,5G       5,7G       1,9G       353M       292M       3,3G
-/+ buffers/cache:       2,0G       5,5G
Swap:          15G         0B        15G

No Ubuntu 12.04 LTS, instalado no meu provedor de serviços, aparentemente, o comando free não tem a opção ‘-h’ — que serve para tornar os dados mais legíveis para humanos.
Neste caso, posso usar a opção ‘-m’ para ver as informações em megabytes ou ‘-g’ para ver em gigabytes. Veja este outro exemplo de uso do free:

free -g
             total       used       free     shared    buffers     cached
Mem:            31         29          1          0          0          8
-/+ buffers/cache:         20         10
Swap:            2          0          2

Você pode obter informações específicas sobre o swap, com o swapon:

swapon -s
Filename				Type		Size	Used	Priority
/dev/sda1                               partition	15998972	0	-1

Estatísticas de uso da memória virtual podem ser obtidas com vmstat:

vmstat

ou o uso do disco, pela sistema de memória virtual:

vmstat -d

Como saber a versão do meu sistema operacional

Veja alguns métodos, abaixo:

lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 14.04.3 LTS
Release:	14.04
Codename:	trusty

ou

uname -a
Linux ultra 3.13.0-62-generic #102-Ubuntu SMP Tue Aug 11 14:29:36 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Para saber apenas a versão do seu kernel:

uname-r
3.2.61-grsec-modsign

O uname também pode ser usado para determinar a arquitetura do seu kernel (32 ou 64 bit). Abaixo, o exemplo de um sistema 64 bit:

uname -m
x86_64

No meu servidor Debian 8.1 Jessie, 32 bit, fica assim:

uname -m
i686

Use o getconf para obter esta informação:

getconf LONG_BIT
64

ou o comando arch:

arch
x86_64

Saiba mais sobre como determinar se seu sistema é 32 ou 64 bit, neste artigo.

Informações sobre os seus discos

Se vocẽ quer saber sobre os dispositivos de armazenamento instalados e disponíveis no sistema para você, use o comando fdisk.
Combinado com a opção ‘-l’, o fdisk lista o conteúdo das tabelas de partição. Se não encontrar nada por lá, lista o conteúdo do arquivo /proc/partitions:

fdisk -l

Como a lista pode ficar muito longa, use o comando grep para filtrar as informações:

sudo fdisk -l | grep '/dev'
Disco /dev/sda: 500.1 GB, 500107862016 bytes
/dev/sda1   *        2048    31999999    15998976   82  Linux swap / Solaris
/dev/sda2        32000000   976771484   472385742+  83  Linux
Disco /dev/sdb: 24.0 GB, 24015495168 bytes
/dev/sdb1   *        2048    46903295    23450624   83  Linux

Para ver toda as IDs dos dispositivos de bloco:

sudo blkid 
/dev/sda1: UUID="ce32e86c-e404-4f84-8125-74d0fc4897f7" TYPE="swap" 
/dev/sda2: UUID="a2ab821d-ae58-42fc-9384-f96dfcdc22cc" TYPE="ext4" 
/dev/sdb1: UUID="eb8e4cca-42c6-498d-b5ba-cd397096b3e9" TYPE="ext4"

O comando blkid é útil quando você deseja programa o sistema para iniciar automaticamente algum dispositivo, como neste artigo.
Para ver a relação de dispositivos de bloco:

lsblk 
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465,8G  0 disk 
├─sda1   8:1    0  15,3G  0 part [SWAP]
└─sda2   8:2    0 450,5G  0 part /home
sdb      8:16   0  22,4G  0 disk 
└─sdb1   8:17   0  22,4G  0 part /

Saiba quanto espaço de disco está sendo usado no seu sistema (pode ser demorado):

du -h

Se quiser saber quanto espaço um determinado diretório (o ‘home’, por exemplo) está ocupando, use-o assim:

du -h /home

Para obter uma relação dos sistemas de arquivos montados no seu sistema, use o comando mount:

mount

ou liste o seguinte arquivo de sistema:

cat /proc/mounts

Como obter informações de outros dispositivos do sistema

Para listar os dispositivos PCI, use o comando lspci:

lspci

A relação pode ficar organizada em árvore, com esta combinação de opções:

lspci -vt
-[0000:00]-+-00.0  Intel Corporation 2nd Generation Core Processor Family DRAM Controller
           +-02.0  Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller
           +-14.0  Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller
           +-16.0  Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1
           +-1a.0  Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2
           +-1b.0  Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller
           +-1c.0-[01]----00.0  Intel Corporation Centrino Advanced-N 6235
           +-1c.3-[02]----00.0  Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
           +-1d.0  Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1
           +-1f.0  Intel Corporation HM76 Express Chipset LPC Controller
           +-1f.2  Intel Corporation 7 Series Chipset Family 6-port SATA Controller [AHCI mode]
           \-1f.3  Intel Corporation 7 Series/C210 Series Chipset Family SMBus Controller

Se você tiver algum dispositivo PCMCIA, use o lspcmcia para ver detalhes sobre eles.
Para obter informações sobre dispositivos USB, use o lsusb:

lsusb 
Bus 002 Device 003: ID 8087:07da Intel Corp. 
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 2232:1035  
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 413c:2501 Dell Computer Corp. 
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Novamente, você pode organizar a lista em formato de árvore, assim:

lsusb -vt

Leia mais sobre como obter informações sobre as portas e dispositivos USB no seu sistema.
Você tem placa de rede wireless? Encontre informações sobre o seu dispositivo:

iwconfig

Monitore o seu funcionamento:

watch -n 1 cat /proc/net/wireless

Vamos abordar, mais pra frente o assunto redes.
Use novamente o comando lspci para descobrir informações sobre a sua placa de vídeo:

lspci | grep -i vga
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)

ou o lshw:

sudo lshw -class display
 *-display               
       descrição: VGA compatible controller
       produto: 2nd Generation Core Processor Family Integrated Graphics Controller
       fabricante: Intel Corporation
       ID físico: 2
       informações do barramento: pci@0000:00:02.0
       versão: 09
       largura: 64 bits
       clock: 33MHz
       capacidades: msi pm vga_controller bus_master cap_list rom
       configuração: driver=i915 latency=0
       recursos: irq:43 memória:f0000000-f03fffff memória:e0000000-efffffff porta de E/S:3000(tamanho=64)

Quem usa placa gráfica NVIDIA (no momento, eu não uso), pode experimentar as seguintes opções, para obter informações específicas de sua placa:

nvidia-smi

e

nvidia-settings

Informações sobre dispositivos de áudio

Em conjunto com o comando grep, use os comandos lspci e lshw. Veja como:

lspci | grep -i audio 
00:1b.0 Audio device: Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller (rev 04

ou

sudo lshw | grep -i audio 
             descrição: Audio device
             produto: 7 Series/C210 Series Chipset Family High Definition Audio Controller

Veja algumas dicas de uso do comando lshw, ao final deste artigo.

cat /proc/asound/cards
0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xf0610000 irq 46

Se preferir, o programa arecord retorna as mesmas informações:

arecord -l
0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xf0610000 irq 46

Carga da bateria e temperatura do sistema

Para obter informações sobre o uso e o estado da sua bateria, verifique o conteúdo do arquivo /proc/acpi/battery/BAT1/info

cat /proc/acpi/battery/BAT1/info
present:                 yes
design capacity:         6100 mAh
last full capacity:      3800 mAh
battery technology:      rechargeable
design voltage:          7400 mV
design capacity warning: 0 mAh
design capacity low:     114 mAh
cycle count:		  357
capacity granularity 1:  1 mAh
capacity granularity 2:  1 mAh
model number:            
serial number:           
battery type:            LION
OEM info:                SAMSUNG Electronics

e o /proc/acpi/battery/BAT1/state:

cat /proc/acpi/battery/BAT1/state 
present:                 yes
capacity state:          ok
charging state:          charged
present rate:            0 mA
remaining capacity:      3002 mAh
present voltage:         7976 mV

O local destes arquivos pode variar de um sistema para outro e PCs desktop provavelmente não terão estas informações.
Quem tiver o ACPI instalado, pode usar:

acpi -V

Já a temperatura do sistema, pode ser encontrada no diretório /sys/devices/virtual/thermal/thermal_zone0, dentro de vários arquivos — por que é medida em zonas internas do computador.

cat /sys/devices/virtual/thermal/thermal_zone0/temp 
57000
cat /sys/devices/virtual/thermal/thermal_zone1/temp 
29800
cat /sys/devices/virtual/thermal/thermal_zone2/temp
62000

Os números, acima se traduzem em 57°, 29,8° e 62° Celsius.
Você pode usar o comando find, para encontrar outros arquivos com informações sobre a temperatura do sistema:

find /sys/ -name "*temp*"

Pode ser bastante complexo tentar encontrar e interpretar os arquivos contendo os valores da temperatura do seu sistema, porque sua localização e conteúdo varia em função da arquitetura (de software e de hardware).
O ideal, portanto, é usar algum software de monitoramento que verifique estes dados para você.
O monitoramento do estado do sistema foge ao escopo deste artigo, mas você pode encontrar algumas ótimas opções de aplicativos para fazer este trabalho, com o uso do comando apt-cache:

apt-cache search sensors | grep temp
libsensors4 - biblioteca para ler os sensores de temperatura/voltagem/ventoinha
psensor - display graphs for monitoring hardware temperature
wmtemp - WM dock applet displaying lm_sensors temperature values
fancontrol - utilitários para ler sensores de temperatura/voltagem/ventoinhas
lm-sensors - utilitários para ler sensores de temperatura/voltagem/ventoinhas

Tenho alguns artigos que falam sobre como controlar a temperatura do sistema, caso você esteja interessado.

Como saber o tempo em que seu computador está ligado

Você também é do tipo que não desliga o computador todo dia? Saiba há quanto tempo ele está ligado, com o comando uptime:

uptime

ou quando foi o último reboot:

last reboot

ou, ainda, quando foi a última vez em que ele foi desligado:

last shutdown

Determine o seu runlevel ou nível de execução atual:

who -r

A título de curiosidade, o uptime pode ser executado no terminal Android do seu smartphone ou tablet — assim você pode saber a quanto tempo eles estão ligados. Tenta lá!

Como obter informações sobre os módulos instalados no sistema

Pode ser necessário executar as instruções que seguem com privilégios administrativos. No meu caso, não foi necessário.
Para ver a lista de módulos carregados no seu sistema:

lsmod

Para ver informações detalhadas sobre um dos módulos/drivers do seus sistema (pode ser um da lista), use modinfo.

modinfo video

Veja uma exemplo da saída do comando:

filename:       /lib/modules/3.13.0-63-generic/updates/dkms/video.ko
license:        GPL
description:    ACPI Video Driver
author:         Bruno Ducrot
srcversion:     E8104F0C6DA04C65A041E02
alias:          acpi*:LNXVIDEO:*
depends:        
vermagic:       3.13.0-63-generic SMP mod_unload modversions 
parm:           brightness_switch_enabled:bool
parm:           allow_duplicates:bool
parm:           use_native_backlight:int

Como encontrar informações relacionadas à configuração do hardware e software de redes

exemplo de execução do comando ip no Linux
O GNU/Linux nasceu e cresceu dentro do ambiente de rede.
Diante deste fato, é de se esperar que haja uma quantidade infinda de comandos e aplicativos para obter informações sobre as configurações dos dispositivos de hardware e de software que lidam com rede, neste sistema operacional. E realmente, há.
Contudo, iremos abordar apenas alguns comandos deste universo, no decorrer deste post.
O comando ip é um dos que mais revelam detalhes sobre as configurações dos network devices presentes em seu sistema.
Normalmente, ele vai precisar de privilégios administrativos. Portanto, não esqueça de usar o comando sudo ou su para executá-los.
Se o comando for dado, sem parâmetros ou opções, um texto de ajuda será exibido. Use a opção ‘a’ para obter informações genéricas de todo o equipamento de rede presente:

sudo ip a

ou indique uma das interfaces de rede:

ip a show wlan0

informações sobre a placa de rede wireless:

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether c4:85:08:a5:0a:aa brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.7/24 brd 192.168.1.255 scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 fe80::c685:8ff:fea5:aaa/64 scope link 
       valid_lft forever preferred_lft forever

As seguintes opções, exibem informações gerais sobre todas as interfaces de rede presentes no seu sistema:

sudo ip link ls up
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether 50:b7:c3:04:da:48 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether c4:85:08:a5:0a:aa brd ff:ff:ff:ff:ff:ff
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default 
    link/ether 16:68:7e:ec:53:1d brd ff:ff:ff:ff:ff:ff
5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default 
    link/ether 56:84:7a:fe:97:99 brd ff:ff:ff:ff:ff:ff

O tradicional comando ifconfig também exibe informações completas, específicas ou genéricas sobre as interfaces gráficas do seu sistema:

sudo ifconfig -a

Você pode indicar a interface específica sobre a qual deseja ter informações:

sudo ifconfig eth0
eth0      Link encap:Ethernet  Endereço de HW 50:b7:c3:04:da:48  
          UP BROADCAST MULTICAST  MTU:1500  Métrica:1
          pacotes RX:0 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:0 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000 
          RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

O comando abaixo, mostra (tal como ele mesmo explica) a tabela de roteamento IP do kernel:

route -n
Tabela de Roteamento IP do Kernel
Destino         Roteador        MáscaraGen.    Opções Métrica Ref   Uso Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 wlan0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.1.0     0.0.0.0         255.255.255.0   U     9      0        0 wlan0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

o mesmo resultado acima, pode ser obtido com o comando netstat:

netstat -nr

O comando, abaixo, pode ser usado para fazer o netstat mostrar os endereços numéricos que estão “ouvindo” as portas dos protocolos UDP e TCP:

sudo netstat -tulpn | grep -i ouça

Se você usa uma distro em inglês, substitua a palavra “ouça” por “listen”:

tcp        0      0 127.0.1.1:53            0.0.0.0:*               OUÇA       2090/dnsmasq    
tcp        0      0 192.168.122.1:53        0.0.0.0:*               OUÇA       2054/dnsmasq    
tcp        0      0 127.0.0.1:631           0.0.0.0:*               OUÇA       2778/cupsd      
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               OUÇA       1333/mysqld     
tcp6       0      0 ::1:631                 :::*                    OUÇA       2778/cupsd      
tcp6       0      0 :::80                   :::*                    OUÇA       1469/apache2

O netstat é um comando ligado às tarefas de monitoramento do sistema. Saiba mais sobre ele, aqui.

Como investigar os soquetes e as portas do sistema

Use o comando ss para investigar os system sockets:

sudo ss

Use a opção ‘-l’ para ver todas as portas que estão em estado de listening (escutando):

sudo ss -l

O comando ss também esta ligado a às atividades de monitoramento do sistema.

Como saber que arquivos estão abertos e quais processos e serviços estão rodando

O comando lsof pode ajudar a determinar quais arquivos estão abertos e/ou em uso no sistema.
A sua saída pode ser muito volumosa. Portanto, é recomendado executá-lo acompanhado de um ” | more” ou filtrar o resultado com o comando grep.

lsof | grep firefox

Para ver uma relação dos serviços em execução no seu sistema, use o comando service:

sudo service --status-all

O comando initctl permite ao administrador do sistema se comunicar e interagir com o Upstart init daemon.
Usado com a opção ‘list’, relaciona as atividades e instâncias conhecidas e exibe o status de cada uma. Veja um exemplo:

sudo initctl list

Este comando inclui na lista jobs que ainda serão executados — ou seja, estão citados em arquivos de configuração, mas ainda não tiveram alguma instância criada. Eles estão listados como “stop/waiting“.
Para obter dados relacionados à política de senhas do sistema para determinado usuário, use o comando chage:

sudo chage -l keitel

troque o nome de usuário ‘keitel’ pelo seu.

Última mudança de senha					: Dez 05, 2014
Senha expira					: nunca
Senha inativa					: nunca
Conta expira						: nunca
Número mínimo de dias entre troca de senhas		: 0
Número máximo de dias entre troca de senhas		: 99999
Número de dias de avisos antes da expiração da senha	: 7

Por fim, como exibir a configuração atual do firewall do seu sistema:

sudo iptables -L -n -v

Dicas de uso do lshw

Uma dica para obter uma lista bem resumida e geral do seu sistema de hardware é o uso do parâmetro ‘-short’:

sudo lshw -short

Já percebeu que o comando demora um tempinho para exibir as informações?
Pois bem. Se você não alterou nenhuma característica de hardware do seu sistema, pode gravar as informações da saída do lshw em um arquivo de texto. E passe a fazer a consulta direto neste arquivo. Veja como:

sudo lshw > lshw.txt
less lshw.txt

Assim, a consulta se torna muito mais rápida e, além disto, você não precisa mais usar o sudo para ter acesso a todas as informações deste aplicativo.
Como último exemplo, veja como obter informações sobre a placa de vídeo VGA, a partir do arquivo criado:

cat lshw.txt | grep -i vga

Como obter informações sobre o Bluetooth

Muitos notebooks tem dispositivos de conexão Bluetooth embutidos.
Você pode usar o comando hciconfig, para obter informações sobre eles e sobre os dispositivos remotos aos quais seu notebooks estiver conectado.
Veja um exemplo de uso:

hciconfig -a

hci0:	Type: BR/EDR  Bus: USB
	BD Address: A4:02:B9:02:85:36  ACL MTU: 1021:5  SCO MTU: 96:6
	UP RUNNING PSCAN 
	RX bytes:481843 acl:155 sco:0 events:68168 errors:0
	TX bytes:57715502 acl:67687 sco:0 commands:259 errors:0
	Features: 0xff 0xfe 0x0f 0xfe 0xdb 0xff 0x7b 0x87
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
	Link policy: RSWITCH HOLD SNIFF 
	Link mode: SLAVE ACCEPT 
	Name: 'inspiration'
	Class: 0x1c010c
	Service Classes: Rendering, Capturing, Object Transfer
	Device Class: Computer, Laptop
	HCI Version: 4.2 (0x8)  Revision: 0x1000
	LMP Version: 4.2 (0x8)  Subversion: 0x1000
	Manufacturer: Intel Corp. (2)

Para saber mais sobre o hciconfig e o hcitool, faça uma pesquisa por Bluetooth neste site.

Muito simples, não é?

Referẽncia: http://www.cyberciti.biz/hardware/collecting-ubuntu-linux-system-information/.