Como descobrir detalhes sobre o hardware na máquina Linux?


40

-ie - como obter uma lista completa dos componentes de hardware na linha de comando (em uma máquina sem sistema de janelas)

Obrigado.

Respostas:


41

lspcipara placas pci, lsusbpara usb, lshwfunciona em distribuições baseadas em debian, aqui está uma lista de maneiras de obter outras especificações de hardware ,


Obrigado pelo link. Eu admito que eu poderia ter pesquisado no Google, mas o Google é um homem bagunçado.
Evgeny

37

Se disponível, dmidecodeé útil. Especialmente no hardware da Dell, HP e IBM, onde eles se preocupam em programar informações de hardware relevantes nos vários registros.


7
dmidecode é legal. Um dia, quando o estava usando para examinar os detalhes da memória, percebi que você também poderia descobrir a etiqueta de serviço da Dell: dmidecode | grep -i serial | egrep -o '[0-9A-Z] {7} $' | head -n1
Kyle Brandt

11
Concordado, você pode executar o dmidecode e apenas grep pelas informações que deseja.
Barfoon 20/08/09

11
Também funciona muito bem no hardware da apple.
precisa saber é o seguinte

30

lspcié um ótimo utilitário para listar o hardware do sistema. (Qualquer coisa no barramento PCI, pelo menos.)

cat /proc/cpuinfo - Exibe informações da CPU

cat /proc/meminfo - Exibe informações da memória

dmesg(ou cat /var/log/dmesg) contém algumas informações, não necessariamente tudo.

Se você possui um sistema RedHat / CentOS, pode sosreportcoletar uma boa quantidade de informações, embora eu não saiba se ele possui todas as informações de hardware listadas nele.

Esses são alguns bons lugares para começar a encontrar as informações que você está procurando.


3

O sistema de arquivos / proc fornecerá as informações que você deseja ... MAS eu não sei como você as obterá, é um lugar fácil.

'cat / proc / cpuinfo' informará sobre sua CPU 'cat / proc / devices' fornecerá algumas informações limitadas sobre dispositivos de bloco. 'ifconfig -a' informará sobre as conexões de rede

Outros poderão falar sobre mais dispositivos. Você está solucionando problemas de um dispositivo específico? Nesse caso, você obterá melhor ajuda para fazer uma pergunta específica.


obrigado não, estou tentando passar de host para host e gostaria de ver qual é a diferença de hardware em geral - para ver se consigo passar por imagens.
Evgeny

11
Enquanto as partes iniciais da inicialização funcionarem, a maioria das distribuições apenas detectará as alterações de hardware e se adaptará. Se você tiver problemas com a parte de inicialização, instale a mesma distribuição que você está migrando para o novo hardware, atualize-o para o mesmo kernel que você está movendo e copie o arquivo mkintrd no sistema de arquivos de imagem e isso deve resolver seus problemas de inicialização . Se realmente der errado, você ainda terá todos os seus dados na máquina antiga.
227 Michael Shaw

Se você já possui o Linux na segunda máquina e está funcionando, supondo que o Kernel seja uma compilação genérica e tão recente quanto possível, ele carregará todos os módulos (os módulos são análogos aos Drivers do Windows) de que precisa. As instalações Linux não são realmente específicas de hardware dessa maneira.
Kyle Brandt

O arquivo /boot/initrd-2.6.*.img não é tão genérico. É usado pelo kernel quando passa pelo controle do grub. Ele precisa ter todas as configurações e módulos para carregar seu sistema de arquivos raiz. Este arquivo é feito de uma forma genérica estar executando mkinitrd, no entanto você precisa ter arrancado com o sistema de primeira ...
Michael Shaw

2

O inxi mostrará quase tudo, execute sem argumentos para forma abreviada, as opções são muitas, no entanto, execute inxi -h para vê-las

inxié um 'script de informações completas', conforme descrito na página inicial do projeto: https://github.com/smxi/inxi

Aqui estão informações sobre como você pode instalá-lo no Ubuntu: https://askubuntu.com/questions/284635/inxi-installation-on-ubuntu


O Inxi é uma ferramenta relativamente nova e não é encontrada na maioria das distribuições. Você deve adicionar mais algumas informações e links.
itsbruce

1

Para resumir isso, eu diria que aqui é um bom começo para obter informações sobre seu sistema:

  1. dmesg - imprime ou controla o buffer de anel do kernel
  2. lspci - lista todos os dispositivos PCI
  3. lsusb - lista dispositivos USB
  4. / proc - sistema de pseudo-arquivo de informações de processo


1

Eu realmente gosto de usar o " Facter ". Dá uma boa lista de informações muito úteis.


1

código abaixo você pode copiar usando vi

#!/bin/bash

a=1; c=0
a=1; c=0
# Gather system information, can e.g. be sent to | mail in a cronjob
f_() { while read l; do echo $l; done < $f ; }
#
f_() { while read l; do echo $l; done < $f ; }
# TODO
# ----
# * Netstat output
# * Memory/swap information
# * ifconfig information
# * Make output dependent on argv
# * md5sum checks                               (done)
# * Keep previeous values and compare
# * How to
# * chmod a+x sysinfo.sh
# * ./sysinfo.sh
####################### DO NOT EDIT UNDER THIS LINE ###########################

siheader() {
        echo "================================================================"
        echo -e "* System statistics for: \t`hostname`.`dnsdomainname`"
        echo -e "* Generated on: \t\t`date`"
        echo -e "* Running as: \t\t\t`whoami`"
        echo
}

fuptime() {
        upSeconds=$(cat /proc/uptime | tr "." " " | awk '{print $1}')
        secs=$((${upSeconds}%60))
        mins=$((${upSeconds}/60%60))
        hours=$((${upSeconds}/3600/24))
        days=$((${upSeconds}/86400))
        if [ "${days}" -ne "0" ]
        then
                echo -n "${days} days, "
        fi
        echo "`printf '%02d' ${hours}`:`printf '%02d' ${mins}`:`printf '%02d' ${secs}`"
}

siuptime() {
        echo "=================== Uptime ====================================="
        echo -e "* Uptime: \t\t\t`fuptime`"
        if [ -x /usr/bin/uprecords ];
        then
                echo -e "* High score: \t\t\t`uprecords | tail -n1 | cut -d'|' -f1 | cut -d'n' -f3 | sed 's/^[[:blank:]]*//'`"
        fi
        echo -e "* Load average: \t\t`cat /proc/loadavg | head -c14`"
        echo
}

fw () {
        OFS=${IFS}
        IFS=$'\n'
        CNT=$(echo `w | wc -l`-1 | bc)

        w | tail -n ${CNT} | while read -r a;
        do
                echo -e "\t${a}"
        done

        IFS=${OFS}
}

siusers() {
        echo "=================== Users ======================================"
        echo -e "* Active users: \t\t`who | wc -l`"
        echo "* User information"
        fw
        echo
}

fpstree() {
        OFS=${IFS}
        IFS=$'\n'
        pstree | while read -r a;
        do
                echo -e "\t${a}"
        done
        IFS=${OFS}
}

fcomms() {
        ps -eo comm | sort | uniq | grep -v ^COMMAND | column
        echo

        IFS=${OFS}
}

fprocs() {
        echo `TERM=Linux top -n1 -b | grep "Tasks" | awk '{print $4,$6,$8,$10}'`
        echo -e "==================================Tasks process and memory utilization=============================\n"
    echo "`top -n1 -b`"
}


sitasks() {
        echo "=================== Tasks ======================================"
        echo -e "* Number of running tasks: \t$(echo `ps ax | wc -l` - 1 | bc)"
        #This screws up the email
        #echo "* PS Tree:"
        #fpstree
        echo "* Running programs:"
        fcomms
        echo -e "* CPU load: \t\t\t`TERM=linux top -n2 -b | grep 'Cpu' | tail -n1 | awk '{print $2+$4+$6}'`%"
        PROCS=`fprocs`
        echo "* Process state:"
        echo -e "\tRunning: \t\t`echo ${PROCS} | awk '{print $1}'`"
        echo -e "\tSleeping: \t\t`echo ${PROCS} | awk '{print $2}'`"
        echo -e "\tZombie: \t\t`echo ${PROCS} | awk '{print $3}'`"
        echo -e "\tStopped: \t\t`echo ${PROCS} | awk '{print $4}'`"
        echo
}

froute() {
        OFS=${IFS}
        IFS=$'\n'

        CNT=$(echo `/sbin/route | wc -l` - 1 | bc)
        /sbin/route | tail -n ${CNT} | while read -r a;
        do
                echo -e "\t${a}"
        done

        IFS=${OFS}
}

sinetwork() {
        echo "=================== Networking ================================"
        echo "* Routing table:"
        froute
        echo
}

simemory() {
        echo "=================== Memory ===================================="
        RAMTOTAL=`echo $(($(cat /proc/meminfo | grep MemTotal | awk '{print $2}')/1024))`
        echo "* Ram:\t\t\t free of ${RAMTOTAL}Mb"
}

sidiskstats() {
        echo "=================== Hard Disc ================================="
        echo "* Disk Information:"
        OFS=${IFS}
        IFS=$'\n'
        df -h | grep -v ^none | while read -r a;
        do
                echo -e "\t${a}"
        done
        IFS=${OFS}
        echo
        echo "* Mounts:"
        OFS=${IFS}
        IFS=$'\n'
        mount | while read -r a;
        do
                echo -e "\t${a}"
        done
        IFS=${OFS}
        echo
}

simd5() {
        if [ ! -e md5sums.lst ];
        then
                return
        fi

        echo "=================== MD5Sum Check =============================="

        OFS=${IFS}
        IFS=$'\n'

        echo "* Checking MD5 Sums"

        cat md5sums.lst | grep "^/" | while read -r a;
        do
                F=`echo ${a} | cut -d':' -f1`
                S=`echo ${a} | cut -d':' -f2`
                S2=`md5sum ${F} | cut -d' ' -f1`
                echo -n -e "\t${F}: \t\t\t\t"
                if [ "${S}" = "${S2}" ];
                then
                        echo "[OK]"
                else
                        echo "[INVALID]"
                fi                        
        done

        IFS=${OFS}
        echo
}


##For finding CPU model, cores and 
cpuinfo() {
    echo "=================== CPU Details for Xen =============================="
    echo -e "CPU Details: \n`cat /proc/cpuinfo | sed -n '1,/^$/p'`"
    echo -e "No of Cores: \n`cat /proc/cpuinfo | grep processor | wc -l`"
    if [ "egrep '(vmx|svm)' /proc/cpuinfo >/dev/null 2>/dev/null" ];
    then
        echo -e "\n===============================================================\nServer supports Full-virtualization"
    else
        echo -e "\n===============================================================\nEither server does not support Full-virtualization or it is turned off in BIOS"
    fi

    if [ "egrep 'pae' /proc/cpuinfo >/dev/null 2>/dev/null" ];
    then
        echo -e "\n===============================================================\nServer supports Para-virtualization"
    else
        echo -e "\n===============================================================\nServer does not support Para-virtualization"
    fi
}

##For disk info
diskinfo() {
        echo "=================== Disk usage =============================="
        echo -e "Disk Usage details: \n`df -h`"
}   
##Distro info
distroinfo() {
        echo "=================== Distro Info =============================="
        echo -e "Distro details: \n`lsb_release -a`"
        echo -e "Kernel details: \n`uname -a`"
}   

##Distro info
deviceinfo() {
        echo "=================== Device Info =============================="
        echo -e "Device details: \n`lspci -v`"
        echo -e "Kernel details: \n`uname -a`"
}   
summary() {
        siheader
        siuptime
        siusers
        sitasks
        sinetwork

        simemory
        sidiskstats
    fprocs
        simd5
    deviceinfo
    cpuinfo
    distroinfo
        echo "==============================================================="
        echo "* Brought to you by Taashee- http://www.taashee.com"
}

summary

Você precisa fazer tudo isso em um bloco de código para que não pareça danificado.
209 Bill Bill Weiss

Graças Bill pena pedir u tais questões Como posso fazer isso pls deixe-me da próxima vez eu vou fazê-lo pls ignorar o meu Inglês
Rajat


0

O mais fácil é digitar " dmesg | more " na linha de comando, o que permite ver toda a saída de inicialização que ocorre durante a última inicialização do sistema.


0

Para discos rígidos, eu uso um script personalizado que massageia em uma lista as saídas de:

cat /proc/partitions
cat /proc/mounts

parted -m /dev/sdX unit MB print # need to be root for parted
# or
parted -m -l unit MB print

blkid /dev/sdXN

-1

Um post muito antigo, mas notei que o excelente lshwestá faltando nas respostas.


Você quer dizer, além de ser mencionado na resposta mais votada?
Mark Booth
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.