Come scoprire i dettagli sull'hardware sulla macchina Linux?


41

-ie - come ottenere un elenco completo di componenti hardware nella riga di comando (su una macchina senza sistema a finestre)

Grazie.

Risposte:


41

lspciper schede PCI, lsusbper USB, lshwfunziona su distribuzioni basate su debian, ecco un elenco di modi per ottenere altre specifiche hardware ,


grazie per il link. Ammetto che avrei potuto cercarlo su Google, ma google è un disastro.
Evgeny,

37

Se disponibile, dmidecodeè utile. Soprattutto su hardware Dell, HP, IBM, dove si preoccupano di programmare le informazioni hardware rilevanti nei vari registri.


7
dmidecode è carino. Un giorno, quando lo stavo usando per esaminare i dettagli della memoria, mi sono reso conto che anche tu potresti scoprire il codice di servizio Dell: dmidecode | grep -i serial | egrep -o '[0-9A-Z] {7} $' | head -n1
Kyle Brandt

1
D'accordo, è possibile eseguire dmidecode e semplicemente grep per le informazioni desiderate.
barfoon,

1
Funziona anche su hardware Apple.
Matt3o12

30

lspciè una grande utility per elencare l'hardware del sistema. (Qualsiasi cosa sul bus PCI, comunque.)

cat /proc/cpuinfo - Visualizza le informazioni sulla CPU

cat /proc/meminfo - Visualizza le informazioni sulla memoria

dmesg(o cat /var/log/dmesg) contiene alcune informazioni, non necessariamente tutto.

Se hai un sistema RedHat / CentOS, puoi usare sosreportper raccogliere un bel po 'di informazioni, anche se non so se abbia tutte le informazioni hardware elencate in esso.

Questi sono alcuni buoni posti per iniziare a trovare le informazioni che stai cercando.


3

Il filesystem / proc ti fornirà le informazioni che desideri ... MA non so come le otterrai è un posto facile.

'cat / proc / cpuinfo' ti parlerà della tua CPU 'cat / proc / devices' ti dirà alcune informazioni limitate sui dispositivi a blocchi. 'ifconfig -a' ti parlerà delle connessioni di rete

Altri saranno in grado di parlarti di più dispositivi. Stai risolvendo un determinato dispositivo? In tal caso, riceverai un aiuto migliore per porre una domanda specifica.


grazie no, sto provando a passare da un host all'altro e vorrei vedere qual è la differenza nell'hardware in generale - per vedere se riesco a spostarmi re-imaging.
Evgeny,

1
Finché le parti iniziali dell'avvio funzionano, la maggior parte delle distribuzioni rileverà e adatterà le modifiche hardware. In caso di problemi con la parte di avvio, installare la stessa distribuzione che si sta spostando sul nuovo hardware, aggiornarlo sullo stesso kernel che si sta spostando e quindi copiare il file mkintrd sul file system dell'immagine e questo dovrebbe risolvere i problemi di avvio . Se va davvero storto, hai ancora tutti i tuoi dati sulla vecchia macchina.
Michael Shaw,

Se hai già Linux sulla seconda macchina e funziona, supponendo che il kernel sia una build generica e altrettanto recente, caricherà tutti i moduli (i moduli sono simili ai driver di Windows) di cui ha bisogno. Le installazioni di Linux non sono realmente specifiche dell'hardware in quel modo.
Kyle Brandt,

Il file /boot/initrd-2.6.*.img non è così generico. Viene usato dal kernel quando passa il controllo da grub. Deve avere tutte le impostazioni e i moduli per caricare il file system di root. Questo file è realizzato in modo generico eseguendo mkinitrd, tuttavia è necessario aver prima avviato il sistema ...
Michael Shaw,

2

inxi mostrerà praticamente tutto, esegui senza argomenti in forma abbreviata, le opzioni sono molte comunque, esegui inxi -h per vederli

inxiè uno "script di informazioni completo" come descritto nella home page del progetto: https://github.com/smxi/inxi

Ecco le informazioni su come installarlo su Ubuntu: https://askubuntu.com/questions/284635/inxi-installation-on-ubuntu


Inxi è uno strumento relativamente nuovo e non uno che troverai sulla maggior parte delle distribuzioni. Dovresti aggiungere ulteriori informazioni e collegamenti.
itsbruce,

1

per riassumere, direi che qui è un buon inizio per ottenere informazioni sul tuo sistema:

  1. dmesg - stampa o controlla il buffer dell'anello del kernel
  2. lspci - elenca tutti i dispositivi PCI
  3. lsusb - elenca i dispositivi USB
  4. / proc - sistema di pseudo-file di informazioni di processo


1

Mi piace molto usare " Facter ". Fornisce un buon elenco di informazioni molto utili.


1

sotto il codice che puoi copiare 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

Devi fare tutto in un blocco di codice in modo che non sembri danneggiato.
Bill Weiss,

Grazie Bill, ti chiedo queste domande, come faccio a farmi la prossima volta che lo farò, per favore ignora il mio inglese
Rajat,


0

La cosa più semplice è digitare " dmesg | more " sulla riga di comando, che consente di vedere tutto l'output di avvio che si verifica durante l'ultimo avvio del sistema.


0

Per i dischi rigidi utilizzo uno script personalizzato che massaggia in un elenco gli output di:

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 post molto vecchio, ma ho notato che lshwnelle risposte manca l'eccellente .


Intendi oltre a essere menzionato nella risposta più votata?
Mark Booth,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.