Bagaimana cara mengetahui detail tentang perangkat keras pada mesin Linux?

41

-yaitu - cara mendapatkan daftar lengkap komponen perangkat keras di baris perintah (pada mesin tanpa sistem jendela)

Terima kasih.

Evgeny
sumber

Jawaban:

41

lspciuntuk kartu pci, lsusbuntuk usb, lshwbekerja pada distro berbasis debian, berikut adalah daftar cara untuk mendapatkan spesifikasi perangkat keras lainnya ,

Keith
sumber
terima kasih untuk tautannya. Saya akui bahwa saya bisa meng-google-nya, tetapi google adalah mess man.
Evgeny
37

Jika tersedia, dmidecodeberguna. Khususnya pada perangkat keras Dell, HP, IBM, di mana mereka repot-repot memprogram informasi perangkat keras yang relevan ke dalam berbagai register.

Chad Huneycutt
sumber
7
dmidecode itu bagus. Suatu hari ketika saya menggunakannya untuk melihat detail memori saya menyadari Anda juga bisa mengetahui tag layanan Dell: dmidecode | grep -i serial | egrep -o '[0-9A-Z] {7} $' | head -n1
Kyle Brandt
1
Setuju, Anda dapat menjalankan dmidecode dan hanya menerima info yang Anda inginkan.
barfoon
1
Juga berfungsi dengan baik pada perangkat keras apel.
Matt3o12
30

lspciadalah utilitas yang bagus untuk mendaftarkan perangkat keras sistem. (Bagaimanapun, apa pun yang ada di bus PCI.)

cat /proc/cpuinfo - Menampilkan info CPU

cat /proc/meminfo - Menampilkan info memori

dmesg(atau cat /var/log/dmesg) mengandung beberapa info, belum tentu semuanya.

Jika Anda memiliki sistem RedHat / CentOS, Anda dapat menggunakan sosreportuntuk mengumpulkan sedikit informasi, meskipun saya tidak tahu apakah ia memiliki semua informasi perangkat keras yang tercantum di dalamnya.

Itulah beberapa tempat bagus untuk mulai mencari info yang Anda cari.

Baumgart
sumber
3

Sistem file / proc akan memberi Anda informasi yang Anda inginkan ... TAPI saya tidak tahu bagaimana Anda akan mendapatkannya adalah satu tempat yang mudah.

'cat / proc / cpuinfo' akan memberi tahu Anda tentang CPU Anda 'cat / proc / devices' akan memberi tahu Anda beberapa informasi terbatas tentang perangkat blok. 'ifconfig -a' akan memberi tahu Anda tentang koneksi jaringan

Orang lain akan dapat memberi tahu Anda tentang lebih banyak perangkat. Apakah Anda memecahkan masalah perangkat tertentu? Jika demikian, Anda akan mendapatkan bantuan yang lebih baik untuk mengajukan pertanyaan tertentu.

Michael Shaw
sumber
terima kasih tidak, saya mencoba untuk pindah dari satu host ke host dan ingin melihat apa perbedaan pada perangkat keras secara umum - untuk melihat apakah saya dapat bergerak dengan pencitraan ulang.
Evgeny
1
Selama bagian awal boot bekerja, sebagian besar distribusi hanya akan mendeteksi perubahan perangkat keras dan beradaptasi. Jika Anda memiliki masalah dengan bagian boot, instal distribusi yang sama ketika Anda pindah ke perangkat keras baru, perbarui itu ke kernel yang sama seperti Anda bergerak dan kemudian salin file mkintrd ke sistem file gambar dan yang seharusnya memecahkan masalah boot Anda . Jika benar-benar salah, Anda masih memiliki semua data di mesin lama.
Michael Shaw
Jika Anda sudah memiliki Linux pada mesin kedua dan berfungsi, dengan asumsi Kernel adalah build generik dan baru-baru ini, itu akan memuat semua modul (modul semacam analog dengan Windows Drivers) yang dibutuhkan. Instalasi Linux sebenarnya tidak terlalu spesifik untuk perangkat keras.
Kyle Brandt
File /boot/initrd-2.6.*.img tidak terlalu umum. Ini digunakan oleh kernel ketika melewati kontrol oleh grub. Perlu memiliki semua pengaturan dan modul untuk memuat sistem file root Anda. File ini dibuat dengan cara yang umum berjalan mkinitrd, namun Anda perlu telah boot sistem pertama ...
Michael Shaw
2

inxi akan menunjukkan hampir segalanya, berjalan tanpa argumen untuk form pendek, opsinya banyak, jalankan inxi -h untuk melihatnya

inxiadalah 'skrip informasi fitur lengkap' seperti yang dijelaskan oleh halaman beranda proyek: https://github.com/smxi/inxi

Berikut adalah informasi tentang bagaimana Anda dapat menginstalnya di Ubuntu: https://askubuntu.com/questions/284635/inxi-installation-on-ubuntu

hackinjack
sumber
Inxi adalah alat yang relatif baru dan bukan yang Anda akan temukan di sebagian besar distribusi. Anda harus menambahkan beberapa informasi dan tautan.
bruce
1

untuk meringkas itu, saya katakan di sini adalah awal yang baik untuk mendapatkan informasi tentang sistem Anda:

  1. dmesg - mencetak atau mengontrol buffer ring kernel
  2. lspci - daftar semua perangkat PCI
  3. lsusb - daftar perangkat USB
  4. / proc - proses informasi sistem file semu
alexus
sumber
1

Saya sangat menikmati menggunakan " Facter ". Memberikan daftar informasi yang sangat berguna.

Sc0rian
sumber
1

kode di bawah ini dapat Anda salin menggunakan 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
sumber
Anda harus membuatnya dalam blok kode agar tidak terlihat rusak.
Bill Weiss
Terima kasih Bill maaf meminta u pertanyaan seperti bagaimana saya melakukan itu pls biarkan aku kali aku akan melakukannya pls mengabaikan bahasa Inggris saya
Rajat
0
# tree -d /sys/devices
Wojciech Domalewski
sumber
0

Yang paling mudah adalah mengetikkan " dmesg | more " di baris perintah, yang memungkinkan Anda untuk melihat semua output boot yang terjadi selama startup sistem terakhir.

Djangofan
sumber
0

Untuk hard disk saya menggunakan skrip khusus yang memijat menjadi satu daftar output dari:

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
sumber
-1

Posting yang sangat lama, tetapi saya perhatikan bahwa yang terbaik lshwhilang dari jawaban.

Janne Pikkarainen
sumber
Maksud Anda selain disebutkan dalam jawaban dengan suara terbanyak?
Mark Booth