¿Cómo encontrar detalles sobre el hardware en la máquina Linux?

41

-es - cómo obtener una lista completa de componentes de hardware en la línea de comandos (en una máquina sin sistema de ventanas)

Gracias.

Evgeny
fuente

Respuestas:

41

lspcipara tarjetas pci, lsusbpara usb, lshwfunciona en distribuciones basadas en debian, aquí hay una lista de formas de obtener otras especificaciones de hardware ,

Keith
fuente
Gracias por el enlace. Admito que podría haberlo buscado en Google, pero Google es un desastre.
Evgeny el
37

Si está disponible, dmidecodees útil. Particularmente en el hardware de Dell, HP, IBM, donde se molestan en programar información de hardware relevante en los diversos registros.

Chad Huneycutt
fuente
77
dmidecode es bueno. Un día, cuando lo estaba usando para ver los detalles de la memoria, me di cuenta de que también podría encontrar la etiqueta de servicio de Dell: dmidecode | grep -i serial | egrep -o '[0-9A-Z] {7} $' | head -n1
Kyle Brandt el
1
De acuerdo, puede ejecutar dmidecode y solo grep para obtener la información que desea.
barfoon
1
También funciona muy bien en hardware de Apple.
Matt3o12
30

lspcies una gran utilidad para enumerar el hardware del sistema. (Cualquier cosa en el bus PCI, de todos modos).

cat /proc/cpuinfo - Muestra información de la CPU

cat /proc/meminfo - Muestra información de la memoria

dmesg(o cat /var/log/dmesg) contiene alguna información, no necesariamente todo.

Si tiene un sistema RedHat / CentOS, puede utilizarlo sosreportpara recopilar una buena cantidad de información, aunque no sé si tiene toda la información del hardware que se incluye en ella.

Esos son algunos buenos lugares para comenzar a encontrar la información que está buscando.

Baumgart
fuente
3

El sistema de archivos / proc le dará la información que desea ... PERO no sé cómo la obtendrá, es un lugar fácil.

'cat / proc / cpuinfo' le informará sobre su CPU 'cat / proc / devices' le brindará información limitada sobre dispositivos de bloque. 'ifconfig -a' le informará sobre las conexiones de red

Otros podrán informarle sobre más dispositivos. ¿Estás solucionando problemas de un dispositivo en particular? Si es así, obtendrá una mejor ayuda para hacer una pregunta específica.

Michael Shaw
fuente
gracias no, estoy tratando de moverme de un host a otro y me gustaría ver cuál es la diferencia en el hardware en general, para ver si puedo moverme mediante una nueva imagen.
Evgeny el
1
Mientras las partes iniciales del arranque funcionen, la mayoría de las distribuciones detectarán los cambios de hardware y se adaptarán. Si tiene problemas con la parte de arranque, instale la misma distribución que está moviendo en el nuevo hardware, actualícela al mismo núcleo que está moviendo y luego copie el archivo mkintrd en el sistema de archivos de imagen y eso debería resolver sus problemas de arranque . Si realmente sale mal, todavía tiene todos sus datos en la máquina anterior.
Michael Shaw el
Si ya tiene Linux en la segunda máquina y está funcionando, suponiendo que el Kernel es una compilación genérica e igual de reciente, cargará todos los módulos (los módulos son análogos a los controladores de Windows) que necesita. Las instalaciones de Linux no son realmente específicas de hardware de esa manera.
Kyle Brandt el
El archivo /boot/initrd-2.6.*.img no es tan genérico. Es usado por el núcleo cuando pasa el control por grub. Necesita tener todas las configuraciones y módulos para cargar su sistema de archivos raíz. Este archivo se hace de una manera genérica estar corriendo mkinitrd, sin embargo es necesario haber arrancado el sistema de primera ...
Michael Shaw
2

inxi mostrará casi todo, se ejecutará sin argumentos para abreviar, las opciones son muchas, sin embargo, ejecute inxi -h para verlas

inxies un 'script de información con todas las funciones' como se describe en la página de inicio del proyecto: https://github.com/smxi/inxi

Aquí hay información sobre cómo puede instalarlo en Ubuntu: https://askubuntu.com/questions/284635/inxi-installation-on-ubuntu

hackinjack
fuente
Inxi es una herramienta relativamente nueva y no la encontrará en la mayoría de las distribuciones. Debería agregar más información y enlaces.
itsbruce
1

Para resumir eso, diría que aquí es un buen comienzo para obtener información sobre su sistema:

  1. dmesg: imprime o controla el búfer de anillo del núcleo
  2. lspci: enumera todos los dispositivos PCI
  3. lsusb - lista dispositivos USB
  4. / proc: sistema de pseudoarchivo de información de proceso
alexus
fuente
1

Realmente disfruto usando " Facter ". Da una buena lista de información muy útil.

Sc0rian
fuente
1

debajo del código que puedes 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
fuente
Debe hacer todo eso en un bloque de código para que no se vea dañado.
Bill Weiss el
Gracias Bill siento pedir u dichas preguntas, cómo hago que los pls me dejaron próxima vez lo haré caso omiso de mi pls Inglés
Rajat
0
# tree -d /sys/devices
Wojciech Domalewski
fuente
0

Lo más fácil es escribir " dmesg | more " en la línea de comando, lo que le permite ver todos los resultados de arranque que se producen durante el último inicio del sistema.

djangofan
fuente
0

Para los discos duros, uso un script personalizado que masajea en una lista las salidas 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
fuente
-1

Una publicación muy antigua, pero me di cuenta de que lo excelente lshwfalta en las respuestas.

Janne Pikkarainen
fuente
¿Quieres decir, aparte de ser mencionado en la respuesta más votada?
Mark Booth