نحوه تولید گزارش سخت افزار سیستم در لینوکس #
درک پیکربندی سختافزار سیستم برای توسعهدهندگان و مدیران سیستم ضروری است. چه در حال تأیید سازگاری سختافزار، تشخیص مشکلات عملکرد یا برنامهریزی برای ارتقاء باشید، لینوکس چندین ابزار داخلی برای بررسی و گزارش اطلاعات دقیق سختافزار ارائه میدهد.
این مقاله نحوه استفاده از ابزارهای رایج لینوکس برای تولید گزارشهای سختافزار سیستم، تفسیر دادههای جمعآوریشده و خروجی گرفتن از آنها در قالبهای مختلف برای مستندسازی یا عیبیابی را نشان میدهد.
نسخه پاسخ کوتاه #
برای مشاهده سریع جزئیات سختافزار سیستم خود بدون ایجاد گزارشهای کامل، از این دستورات استفاده کنید:
# Concise hardware tree
$ sudo lshw -short
# Readable system summary (serials redacted)
$ sudo inxi -Fxz
# BIOS/system info from firmware
$ sudo dmidecode -t system
# Disks/partitions at a glance
$ lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT
# Compact, per-device summary from kernel probes
$ sudo hwinfo --shortنصب ابزارهای رایج برای تولید گزارشهای سختافزاری #
لینوکس ابزارهای مختلفی برای جمعآوری اطلاعات دقیق سختافزاری ارائه میدهد. اکثر توزیعها برخی از آنها را بهطور پیشفرض دارند، اما میتوانید همه آنها را با استفاده از مدیر بسته خود نصب کنید.
روی دبیان و اوبونتو #
لیست بستهها را بهروزرسانی کنید و ابزارهای مورد نیاز را نصب کنید.
$ sudo apt update
$ sudo apt install -y lshw inxi dmidecode hwinfoروی آلما لینوکس، راکی لینوکس و RHEL #
برای فعال کردن مخازن مورد نیاز و نصب ابزارها، این مراحل را دنبال کنید.
- مخزن PowerTools را فعال کنید.console
$ sudo dnf config-manager --set-enabled powertools- برای RHEL، نام مخزن متفاوت است. مخزن CodeReady Builder را فعال کنید.console
$ sudo dnf config-manager --set-enabled codeready-builder-for-rhel-$(rpm -E %rhel)-$(arch)-rpms
- برای RHEL، نام مخزن متفاوت است. مخزن CodeReady Builder را فعال کنید.
- وابستگی
perl-JSON-XSرا نصب کنید.console$ sudo dnf install -y perl-JSON-XS - ابزارهای گزارشدهی سختافزار را نصب کنید.console
$ sudo dnf install -y lshw inxi dmidecode hwinfo
مرور کلی ابزارها #
- lshw: اطلاعات دقیقی در مورد تمام اجزای سختافزاری، از جمله پردازنده، حافظه، فضای ذخیرهسازی و دستگاههای شبکه نمایش میدهد.
- inxi: یک نمای کلی از سیستم را به صورت خلاصه و قابل خواندن توسط انسان ارائه میدهد و در عین حال شناسههای حساس مانند شماره سریالها را پنهان میکند.
- dmidecode: اطلاعات سختافزار و بایوس را مستقیماً از میانافزار سیستم (جداول DMI) بازیابی میکند.
- hwinfo: دادههای جامع در سطح دستگاه ارائه میدهد که برای تشخیص و تأیید درایور مفید است.
بررسی عمیق سخت افزار سیستم: دستورات و مثال ها #
این بخش به بررسی دستوراتی میپردازد که به شما در تجزیه و تحلیل اجزای کلیدی سختافزار، از جمله CPU، حافظه و دادههای سطح میانافزار، کمک میکنند. از این ابزارها برای تأیید مشخصات، شناسایی گلوگاههای عملکرد یا تأیید تخصیص سختافزار در محیطهای مجازی استفاده کنید.
CPU #
CPU (واحد پردازش مرکزی) جزء اصلی مسئول اجرای دستورالعملها است.
- برای مشاهده معماری، مدل، تعداد هسته/رشته CPU و مجموعه دستورالعملهای موجود.console
$ lscpuخروجی:
Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 40 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Vendor ID: GenuineIntel Model name: Intel Xeon Processor (Skylake, IBRS) ......ابزار
lscpuدادهها را از/proc/cpuinfoو میانافزار سیستم جمعآوری میکند. فیلدهای کلیدی عبارتند از:- Architecture: مشخص میکند که آیا سیستم از مجموعه دستورالعملهای ۳۲ بیتی، ۶۴ بیتی یا هر دو پشتیبانی میکند.
- CPU(s): کل هستههای منطقی موجود را نشان میدهد
- Model name and vendor ID: برای شناسایی پردازندههای مجازی در محیطهای ابری مفید است
Memory (RAM) #
پیکربندی رم سیستم بر عملکرد کلی و پاسخگویی برنامه تأثیر میگذارد. میتوانید با استفاده از دستورات زیر، میزان استفاده را به صورت زنده رصد کرده و ماژولهای حافظه فیزیکی را بررسی کنید.
- مشاهده میزان استفاده از حافظه و میزان استفاده از swap به صورت بلادرنگ.console
$ free -hخروجی:
total used free shared buff/cache available Mem: 7.7Gi 459Mi 6.2Gi 1.3Mi 1.3Gi 7.3Gi Swap: 8.0Gi 0B 8.0Giدستور
freeآمار حافظه را در قالبی قابل خواندن توسط انسان نمایش میدهد. فیلد “available” کل حافظهای را که برنامهها میتوانند بدون swap کردن استفاده کنند، نشان میدهد. - اطلاعات دقیق در مورد DIMM های نصب شده را از سیستم عامل سیستم بازیابی کنید.console
$ sudo dmidecode -t memoryخروجی:
# dmidecode 3.5 Getting SMBIOS data from sysfs. SMBIOS 3.0.0 present. Handle 0x1000, DMI type 16, 23 bytes Physical Memory Array Use: System Memory Maximum Capacity: 8 GB Number Of Devices: 1 Handle 0x1100, DMI type 17, 40 bytes Memory Device Array Handle: 0x1000 Size: 8 GB Type: RAMدستور
dmidecodeدادههای سطح میانافزار (جداول DMI) را که شامل اطلاعات اسلات، حداکثر ظرفیت و جزئیات سازنده است، استخراج میکند. این برای تأیید طرحبندی فیزیکی حافظه یا شناسایی ماژولهای معیوب مفید است.
دیسکها و سیستمهای فایل #
دستگاههای ذخیرهسازی و سیستمهای فایل نصبشده، نحوه ساختاردهی و دسترسی به دادهها در یک سیستم لینوکس را تعریف میکنند. از این دستورات برای فهرست کردن دیسکها، پارتیشنها و نقاط نصب موجود استفاده کنید.
- تمام دستگاههای بلوک را به همراه اندازه، نوع، فرمت سیستم فایل و محل اتصال آنها فهرست کنید.console
$ lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTخروجی:
NAME SIZE TYPE FSTYPE MOUNTPOIN sr0 1024M rom vda 160G disk ├─vda1 512M part vfat /boot/efi └─vda2 159.5G part ext4 /دستور lsblk دستگاههای بلوکی مانند دیسکها، پارتیشنها و ولومهای مجازی را نمایش میدهد. فیلدهای کلیدی عبارتند از:
- TYPE: مشخص میکند که آیا یک دستگاه، دیسک فیزیکی، پارتیشن یا بلوک مجازی است.
- FSTYPE: نوع سیستم فایل (مثلاً
ext4،xfs،vfat) را نشان میدهد. - MOUNTPOINT: نشان میدهد که هر پارتیشن در درخت دایرکتوری کجا مانت شده است.
شما میتوانید پارامتر
-fرا به دستورlsblkاضافه کنید تا UUIDها و برچسبهای سیستم فایل را نمایش دهید. - نمایش سیستم فایلهای نصبشده و آمار استفاده بر اساس نوع.console
$ df -hTخروجی:
Filesystem Type Size Used Avail Use% Mounted on efivarfs efivarfs 256K 19K 233K 8% /sys/firmware/efi/efivars /dev/vda2 ext4 328G 16G 298G 6% / /dev/vda1 vfat 511M 6.2M 505M 2% /boot/efiدستور
dfمیزان استفاده از فضای دیسک را برای همه سیستم فایل های نصب شده گزارش می دهد.گزینههای کلیدی:
-h: اندازهها را با فرمتی قابل خواندن توسط انسان (مثلاً MiB، GiB) نمایش میدهد.-T: نوع سیستم فایل را در خروجی وارد میکند.
شبکه #
تشخیص شبکه برای تأیید پیکربندی رابط، سازگاری درایور و آدرسدهی IP ضروری است. از دستورات زیر برای بررسی جزئیات منطقی و سختافزاری استفاده کنید.
- تمام رابطهای شبکه را با آدرسهای IP اختصاص داده شده فهرست کنید.console
$ ip -br addrخروجی:
lo UNKNOWN 127.0.0.1/8 ::1/128 enp1s0 UP 192.2.0.56/23 2001:db8::5400:5ff:feb2:2f70/64در دستور بالا:
ip: رابطهای شبکه، مسیرها و آدرسها را نمایش داده و دستکاری میکند.-br: حالت مختصر را فعال میکند و خروجی فشرده و رنگی را نشان میدهد.addr: اطلاعات آدرس IP را برای هر رابط فهرست میکند.
- نمایش جزئیات سطح سختافزاری برای رابطهای شبکه.console
$ sudo lshw -class networkخروجی:
*-network description: Ethernet controller product: Virtio 1.0 network device vendor: Red Hat, Inc. ...... capabilities: msix pm pciexpress bus_master cap_list fb configuration: depth=32 driver=virtio-pci latency=0 mode=1280x800 visual=truecolor xres=1280 yres=800 resources: iomemory:80-7f irq:22 memory:85200000-85200fff memory:800000000-800003fff *-virtio0 description: Ethernet interface ...... serial: 56:00:05:ba:75:dd configuration: autonegotiation=off broadcast=yes driver=virtio_net driverversion=1.0.0 ip=155.138.194.201 link=yes multicast=yesدر دستور بالا:
lshw: اطلاعات دقیق سختافزار را فهرست میکند.-class network: خروجی را فیلتر میکند تا فقط دستگاههای مرتبط با شبکه را نشان دهد
خلاصه های کل سیستم #
این ابزارها، نمای کلی از پیکربندی سختافزاری کل سیستم، از پردازنده و حافظه گرفته تا فضای ذخیرهسازی، شبکه و حسگرها را ارائه میدهند. آنها بهویژه برای ممیزیها، مستندسازی یا عیبیابی محیطهای ناآشنا مفید هستند.
- خلاصه سیستم قابل خواندن و ویرایش شده.console
$ inxi -Fxzخروجی:
System: Kernel: 6.8.0-79-generic arch: x86_64 bits: 64 compiler: gcc v: 13.3.0 Console: pty pts/4 Distro: Ubuntu 24.04.3 LTS (Noble Numbat) Machine: Type: Microsoft System: Negarnovin product: VHP v: pc-q35-8.2 serial: <superuser required> Mobo: N/A model: N/A serial: N/A UEFI: Negarnovin v: N/A date: N/A CPU: Info: quad core model: Intel Xeon (Cascadelake) bits: 64 type: MT MCP arch: Cascade Lake rev: 6 cache: L1: 512 KiB L2: 16 MiB L3: 16 MiB Speed (MHz): avg: 2993 min/max: N/A cores: 1: 2993 2: 2993 3: 2993 4: 2993 5: 2993 6: 2993 ۷: ۲۹۹۳ ۸: ۲۹۹۳ bogomips: 47887 ......در دستور بالا:
inxi: یک گزارش سیستمی جامع اما قابل خواندن توسط انسان تولید میکند.-F: نمایش اطلاعات کامل سیستم (پردازنده، حافظه، دیسکها، شبکه و غیره).-x: جزئیات اضافی مانند نسخههای کرنل و درایور را اضافه میکند.-z: اطلاعات حساس (شماره سریال، MAC و غیره) را برای اشتراکگذاری ایمن، ویرایش میکند.
- مشاهده درخت سختافزار (جزئیات کامل سیستم).console
$ sudo lshwخروجی:
demo-server description: Computer product: VHP vendor: Negarnovin version: pc-q35-8.2 serial: 89766525 width: 64 bits capabilities: smbios-3.0.0 dmi-3.0.0 smp vsyscall32در دستور بالا:
sudo: دسترسی به دادههای محدود سیستم عامل و سیستم را تضمین میکند.lshw: یک نمای سلسله مراتبی و دقیق از تمام سختافزارهای شناسایی شده ایجاد میکند.
- تصویر لحظهای فشرده و سطح بالا از اجزای سختافزاری.console
$ sudo hwinfo --shortدر دستور بالا:
hwinfo: اجزای سختافزاری سیستم را بررسی و فهرست میکند.--short: خروجی را به خطوط مختصر و متناسب با هر دستگاه خلاصه میکند.
خروجی گرفتن از گزارشهای سختافزاری #
در این بخش، شما گزارشهای جامع سختافزاری را در سیستم لینوکس خود ایجاد میکنید. این اسکریپت با استفاده از ابزارهایی مانند lshw lshw, inxi, dmidecode, و hwinfo، جمعآوری دادهها را خودکار میکند و سپس خروجی را در یک دایرکتوری با مهر زمانی ذخیره میکند. این اسکریپت جزئیات سیستم مانند نام میزبان، نسخه هسته، سیستم عامل، اطلاعات CPU، میزان استفاده از حافظه و پیکربندی شبکه را ثبت میکند. گزارشهای حاصل، نمای کلی کاملی از سختافزار شما را برای اهداف حسابرسی یا عیبیابی ارائه میدهند.
- یک فایل اسکریپت پوسته جدید ایجاد کنید.console
$ nano generate-hw-reports.sh - اسکریپت زیر را به فایل اضافه کنید. این اسکریپت اطلاعات دقیق سختافزاری را جمعآوری میکند، گزارشها را سازماندهی میکند و آنها را در یک بایگانی فشرده میکند.bash
#!/usr/bin/env bash set -euo pipefail TS=$(date +"%Y-%m-%dT%H-%M-%S") HOSTNAME=$(hostname) REPORT_DIR="hwreports-${HOSTNAME}-${TS}" echo "==> Creating report directory: ${REPORT_DIR}" mkdir -p "${REPORT_DIR}" echo "==> Capturing basic system and network information" ip route show > "${REPORT_DIR}/routes.txt" cat /etc/resolv.conf > "${REPORT_DIR}/dns-config.txt" sudo dmidecode -t bios > "${REPORT_DIR}/bios-info.txt" uname -a > "${REPORT_DIR}/kernel.txt" lsb_release -a > "${REPORT_DIR}/os-release.txt" ۲>/dev/null || cat /etc/os-release > "${REPORT_DIR}/os-release.txt" sudo dmidecode -t chassis > "${REPORT_DIR}/chassis.txt" { echo "System Hardware Report" echo "=======================" echo "Host: ${HOSTNAME}" echo "Generated on: ${TS}" echo echo "Files included:" find "${REPORT_DIR}" -type f | sed 's|^| - |' } > "${REPORT_DIR}/INDEX.txt" cat <<EOF > "${REPORT_DIR}/metadata.json" { "hostname": "${HOSTNAME}", "timestamp": "${TS}", "kernel": "$(uname -r)", "os": "$(grep PRETTY_NAME /etc/os-release | cut -d= -f2 | tr -d '"')", "cpu_count": "$(nproc)", "cpu_model": "$(lscpu | awk -F: '/Model name/ {print $2}' | xargs)", "total_memory": "$(free -h | awk '/Mem:/ {print $2}')" } EOF echo "==> Generating human-readable summary (inxi)" inxi -Fxz > "${REPORT_DIR}/system-summary.txt" echo "==> Generating hardware tree reports (lshw)" sudo lshw -sanitize > "${REPORT_DIR}/lshw.txt" sudo lshw -sanitize -html > "${REPORT_DIR}/lshw.html" sudo lshw -sanitize -json > "${REPORT_DIR}/lshw.json" echo "==> Dumping firmware/DMI data (dmidecode)" sudo dmidecode > "${REPORT_DIR}/dmidecode.txt" echo "==> Capturing component-specific snapshots" lscpu > "${REPORT_DIR}/cpu.txt" free -h > "${REPORT_DIR}/memory-usage.txt" lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT > "${REPORT_DIR}/disks.txt" ip -br addr > "${REPORT_DIR}/net-addr.txt" echo "==> Generating full hwinfo report (large)" sudo hwinfo --all > "${REPORT_DIR}/hwinfo-full.txt" sudo hwinfo --short > "${REPORT_DIR}/hwinfo-short.txt" echo "==> Compressing reports into archive" tar -czf "${REPORT_DIR}.tar.gz" "${REPORT_DIR}/" echo "==> Done! Archive: ${REPORT_DIR}.tar.gz" echo " To extract: tar -xzf ${REPORT_DIR}.tar.gz"
فایل را ذخیره کنید و ببندید.
- مجوزهای اجرا را به اسکریپت اعطا کنید.console
$ chmod +x generate-hw-reports.sh - اسکریپت را اجرا کنید تا گزارشهای سختافزاری تولید شود.console
$ ./generate-hw-reports.shخروجی:
==> Creating report directory: hwreports-K8s-Cluster-Master--01-2025-10-28T18-06-29 ==> Capturing basic system and network information ==> Generating human-readable summary (inxi)این اسکریپت یک دایرکتوری با مهر زمانی ایجاد میکند که شامل تمام گزارشهای سختافزاری است، سپس آن را برای پشتیبانگیری یا اشتراکگذاری آسان، در یک بایگانی
.tar.gzفشرده میکند.مهماین اسکریپت از
-sanitize(برایlshw) و-z(برایinxi) برای حذف شماره سریالها و آدرسهای MAC از خروجی استفاده میکند. اگر محیط شما با شناسههای دستگاه یا نامهای میزبان به عنوان دادههای حساس رفتار میکند، قبل از اشتراکگذاری فایلهای تولید شده، آنها را بررسی کنید.
نتیجه گیری #
در این مقاله، شما با استفاده از ابزارهای داخلی لینوکس، گزارشهای کاملی از سختافزار ایجاد کردید. ابزارهایی مانند lshw, inxi, و dmidecode در کنار دستوراتی مانندlscpu, free, lsblk, و ip به شما کمک میکنند تا اطلاعات CPU، حافظه، ذخیرهسازی و شبکه را به طور کارآمد مستند کنید. بایگانی این گزارشها، آمادگی حسابرسی، عیبیابی و مستندسازی سیستم را بهبود میبخشد.