Comment trouver des détails sur le matériel sur la machine Linux?


41

-ie - comment obtenir la liste complète des composants matériels en ligne de commande (sur une machine sans système de fenêtre)

Merci.

Réponses:


41

lspcipour les cartes PCI, lsusbpour USB, lshwfonctionne sur les distributions basées sur Debian, voici une liste de façons d’obtenir d’ autres spécifications matérielles ,


Merci pour le lien. J'admets que j'aurais pu le rechercher sur Google, mais Google est un messager.
Evgeny

37

Si disponible, dmidecodeest utile. Particulièrement sur les matériels Dell, HP et IBM, où ils s’occupent de programmer les informations matérielles pertinentes dans les différents registres.


7
dmidecode est sympa. Un jour, lorsque je l'utilisais pour consulter les détails de la mémoire, j'ai compris que vous pouviez également trouver le numéro de service Dell: dmidecode | grep -i série | egrep -o '[0-9A-Z] {7} $' | tête -n1
Kyle Brandt le

1
D'accord, vous pouvez exécuter dmidecode et juste grep pour les informations souhaitées.
barfoon

1
Fonctionne également très bien sur le matériel Apple.
Matt3o12

30

lspciest un excellent utilitaire pour lister le matériel du système. (Quoi que ce soit sur le bus PCI, en tout cas.)

cat /proc/cpuinfo - Affiche les informations sur le processeur

cat /proc/meminfo - Affiche des informations sur la mémoire

dmesg(ou cat /var/log/dmesg) contient des informations, pas nécessairement tout.

Si vous avez un système RedHat / CentOS, vous pouvez utiliser sosreportpour collecter une bonne quantité d'informations, bien que je ne sache pas s'il contient toutes les informations matérielles répertoriées.

Ce sont quelques bons endroits pour commencer à trouver les informations que vous recherchez.


3

Le système de fichiers / proc vous donnera les informations que vous voulez ... MAIS je ne sais pas comment vous allez l'obtenir, c'est un endroit facile.

'cat / proc / cpuinfo' vous parlera de votre processeur. 'cat / proc / devices' vous donnera des informations limitées sur les périphériques en mode bloc. 'ifconfig -a' vous renseignera sur les connexions réseau

D'autres pourront vous parler d'un plus grand nombre d'appareils. Êtes-vous en train de dépanner un appareil particulier? Si c'est le cas, vous obtiendrez une aide plus efficace en posant une question spécifique.


merci non, j'essaie de passer d'un hôte à l'autre et j'aimerais voir quelle est la différence en matériel en général - pour voir si je peux me déplacer en procédant à une nouvelle imagerie.
Evgeny

1
Tant que les parties initiales du démarrage fonctionnent, la plupart des distributions détectent simplement les modifications matérielles et s’adaptent. Si vous rencontrez des problèmes avec la partie démarrage, installez la même distribution que sur le nouveau matériel, mettez-la à jour avec le même noyau que vous déplacez, puis copiez le fichier mkintrd sur le système de fichiers image, ce qui devrait résoudre vos problèmes de démarrage. . En cas de problème, vous avez toujours toutes vos données sur votre ancien ordinateur.
Michael Shaw

Si vous avez déjà Linux sur la deuxième machine et que cela fonctionne, en supposant que le noyau soit une construction générique et que, tout aussi récent, il chargera tous les modules (les modules sont un peu analogues aux pilotes Windows) dont il a besoin. Les installations Linux ne sont pas vraiment spécifiques au matériel de cette manière.
Kyle Brandt

Le fichier /boot/initrd-2.6.*.img n’est pas aussi générique. Il est utilisé par le noyau lorsque son contrôle passé par grub est passé. Il doit disposer de tous les paramètres et modules pour charger votre système de fichiers racine. Ce fichier a été créé de manière générique avec mkinitrd, mais vous devez d'abord démarrer le système ...
Michael Shaw

2

inxi montrera à peu près tout, exécuté sans arguments pour la forme abrégée, les options sont nombreuses mais exécutez inxi -h pour les voir

inxiest un "script d'informations complet", tel que décrit par la page d'accueil du projet: https://github.com/smxi/inxi

Voici des informations sur la manière de l'installer sur Ubuntu: https://askubuntu.com/questions/284635/inxi-installation-on-ubuntu


Inxi est un outil relativement nouveau et que vous ne trouverez pas dans la plupart des distributions. Vous devriez ajouter quelques informations supplémentaires et des liens.
Itsbruce

1

Pour résumer, je dirais que c’est un bon début pour obtenir des informations sur votre système:

  1. dmesg - affiche ou contrôle le tampon circulaire du noyau
  2. lspci - liste tous les périphériques PCI
  3. lsusb - liste les périphériques USB
  4. / proc - pseudo-système de fichiers d'informations de processus


1

J'aime beaucoup utiliser " Facter ". Donne une belle liste d'informations très utiles.


1

ci-dessous le code u peut copier en utilisant 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

Vous devez créer tout cela dans un bloc de code afin qu'il ne semble pas endommagé.
Bill Weiss

Merci Bill désolé de vous poser de telles questions, comment puis-je faire que les pls me la prochaine fois que je le ferai pls ignorer mon anglais
Rajat


0

Le plus simple est de taper " dmesg | more " sur la ligne de commande, ce qui vous permet de voir toutes les sorties de démarrage qui se produisent lors du dernier démarrage du système.


0

Pour les disques durs, j’utilise un script personnalisé qui regroupe dans une liste les sorties 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

Un très vieux post, mais j'ai remarqué que l'excellent lshwest absent des réponses.


Vous voulez dire en plus d'être mentionné dans la réponse la plus votée?
Mark Booth
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.