web-dev-qa-db-fra.com

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

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

Je vous remercie.

41
Evgeny

lspci pour les cartes pci, lsusb pour les usb, lshw fonctionne sur les distributions basées sur Debian, voici une liste de façons d'obtenir autres spécifications matérielles ,

41
Keith

Si disponible, dmidecode est très pratique. En particulier sur le matériel Dell, HP, IBM, où ils prennent la peine de programmer les informations matérielles pertinentes dans les différents registres.

37
Chad Huneycutt

lspci est un excellent utilitaire pour répertorier le matériel du système. (Quoi que ce soit sur le bus PCI, de toute façon.)

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

cat /proc/meminfo - Affiche les 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 sosreport pour collecter une bonne partie des informations, même si je ne sais pas s'il contient toutes les informations matérielles répertoriées.

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

30
baumgart

Le système de fichiers/proc vous donnera les informations que vous souhaitez ... MAIS je ne sais pas comment vous les obtiendrez est un endroit facile.

'cat/proc/cpuinfo' vous informera sur votre CPU 'cat/proc/devices' vous donnera quelques informations limitées sur les périphériques bloqués. 'ifconfig -a' vous renseignera sur les connexions réseau

D'autres pourront vous parler de plus d'appareils. Dépannez-vous un appareil particulier? Si c'est le cas, vous obtiendrez une meilleure aide pour poser une question spécifique.

3
Michael Shaw

inxi affichera à peu près tout, exécutez sans arguments pour une forme courte, les options sont nombreuses cependant, exécutez inxi -h pour les voir

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

Voici des informations sur la façon dont vous pouvez l'installer sur Ubuntu: https://askubuntu.com/questions/284635/inxi-installation-on-ubunt

2
hackinjack

pour résumer cela, 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 d'anneau du noyau
  2. lspci - liste tous les périphériques PCI
  3. lsusb - liste les périphériques USB
  4. / proc - système de pseudo-fichiers d'informations sur les processus
1
alexus

Je recommande de vérifier Facter qui génère de nombreuses informations sous une forme facile à utiliser dans les scripts.

http://www.puppetlabs.com/puppet/related-projects/facter/

1
Niels Basjes

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

1
Sc0rian

ci-dessous, vous pouvez copier à l'aide de 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
1
Rajat

Pour les disques durs, j'utilise un script personnalisé qui regroupe en une seule 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
0
mivk
# tree -d /sys/devices
0
Wojciech Domalewski

La chose la 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
djangofan