مشاهده فهرست قطعات رایانه در ترمینال لینوکس – از صفر تا صد


در این مقاله با روشهای مختلف مشاهده فهرست قطعات رایانه در ترمینال لینوکس آشنا خواهیم شد. در ادامه به بررسی 12 دستور میپردازیم که برای این منظور مورد استفاده قرار میگیرند.
چرا 12 دستور؟
با این که روشهای بسیار زیادی برای مشاهده فهرست قطعات داخل رایانه لینوکسی یا دستگاههای متصل به آن وجود دارند، اما ما در این مقاله 12 مورد از آنها را بررسی میکنیم و باید بدانید که اینها همه موارد نیستند.
بدیهی است که وقتی 12 دستور مختلف برای انجام یک کار واحد مورد بررسی قرار میگیرند، مقدار زیادی از اطلاعات همپوشانی خواهند داشت و شاید بپرسید چرا باید همه آن را توضیح داد؟
دلیل این مسئله آن است که برخی اختلافها در محتوا و جزییات این دستورها موجب میشوند که در عمل متفاوت باشند و بدین ترتیب برخی افراد استفاده از برخی از آنها را به دیگری ترجیح میدهند. قالب خروجی یک دستور ممکن است صرفاً برای کاربردهای خاصی مناسبسازی شده باشد. قالب دستور دیگر ممکن است برای pipe شدن از طریق grep یا ارسال به متد دیگر برای پردازش بیشتر مناسب باشد.
با این حال ما تلاش کردهایم که این مثال تا حد امکان به صورتی عمومی نوشته شود. در واقع ما به جای این که تلاش کنیم حدس بزنیم خوانندگانمان احتمالاً کدام دستورها را بیشتر ترجیح میدهند و استفاده میکنند، سعی کردهایم نمونه گستردهای از دستورهایی که وجود دارند را عرضه کنیم تا خوانندگان مجله فرادرس بتوانند انواع مطلوب خود را انتخاب کنند و آنهایی را که دوست ندارند کنار بگذارند.
برخی مواردی که باید نصب شوند
اغلب این دستورها به صورت پیشفرض درون توزیعهای لینوکس موجود هستند. اوبونتو، فدورا، و منجارو به عنوان نمونه گویایی از توزیعهایی هستند که از شاخههای اصلی خانوادههای دبیان، ردهت و Arch نشعت گرفتهاند.
همه این توزیعها نیاز به نصب procinfo دارند که دستور lsdev را در اختیار ما قرار میدهد. دستور lsscsi نیز برای نصب روی هر سه توزیع مورد نیاز است. برای نصب lsdev و lsscsi از این دستورها استفاده کنید.
اوبونتو
sudo apt-get install procinf
sudo apt-get install lsscsi
فدورا
sudo dnf install procinfo
sudo dnf install lsscsi
منجارو
sudo pacman -Syu procinfo
sudo pacman -Syu lsscsi
شگفتانگیز است که منجارو که مشهور به یک توزیع ابتدایی و فاقد امکانات اضافی است، تنها توزیعی است که اغلب دستورهایی که قرار است بررسی کنیم را از قبل روی خود نصب دارد.
اوبونتو و فدورا به نصب hwinfo نیاز دارند و روی فدورا باید lshw و hdparm را نیز نصب کنید.
اوبونتو
sudo apt-get install hwinfo
فدورا
sudo dnf install hwinfo
sudo dnf install lshw
sudo dnf install hdparm
1. دستور mount
دستور mount برای مانت کردن فایلسیستمها مورد استفاده قرار میگیرد. اما صادر کردن دستور بدون پارامتر موجب میشود که همه فایلسیستمهای مانت شده و همچنین دستگاههایی که روی آن قرار دارند فهرست شوند. بنابراین میتوانیم از آن به عنوان ابزاری برای کشف این قطعهها استفاده کنیم.
mount
خروجی دستور mount ممکن است طولانیتر از آن چیزی باشد که انتظار دارید، به خصوص اگر از متد snap برای نصب نرمافزار استفاده کرده باشید، چنین حالتی محتملتر است. هر بار که از snap استفاده میکنید یک شِبه فایلسیستم دیگر به دست میآورید و این موارد نیز فهرست میشوند. البته این موارد قطعات فیزیکی مرتبطی ندارند. بنابراین صرفاً باعث شلوغ شدن تصویر واقعی قطعات سیستم میشوند.
اگر یک فایلسیستم واقعی در فهرست خود یافتید که روی هارد درایو قرار دارد میتوانید آن را با grep جداسازی کنید. هارد درایوها به وسیله نامشان شناسایی میشوند که عموماً با sd آغاز شده و در ادامه یک حرفی دارند که از a برای نخستین درایو، b برای درایو دوم و همین طور تا آخر تشکیل یافته است. پارتیشنها به وسیله افزودن یک عدد 1 برای پارتیشن اول، 2 برای پارتیشن دوم و همین طور تا آخر تشخیص داده میشوند.
بنابراین نخستین هارد درایو sda خواهد بود و پارتیشن اول روی آن درایو به نام sda1 خواهد بود. هارد درایوها از طریق فایلهای دستگاه خاص (که فایلهای بلوک نامیده میشوند) در مسیر dev/ عرضه شده و جایی در درخت فایلسیستم مانت میشوند. این دستور از grep برای فیلتر کردن جزییات هر درایو که با sd آغاز میشود استفاده میکند.
mount | grep /dev/sd
خروجی شامل یک هارد درایو منفرد در دستگاه است که در این مقاله برای تحقیق استفاده شده است.
پاسخی که از mount میآید به ما اعلام میکند درایو dev/sda/ در / (یعنی ریشه درخت فایلسیستم) مانت میشود و دارای فایلسیستم ext4 است. حروف rw نشان میدهد که در حالت خواندن-نوشتن مانت شده است.
Relatime شِمایی است که از سوی روالهای بهروزرسانی «مُهر زمانی» (Timestamp) فایل مورد استفاده قرار میگیرد. زمان دسترسی روی دیسک نوشته نمیشود، مگر این که زمان اصلاح (mtime) یا زمان تغییر (ctime) یک فایل، بسیار جدیدتر از آخرین زمان دسترسی باشد یا زمان دسترسی (atime) قدیمیتر از یک آستانه تعریفشده از سوی سیستم باشد. این امر موجب کاهش چشمگیری در تعداد بهروزرسانیهای دیسک میشود که لازم است در مورد فایلهای با دسترسی فراوان صورت بگیرد.
errors=remount-ro نشان میدهد که اگر خطاهای عرضه بیش از یک حد مشخص وجود داشته باشند، فایلسیستم به صورت فقط-خواندنی مجدداً مانت میشود. برای این که بتوانیم روی خروجی ارائه شده از سوی mount اسکرول بکنیم و فایلسیستمهایی که روی دستگاهها مانت شده را راحتتر شناسایی کنیم، خروجی mount از طریق less به صورت pipe عرضه میشود.
mount | less
روی خروجی اسکرول کنید تا این که فایلسیستمهایی که به فایلهای خاص /dev اتصال یافتهاند را ببینید.
2. دستور lsblk
دستور lsblk قطعات بلوک، نقطه مانت و دیگر اطلاعات را فهرست میکند. عبارت lsblk را در خط فرمان وارد کنید:
lsblk
خروجی موارد زیر را نمایش میدهد:
- Name – نام قطعه بلوکی
- Maj:Min – عدد اصلی که نوع دستگاه را نمایش میدهد. عدد کوچک که تعداد قطعات کنونی از آن نوع را در این فهرست نمایش میدهد. برای مثال، 7:4 نشاندهنده 4 عدد قطعه loop است.
- RM – این که قطعه قابل جدا شدن است یا نه را نشان میدهد. مقدار 0 به معنی نه و 1 به معنی بله است.
- Size – ظرفیت دستگاه را نمایش میدهد.
- RO – این که دستگاه فقط-خواندنی است یا نه را نشان میدهد. مقدار 0 به معنی نه و 1 به معنی بله است.
- Type – نوع دستگاه برای مثال، loop ،dir (دایرکتوری)، دیسک، rom (سیدیرام) و مواردی از این دست را نمایش میدهد.
- Mountpoint – این که فایلسیستم دستگاه مانت شده یا نه را مشخص میکند.
برای این که خروجی خلوتتر شود و قطعات loop حذف شوند، میتوانیم از گزینه e- (به معنی exclude) استفاده کنیم و تعداد نوع دستگاههایی که میخواهیم نادیده گرفته شوند را ذکر کنیم. این دستور موجب میشود که lsblk قطعه لوپ (7) و سیدیرام (11) را نادیده بگیرد.
lsblk -e 7,11
این امر موجب میشود که تنها هارد درایو sda نمایش یابد.
3. دستور df
دستور df گزارشی در مورد ظرفیتهای درایو و فضای استفاده شده و آزاد دیسک ارائه میکند. عبارت df را در خط فرمان وارد کنید و اینتر را بزنید.
df
خروجی موارد زیر را نمایش میدهد:
- Fileystem – نام این فایلسیستم را نمایش میدهد.
- 1K-Blocks – تعداد بلوکهای 1 کیلوبایتی که روی این فایلسیستم حضور دارند.
- Used – تعداد بلوکهای 1 کیلوبایتی که روی این فایلسیستم استفاده شدهاند.
- Available – تعداد بلوکهای 1 کیلوبایتی که روی این فایلسیستم به صورت استفاده نشده است.
- Use% - مقدار فضایی که در این فایلسیستم استفاده شده به صورت درصد بیان میشود.
- File – نام فایلسیستم که در صورت ذکر در خط فرمان بیان میشود.
- Mounted on – نقطه مانت روی فایلسیستم را نمایش میدهد.
برای حذف مدخلهای ناخواسته از خروجی میتوانید از گزینه x- استفاده کنید. این دستور از نمایش مدخلهای دستگاههای loop در خروجی جلوگیری میکند.
df -x squashfs
چنان که میبینید تحلیل خروجی فشرده و مشاهده اطلاعات مهمتر کاملاً آسان است.
4. دستور fdisk
دستور fdisk ابزاری است که برای دستکاری جدول پارتیشن دیسک ارائه شده است؛ اما میتوان از آن برای مشاهده اطلاعات مختلف نیز استفاده کرد. ما میتوانیم از این دستور برای بررسی قطعات موجود روی رایانه استفاده کنیم.
از گزینه l- (به معنی list) برای فهرستبندی جداول پارتیشن استفاده میشود. از آنجا که خروجی دستور ممکن است طولانی باشد، خروجی fdisk را از طریق less به صورت pipe ارائه میکنیم. ضمناً از آنجا که fdisk قابلیت دستکاری جداول پارتیشن دیسک را دارد باید از sudo استفاده کنیم.
sudo fdisk –l
با اسکرول کردن از طریق less میتوانید قطعات سختافزاری را شناسایی کنید. در تصویر زیر مدخل هارد درایو sda را میبینید. این یک هارد درایو فیزیکی با ظرفیت 10 گیگابایت است.
اکنون که یکی از قطعات سختافزاری را شناسایی کردهایم، میتوانیم از fdsik بخواهیم که صرفاً آن آیتم را گزارش کند.
sudo fdisk -l /dev/sda
بدین ترتیب یک خروجی با طول کاملاً کوتاه به دست میآوریم.
5. فایلهای proc/
شِبه فایلهای موجود در مسیر proc/ را میتوان مشاهده کرد تا نوعی اطلاعات در مورد سیستم به دست آورد. فایلی که میخواهیم بررسی کنیم در مسیر proc/mounts/ قرار دارد که اطلاعاتی در رابطه با فایلسیستمهای مانت شده در اختیار ما قرار میدهد. ما از چیزی به جز cat برای مشاهده فایلها استفاده نمیکنیم.
cat /proc/mounts
فهرست فوق دستگاههای خاص dev/ را نمایش میدهد که برای عرضه قطعهها استفاده شده و یک نقطه مانت روی درخت فایلسیستم عرضه میکند.
ما میتوانیم فهرست فوق را با استفاده از grep فیلتر کنیم تا مدخلهایی که dev/sd/ در خود دارند را مشاهده کنیم. بدین ترتیب صرفاً قطعههای فیزیکی نمایش پیدا میکنند.
cat /proc/mounts | grep /dev/sd
بدین ترتیب گزارش بسیار تمیزتری به دست میآید:
میتوانیم با استفاده از grep کمی انحصاریتر عمل کنیم و به دنبال قطعههایی بگردیم که فایلهای دستگاه خاص dev/sd/ و dev/sr/ دارند. بدین ترتیب هارد درایوها و سیدیرامهای روی دستگاه را مشاهده میکنیم:
cat /proc/partitions | grep s[rd]
اکنون دو دستگاه و یک پارتیشن در خروجی ما حضور دارند.
6. دستور lspci
دستور lspci همه قطعههای PCI را در رایانه شما فهرست میکند.
lspci
اطلاعات ارائه شده شامل موارد زیر هستند:
- Slot – اسلاتی که قطعههای PCI در آنها جای گرفتهاند.
- Class - کلاس قطعه مورد نظر.
- Vendor name – نام سازنده قطعه.
- Device name – نام خود قطعه.
- Subsystem – نام سازنده سیستم فرعی (در صورتی که قطعه یک سیستم فرعی داشته باشد)
- Subsystem name – اگر قطعه مورد نظر دارای سیستم فرعی باشد، نام آن را نمایش میدهد.
- Revision number – شماره نسخه قطعه مورد نظر.
- Programming interface - اینترفیس برنامهنویسی در صورتی که قطعه مورد نظر چنین چیزی داشته باشد.
7. دستور lsusb
دستور lsusb همه قطعههایی را که به پورتهای USB رایانه شما متصل هستند و همه دستگاههای با قابلیت USB که داخل رایانه قرار دارند را فهرست میکند.
lsusb
رایانه تست ما مجهز به یک اسکنر کانن بود که به عنوان قطعه شماره 5 به USB اتصال داشت و یک درایو USB اکسترنال نیز به نام دستگاه شماره 4 متصل شده بود. قطعههای 3 و 1 دستگیرههای اینترفیسهای USB داخلی بودند.
شما میتوانید فهرست تفصیلی را با استفاده از گزینه v- به دست آورید و حتی با استفاده از گزینه vv- فهرستی با توضیحات کاملتر مشاهده میکنید.
8. دستور lsdev
دستور lsdev اطلاعاتی در مورد همه قطعات نصبشده روی سیستم نمایش میدهد. این دستور خروجی زیادی تولید میکند و از این رو باید آن را از طریق less عرضه کنیم:
lsdev
قطعات سختافزاری زیادی در خروجی فهرستبندی شدهاند.
9. دستور lshw
دستور lshw قطعات اتصال یافته به رایانه را فهرستبندی میکند. این دستور نیز دارای خروجی زیادی است. روی رایانه تست ما خروجی این دستور 260 خط اطلاعات تولید کرده است. ما آن را نیز از طریق less به صورت pipe عرضه میکنیم.
توجه داشته باشید که در دستور lshw باید از sudo استفاده کنید تا بیشترین نتیجه را به دست آورید. اگر چنین نکنید، این دستور نمیتواند به همه قطعات دسترسی داشته باشد.
sudo lshw | less
در این دستور مدخلی برای سیدیرام با رابط SCSI مشاهده میکنیم. چنان که مشاهده میکنید، اطلاعات ارائه شده برای هر قطعه کاملاً تفصیلی هستند. دستور lshw اغلب اطلاعات خود را از فایلهای مختلف در مسیر proc/ به دست میآورد.
اگر میخواهید خروجی کوتاهتری داشته باشید، میتوانید از گزینه short— استفاده کنید.
10. دستور lsscsi
چنان که اکنون میتوانید تصور کنید، دستور lsscsi همه قطعههای SCSI اتصال یافته به رایانه را نمایش میدهد.
lsscsi
در تصویر زیر قطعههای SCSI متصل به رایانه تست ما را مشاهده میکنید.
11. دستور dmidecode
دستور dmidecode جدولهای اینترفیس مدیریت دسکتاپ را دیکد کرده و اطلاعاتی در رابطه با سختافزار متصل به رایانه و درون رایانه استخراج میکند. DMI برخی اوقات به نام SMBIOS (یعنی سیستم ورودی/خروجی ابتدایی مدیریت سیستم) شناخته میشود گرچه در عمل دو استاندارد متفاوت محسوب میشوند. در این مورد نیز دستور را با استفاده از less عرضه میکنیم.
dmidecode | less
دستور dmidecode میتواند بیش از 40 قطعه سختافزاری مختلف را گزارش دهد.
12. دستور hwinfo
دستور hwinfo تفصیلیترین دستور در میان همه موارد مطرحشده در این مقاله محسوب میشود. در مورد دستورهای دیگر گفتیم که بهتر است خروجی را از طریق less عرضه کنید، اما در این مورد این گزینه دیگر اختیاری نیست. این دستور روی رایانه تست 5850 خط خروجی تولید کرده است. شما میتوانید برای یک شروع ملایمتر از گزینه short-- استفاده کنید.
hwinfo –short
اگر واقعاً میخواهید دقیقترین جزییات سختافزار خود را مشاهده کنید، این دستور را بدون گزینه short-- وارد کنید.
سخن پایانی
در این مقاله دوازده روش برای بررسی قطعات درون رایانه و متصل به آن معرفی کردیم. هر قطعه سختافزاری که علاقهمند باشید روی سیستم خود بررسی کنید، میتوانید با استفاده از یکی از روشهای معرفیشده در این نوشته آن را پیدا کنید.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای لینوکس (Linux)
- مجموعه آموزش مهارتهای کاربردی کامپیوتر (ICDL)
- گنجینه آموزش های لینوکس (Linux)
- لینوکس اوبونتو و هر آنچه برای شروع به کار با آن باید بدانید — راهنمای جامع به زبان ساده
- آموزش ترمینال لینوکس — راهنمای شروع به کار
==