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.

Evgeny
fonte

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 ,

Keith
fonte
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.

Chad Huneycutt
fonte
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.

Baumgart
fonte
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.

Michael Shaw
fonte
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

hackinjack
fonte
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
alexus
fonte
1

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

Sc0rian
fonte
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
Rajat
fonte
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
# tree -d /sys/devices
Wojciech Domalewski
fonte
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.

djangofan
fonte
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
mivk
fonte
-1

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

Janne Pikkarainen
fonte
Você quer dizer, além de ser mencionado na resposta mais votada?
Mark Booth