٪85 تخفیف

دانلود کتاب آموزشی پرفورمنس مانیتورینگ و تحلیل عملکرد سرورهای لینوکسی جلد اول

دسته‌بندی: برچسب: تاریخ به روز رسانی: 6 دی 1404 تعداد بازدید: 544 بازدید
ویژگی های محصول: پشتیبانی واتساپ

قیمت اصلی: ۲,۰۰۰,۰۰۰ تومان بود.قیمت فعلی: ۳۰۰,۰۰۰ تومان.

torobpay
هر قسط با ترب‌پی: ۷۵,۰۰۰ تومان
۴ قسط ماهانه. بدون سود، چک و ضامن.

دوره آموزشی Linux Performance Monitoring & Analysis که به‌طور عملی طراحی شده است، می‌تواند نقش بسیار مؤثری در ارتقاء مهارت‌های شما در زمینه بهینه‌سازی و نظارت بر عملکرد سیستم‌های لینوکس داشته باشد.


بخش 1. مقدمه‌ای بر نظارت و تحلیل عملکرد در لینوکس

 

فصل 1. اهمیت نظارت و تحلیل عملکرد در لینوکس

  • چرا نظارت بر عملکرد سیستم ضروری است؟
  • تاثیر نظارت مؤثر بر بهره‌وری سیستم
  • تفاوت بین نظارت کوتاه‌مدت و بلندمدت

فصل 2. آشنایی با مفاهیم پایه نظارت بر عملکرد

  • تعریف Performance Monitoring
  • آشنایی با اصطلاحاتی مانند Load Average، Latency، Bottleneck
  • درک مفاهیم مصرف منابع (CPU، حافظه، دیسک، شبکه)

فصل 3. مروری کلی بر ابزارهای کلیدی لینوکس

  • ابزارهای CLI:
    • htop: نظارت بر پردازش‌ها با رابط گرافیکی در محیط ترمینال
    • uptime: نمایش زمان فعالیت سیستم و Load Average
    • dstat: جمع‌آوری داده‌های منابع سیستم به‌صورت پویا
  • ابزارهای GUI:
    • Cockpit: رابط گرافیکی تحت وب برای مدیریت سیستم
    • Glances: ابزار چند منظوره برای نظارت بر سیستم

فصل 4. ساختار و عملکرد ابزارهای نظارت

  • نحوه کار ابزارهای نظارت بر عملکرد
  • شیوه جمع‌آوری و نمایش داده‌های سیستم
  • مقایسه ابزارهای مختلف از نظر عملکرد و کاربرد

فصل 5. ملاحظات اولیه قبل از شروع نظارت

  • شناسایی نیازهای سیستم و هدف از نظارت
  • درک محیط‌های مختلف (Production vs Development)
  • توجه به منابع مصرفی ابزارهای نظارت

فصل 6. تنظیم محیط برای نظارت

  • بررسی دسترسی‌های کاربر برای اجرای دستورات نظارت
  • نصب و راه‌اندازی ابزارهای ضروری
  • استفاده از اسکریپت‌های پایه برای شروع نظارت

فصل 7. مروری بر تحلیل داده‌ها

  • نحوه تفسیر Load Average
  • تحلیل داده‌های منابع برای شناسایی مشکلات
  • تشخیص گلوگاه‌ها و ارائه راه‌حل‌های اولیه

فصل 8. آمادگی برای عیب‌یابی پیشرفته

  • شناخت محدودیت‌های ابزارهای نظارت
  • آماده‌سازی سیستم برای تحلیل دقیق‌تر در مراحل بعدی
  • ارتباط بین نظارت و بهینه‌سازی

بخش 2. نظارت بر پردازش‌ها

 

فصل 1. مقدمه‌ای بر پردازش‌ها در لینوکس

  • تعریف پردازش (Process) و تفاوت آن با Thread.
  • ساختار پردازش‌ها در لینوکس: Parent و Child processes.
  • اهمیت نظارت بر پردازش‌ها برای بهبود عملکرد سیستم.

فصل 2. ابزارها و دستورات کلیدی برای نظارت بر پردازش‌ها

  • ps: نمایش اطلاعات پردازش‌های فعال.
    • پارامترهای مهم: ps aux, ps -ef, ps -eo pid,ppid,cmd,%mem,%cpu.
  • top: نظارت زنده بر پردازش‌ها.
    • استفاده از کلیدهای میانبر: k (کشتن پردازش)، r (تغییر اولویت)، و z (تغییر رنگ نمایش).
  • htop: نسخه پیشرفته‌تر و گرافیکی‌تر ابزار top.
    • امکانات اضافی: مشاهده درخت پردازش‌ها (Tree View) و فیلتر کردن بر اساس معیارهای خاص.

فصل 3. مشاهده و شناسایی پردازش‌های سنگین

  • بررسی مصرف منابع پردازش‌ها (CPU و RAM).
  • شناسایی پردازش‌هایی که بیشترین استفاده از منابع دارند:
    • top | grep 'PID'
    • استفاده از sort برای مرتب‌سازی مصرف منابع.

فصل 4. مدیریت پردازش‌ها

  • ارسال سیگنال به پردازش‌ها:
    • kill: متوقف کردن پردازش‌ها با استفاده از PID.
    • killall: متوقف کردن تمامی پردازش‌ها با نام خاص.
    • pkill: متوقف کردن پردازش‌ها با تطبیق الگو.
  • تغییر اولویت پردازش‌ها:
    • دستور renice: تغییر nice value یک پردازش در حال اجرا.
    • استفاده از top و htop برای تغییر اولویت به‌صورت زنده.

فصل 5. مشاهده ساختار پردازش‌ها

  • استفاده از pstree:
    • مشاهده ساختار درختی پردازش‌ها.
    • شناسایی ارتباطات بین Parent و Child processes.

فصل 6. مانیتور کردن پردازش‌ها در بازه زمانی

  • استفاده از watch:
    • اجرای دستورات در بازه‌های زمانی مشخص و مشاهده خروجی.
    • مثال: watch -n 1 ps aux.
  • ثبت گزارش‌ها با nohup و cron:
    • مانیتور کردن پردازش‌ها در پس‌زمینه و ذخیره لاگ‌ها.

فصل 7. شناسایی پردازش‌های مشکل‌زا

  • استفاده از lsof:
    • مشاهده فایل‌های باز مرتبط با یک پردازش.
    • شناسایی پردازش‌هایی که از منابع زیاد یا نامناسب استفاده می‌کنند.
  • استفاده از strace:
    • بررسی رفتار سیستم کال‌ها برای یک پردازش خاص.

فصل 8. نظارت بر پردازش‌ها از راه دور

  • نظارت بر پردازش‌ها در سرورهای از راه دور با استفاده از:
    • ssh و اجرای دستورات مانیتورینگ.
    • ابزارهایی مانند Glances برای مشاهده زنده اطلاعات از چندین سرور.

فصل 9. نکات بهینه‌سازی و مدیریت پردازش‌ها

  • شناسایی و توقف پردازش‌های Zombie و Orphan.
  • جلوگیری از استفاده بیش از حد منابع توسط پردازش‌های خاص:
    • استفاده از ابزارهای محدودسازی منابع مانند cgroups.

بخش 3. نظارت بر حافظه

 

فصل 1. معرفی ساختار حافظه در لینوکس

  • مبانی حافظه:
    • حافظه فیزیکی (RAM) و حافظه مجازی.
    • Cache و Buffer.
  • انواع حافظه:
    • Active Memory، Inactive Memory.
    • Swap Memory.

فصل 2. بررسی دستورات پایه نظارت بر حافظه

  • free:
    • نمایش اطلاعات کلی درباره حافظه استفاده‌شده، آزاد، و کش‌شده.
    • بررسی فیلد هایی مانند total، used، free، shared، buff/cache، و available.
  • vmstat:
    • نمایش اطلاعات حافظه، CPU، و I/O.
    • کاربرد: مشاهده رفتار حافظه در لحظه.

فصل 3. تحلیل جزئی‌تر حافظه با ابزارهای پیشرفته

  • smem:
    • نمایش مصرف حافظه توسط فرآیندها به‌صورت دقیق.
    • تفکیک RSS، PSS، و USS (حافظه واقعی و اشتراکی فرآیندها).
  • pmap:
    • بررسی نقشه حافظه فرآیندها.
    • شناسایی محل مصرف حافظه (Stack، Heap، و Shared Libraries).

فصل 4. مدیریت Swap

  • swapoff و swapon:
    • فعال و غیرفعال‌سازی فضای Swap.
  • swapon -s:
    • نمایش اطلاعات مربوط به Swap.
  • مشکلات Swap:
    • زمان‌هایی که مصرف Swap بسیار بالا است.
    • بررسی تأثیر Swap بر عملکرد سیستم.

فصل 5. نظارت بر حافظه با ابزارهای گرافیکی

  • htop:
    • مشاهده حافظه فیزیکی و Swap به‌صورت گرافیکی.
    • شناسایی فرآیندهایی که بیشترین حافظه را مصرف می‌کنند.
  • gnome-system-monitor:
    • ابزار گرافیکی برای بررسی منابع سیستم از جمله حافظه.

فصل 6. شناسایی نشت حافظه (Memory Leak)

  • valgrind:
    • شناسایی و تحلیل Memory Leak در برنامه‌های در حال اجرا.
  • memtester:
    • تست حافظه سیستم برای شناسایی خطاها.

فصل 7. بهینه‌سازی استفاده از حافظه

  • پاک‌سازی حافظه Cache و Buffer:
    • دستور sync; echo 3 > /proc/sys/vm/drop_caches.
  • تنظیم پارامترهای حافظه در لینوکس:
    • بررسی و تغییر مقادیر /proc/sys/vm/swappiness برای مدیریت Swap.

فصل 8. بررسی حافظه با دستورات پیشرفته

  • sar:
    • نمایش آمار تاریخی مصرف حافظه.
    • امکان مقایسه مصرف حافظه در بازه‌های زمانی مختلف.
  • pidstat -r:
    • نمایش مصرف حافظه توسط فرآیندهای خاص.

فصل 9. مشکلات رایج حافظه در لینوکس

  • مشکل Out of Memory (OOM):
    • بررسی فرآیندهایی که باعث OOM می‌شوند.
    • استفاده از دستور dmesg برای شناسایی دلیل OOM.
  • مشکل Thrashing:
    • تحلیل وضعیت Swap و I/O برای شناسایی این مشکل

بخش 4. نظارت بر سیستم فایل

 

فصل 1. مقدمه بر سیستم فایل لینوکس

  • مفهوم سیستم فایل و ساختار آن در لینوکس.
  • نقش سیستم فایل در ذخیره‌سازی داده‌ها.

فصل 2. ابزارهای خط فرمان برای نظارت بر سیستم فایل

  • df: نمایش میزان فضای استفاده‌شده و آزاد دیسک.
    • دستور پایه: df -h برای نمایش فضای دیسک به‌صورت خوانا.
  • du: بررسی فضای استفاده‌شده توسط فایل‌ها و دایرکتوری‌ها.
    • دستور پایه: du -sh /path/to/directory.

فصل 3. نظارت بر نقاط اتصال (Mount Points)

  • بررسی وضعیت نقاط اتصال با دستور mount.
  • نمایش وضعیت نقاط اتصال با ابزار lsblk.

فصل 4. شناسایی مشکلات سیستم فایل

  • خطای پر شدن دیسک: نحوه شناسایی فایل‌ها یا دایرکتوری‌هایی که بیشترین فضا را اشغال می‌کنند.
    • استفاده از دستور: du --max-depth=1 / | sort -hr.
  • بررسی فایل‌های موقتی و حذف آن‌ها با ابزارهایی مانند tmpwatch.

فصل 5. تحلیل سیستم فایل با ابزارهای پیشرفته

  • ncdu: رابط کاربری تعاملی برای نمایش اندازه فایل‌ها.
  • iostat: نظارت بر عملکرد دیسک و سیستم فایل.
    • دستور پایه: iostat -xd.

فصل 6. بررسی فایل‌های باز و قفل‌شده

  • استفاده از دستور lsof برای نمایش فایل‌های باز:
    • مثال: lsof | grep /path/to/directory.
  • بررسی فایل‌های قفل‌شده و نحوه آزادسازی آن‌ها.

فصل 7. بررسی خطاهای سیستم فایل

  • نمایش پیام‌های خطای مرتبط با سیستم فایل در dmesg.
  • بررسی وضعیت سلامت سیستم فایل با دستور fsck.

فصل 8. مدیریت و بهینه‌سازی فضای دیسک

  • فشرده‌سازی فایل‌ها و دایرکتوری‌ها با gzip و tar.
  • حذف فایل‌های قدیمی یا بی‌استفاده:
    • مثال: find /path/to/directory -type f -mtime +30 -delete.

فصل 9. نظارت بر عملکرد I/O سیستم فایل

  • استفاده از ابزارهای:
    • iotop: نمایش پردازش‌هایی که بیشترین استفاده از I/O را دارند.
    • blktrace: تحلیل عمیق فعالیت‌های I/O در دیسک.

فصل 10. تنظیم هشدارها برای مشکلات سیستم فایل

  • استفاده از inotify:
    • مشاهده تغییرات در فایل‌ها و دایرکتوری‌ها در زمان واقعی.
    • مثال: inotifywait -m /path/to/directory.
  • ارسال اعلان‌ها در صورت پر شدن دیسک یا وقوع خطا.

فصل 11. گزارش‌گیری و ثبت گزارش‌ها

  • ایجاد اسکریپت‌های زمان‌بندی‌شده با cron برای اجرای دستورات df و du.
  • ذخیره گزارش‌ها در فایل‌های متنی برای تحلیل بلندمدت.

فصل 12. استفاده از ابزارهای گرافیکی برای نظارت بر سیستم فایل

  • GNOME Disks: بررسی نقاط اتصال و فضای دیسک.
  • KDiskFree: نمایش فضای دیسک در محیط گرافیکی.
[cdb_course_lessons title=”بخش 1. مقدمه‌ای بر نظارت و تحلیل عملکرد در لینوکس”][cdb_course_lesson title=”فصل 1. اهمیت نظارت و تحلیل عملکرد در لینوکس”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”چرا نظارت بر عملکرد سیستم ضروری است؟” subtitle=”توضیحات کامل”]نظارت بر عملکرد سیستم یکی از ارکان اصلی مدیریت و بهینه‌سازی سیستم‌های کامپیوتری، به ویژه در محیط‌های لینوکسی، به شمار می‌رود. در این بخش، به بررسی دلایل اهمیت نظارت بر عملکرد سیستم خواهیم پرداخت و نکات کلیدی در مورد تأثیر آن بر کارایی و بهره‌وری سیستم را بیان خواهیم کرد.

1. شناسایی مشکلات پیش از وقوع بحران

یکی از دلایل اصلی اهمیت نظارت بر عملکرد سیستم، شناسایی مشکلات بالقوه قبل از تبدیل شدن به بحران‌های بزرگ است. بدون نظارت مستمر، مشکلاتی مانند مصرف بالای منابع، خرابی سخت‌افزاری یا کاهش عملکرد به سرعت بروز نمی‌کنند و می‌توانند در نهایت موجب از کار افتادن سیستم شوند. نظارت به مدیر سیستم این امکان را می‌دهد که از وقوع چنین مشکلاتی پیشگیری کند و در صورت لزوم اقداماتی پیشگیرانه انجام دهد.

2. بهینه‌سازی منابع سیستم

بدون نظارت دقیق بر مصرف منابع مانند CPU، حافظه، دیسک و شبکه، مدیریت صحیح منابع امکان‌پذیر نخواهد بود. نظارت دقیق و مستمر به مدیر سیستم کمک می‌کند که مصرف منابع را بهینه کند و از استفاده بی‌رویه یا ناکارآمد منابع جلوگیری نماید. برای مثال، در سرورهایی که برای تعداد زیادی از کاربران خدمات ارائه می‌دهند، نیاز به تخصیص بهینه منابع برای هر فرآیند و برنامه حیاتی است تا هیچ‌یک از منابع بیش از حد مصرف نشوند و سیستم با حداکثر کارایی عمل کند.

3. پیش‌بینی بارهای سنگین و برنامه‌ریزی برای آن‌ها

نظارت بر عملکرد سیستم به ویژه از طریق بررسی Load Average و دیگر معیارهای سیستم، به مدیران سیستم این امکان را می‌دهد که بارهای سنگین را پیش‌بینی کرده و برای مدیریت آن‌ها برنامه‌ریزی کنند. برای مثال، اگر بار سیستم به طور غیرمعمولی بالا برود، نظارت به موقع می‌تواند نشان دهد که یک پردازش خاص منابع زیادی مصرف می‌کند یا تعداد درخواست‌ها به سرور به شدت افزایش یافته است.

4. تشخیص و رفع مشکلات عملکردی

نظارت دقیق بر سیستم می‌تواند مشکلاتی مانند گلوگاه‌ها (Bottlenecks) یا نشت حافظه (Memory Leaks) را شناسایی کرده و در رفع آن‌ها مؤثر باشد. این مشکلات اغلب تنها زمانی که سیستم تحت بار سنگین قرار می‌گیرد، نمایان می‌شوند. بدون ابزارهای نظارتی، این مشکلات ممکن است مدت‌ها پنهان بمانند و موجب کاهش کارایی سیستم شوند.

5. افزایش بهره‌وری و عملکرد سیستم

نظارت بر عملکرد سیستم نه تنها برای شناسایی مشکلات بلکه برای افزایش کارایی سیستم و ارتقاء بهره‌وری آن نیز ضروری است. با تجزیه و تحلیل داده‌های نظارتی، می‌توان عواملی که باعث کاهش عملکرد سیستم می‌شوند را شناسایی کرد و آن‌ها را بهبود بخشید. همچنین، این اطلاعات می‌توانند در بهینه‌سازی پارامترهای سیستم مانند تنظیمات حافظه، اولویت پردازش‌ها، و زمان‌بندی‌ها به کار روند.

6. مدیریت بهینه انرژی و هزینه‌ها

برای سازمان‌ها و مراکز داده، مصرف بهینه انرژی از اهمیت بالایی برخوردار است. با نظارت بر عملکرد سیستم، می‌توان بخش‌های مختلف سیستم را از نظر مصرف انرژی بررسی کرد و بهینه‌سازی‌هایی برای کاهش هزینه‌ها انجام داد. به عنوان مثال، اگر مشخص شود که یک سرویس خاص منابع زیادی را بدون نیاز واقعی مصرف می‌کند، می‌توان آن را بهینه کرد یا به سادگی خاموش نمود.

7. پشتیبانی از استراتژی‌های بهینه‌سازی و بهبود مستمر

نظارت و تحلیل مداوم داده‌های عملکرد سیستم به سازمان‌ها این امکان را می‌دهد که به طور پیوسته فرآیندهای کاری و منابع را بهبود بخشند. این نوع نظارت مستمر همچنین به شناسایی روندها و تغییرات طولانی‌مدت کمک می‌کند که می‌تواند راهنمایی برای تصمیم‌گیری‌های استراتژیک باشد.

8. امنیت و پیشگیری از حملات

یکی دیگر از جنبه‌های مهم نظارت بر عملکرد سیستم، شناسایی رفتارهای مشکوک است که ممکن است نشان‌دهنده یک حمله یا نفوذ به سیستم باشد. برای مثال، مصرف ناگهانی و غیرمعمول منابع توسط یک پردازش می‌تواند نشانه‌ای از فعالیت‌های مخرب باشد. نظارت دقیق و به موقع بر منابع سیستم می‌تواند در شناسایی و جلوگیری از حملات سایبری، مانند حملات DDoS یا استفاده غیرمجاز از منابع، مؤثر باشد.

جمع‌بندی

نظارت بر عملکرد سیستم نه تنها برای حفظ پایداری و کارایی سیستم‌ها ضروری است، بلکه می‌تواند به شناسایی مشکلات بالقوه، بهینه‌سازی مصرف منابع، افزایش امنیت و کاهش هزینه‌ها نیز کمک کند. در نهایت، این امر باعث ارتقاء بهره‌وری سیستم و اطمینان از عملکرد بهینه در بلندمدت می‌شود.

 

 [/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”تاثیر نظارت مؤثر بر بهره‌وری سیستم” subtitle=”توضیحات کامل”]نظارت مؤثر بر عملکرد سیستم‌های لینوکسی تأثیرات مستقیم و غیرمستقیمی بر بهره‌وری سیستم دارد. بهینه‌سازی و تجزیه و تحلیل مداوم داده‌های عملکرد، نه تنها به شناسایی مشکلات کمک می‌کند، بلکه باعث ارتقاء کارایی سیستم و بهره‌وری بالاتر در محیط‌های عملیاتی می‌شود. در این بخش، به بررسی تاثیرات مختلف نظارت مؤثر بر بهره‌وری سیستم پرداخته و نشان خواهیم داد که چگونه نظارت می‌تواند در بهبود عملکرد و کاهش مشکلات تأثیرگذار باشد.

1. شناسایی و رفع مشکلات عملکردی به موقع

نظارت مستمر به مدیران سیستم این امکان را می‌دهد که مشکلات بالقوه مانند مصرف بیش از حد منابع، گلوگاه‌ها (Bottlenecks)، یا نشت حافظه را شناسایی کنند و پیش از آنکه این مشکلات به بحران‌های جدی تبدیل شوند، برای رفع آن‌ها اقدام کنند. رفع مشکلات قبل از اینکه به عملکرد سیستم آسیب بزند، می‌تواند به صورت مستقیم بهره‌وری سیستم را افزایش دهد. به عنوان مثال، شناسایی یک پردازش سنگین که از منابع زیادی استفاده می‌کند و توقف یا بهینه‌سازی آن، موجب بهبود سرعت سیستم می‌شود.

2. بهینه‌سازی استفاده از منابع

یک سیستم بهینه از منابع خود به بهترین شکل استفاده می‌کند. نظارت مؤثر باعث می‌شود که مصرف منابع مانند CPU، حافظه، دیسک و شبکه به درستی مدیریت شود. این بهینه‌سازی باعث کاهش هدررفت منابع و در نتیجه، افزایش کارایی سیستم می‌شود. برای مثال، با تجزیه و تحلیل اطلاعات مصرف حافظه و CPU، می‌توان تشخیص داد که کدام پردازش‌ها منابع زیادی مصرف می‌کنند و با تغییر تنظیمات یا اجرای اسکریپت‌های بهینه‌سازی، مصرف آن‌ها را کاهش داد.

3. پیش‌بینی بارهای سنگین و بهبود پاسخگویی

یکی از مزایای بزرگ نظارت مؤثر، توانایی پیش‌بینی بارهای سنگین است. با تحلیل روند عملکرد سیستم در زمان‌های مختلف، مدیران می‌توانند بارهای سنگین احتمالی را شبیه‌سازی کرده و پیش از وقوع آن‌ها اقداماتی انجام دهند تا سیستم قادر به تحمل فشار بالا باشد. این اقدام می‌تواند شامل تخصیص منابع بیشتر، توزیع بار یا حتی محدود کردن دسترسی به برخی منابع در مواقع بحرانی باشد. این کار باعث می‌شود که سیستم در برابر تغییرات بار غیرمنتظره، مقاوم‌تر باشد و زمان پاسخ‌دهی آن حفظ شود.

4. پایش و بهبود طول عمر سیستم

نظارت مستمر می‌تواند به شناسایی مشکلات سخت‌افزاری و نرم‌افزاری که بر طول عمر سیستم تأثیر می‌گذارند، کمک کند. به عنوان مثال، اگر در حین نظارت، میزان استفاده از فضای دیسک یا مصرف حافظه به طور غیرعادی بالا برود، این ممکن است نشانه‌ای از مشکل سخت‌افزاری باشد که در آینده باعث خرابی سیستم می‌شود. با شناسایی این مسائل پیش از وقوع خرابی، می‌توان اقدامات لازم را برای پیشگیری از آن‌ها انجام داد و عمر مفید سیستم را افزایش داد.

5. افزایش امنیت و جلوگیری از حملات

نظارت مؤثر می‌تواند مشکلات امنیتی را قبل از آنکه به سیستم آسیب برسانند، شناسایی کند. برای مثال، نظارت دقیق بر رفتار پردازش‌ها، می‌تواند فعالیت‌های مشکوک مانند حملات DDoS، استفاده غیرمجاز از منابع یا نصب بدافزارها را شناسایی کند. با شناسایی و واکنش سریع به تهدیدات امنیتی، سیستم می‌تواند به صورت مستمر در برابر حملات محافظت شود و از افت عملکرد یا آسیب به داده‌ها جلوگیری شود. این امنیت بالاتر باعث افزایش اعتماد به سیستم و بهبود بهره‌وری در استفاده از منابع می‌شود.

6. مدیریت مؤثر انرژی و کاهش هزینه‌ها

یکی از مزایای نظارت بر عملکرد سیستم، کاهش هزینه‌های مرتبط با مصرف انرژی است. نظارت دقیق بر استفاده از منابع سیستم (مانند CPU و حافظه) می‌تواند به شناسایی بخش‌هایی کمک کند که منابع زیادی مصرف می‌کنند، حتی اگر به آن‌ها نیازی نباشد. در این صورت، می‌توان از خاموش کردن یا بهینه‌سازی این بخش‌ها برای کاهش مصرف انرژی و در نتیجه، کاهش هزینه‌های عملیاتی استفاده کرد. این بهینه‌سازی مصرف انرژی در نهایت به بهره‌وری سیستم کمک می‌کند.

7. تسهیل فرآیندهای تصمیم‌گیری

نظارت مداوم بر سیستم اطلاعات دقیق و به‌موقع در اختیار مدیران قرار می‌دهد. این اطلاعات می‌تواند به مدیران کمک کند تا تصمیمات بهتری در خصوص نحوه تخصیص منابع، زمان‌بندی پردازش‌ها و بهبود سیستم بگیرند. با داشتن دیدگاه واضح از وضعیت فعلی سیستم و مصرف منابع، مدیران می‌توانند استراتژی‌های بهینه‌سازی را پیاده‌سازی کنند که در نهایت باعث بهبود بهره‌وری و کارایی سیستم می‌شود.

8. پشتیبانی از فرآیندهای بهینه‌سازی مستمر

نظارت مؤثر به سازمان‌ها کمک می‌کند تا فرآیندهای بهینه‌سازی مستمر را به اجرا درآورند. با تجزیه و تحلیل دقیق داده‌ها و روندهای عملکرد، می‌توانند نقاط ضعف را شناسایی کرده و فرآیندهایی را طراحی کنند که به بهبود مستمر عملکرد سیستم منجر شود. این کار باعث می‌شود که سیستم‌ها در طول زمان به طور پیوسته کارایی خود را افزایش دهند.

جمع‌بندی

نظارت مؤثر بر عملکرد سیستم تأثیرات بسیاری بر بهره‌وری سیستم دارد. از شناسایی و رفع مشکلات پیش از بحران، بهینه‌سازی منابع، پیش‌بینی بارهای سنگین، و افزایش امنیت گرفته تا مدیریت انرژی و تسهیل فرآیندهای تصمیم‌گیری، نظارت مستمر و به موقع باعث بهبود عملکرد و بهره‌وری سیستم می‌شود. در نهایت، نظارت مؤثر به سازمان‌ها کمک می‌کند تا به طور پیوسته فرآیندهای خود را بهینه کنند و سیستم‌هایی با کارایی بالاتر و عملکرد بهینه داشته باشند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”تفاوت بین نظارت کوتاه‌مدت و بلندمدت” subtitle=”توضیحات کامل”]نظارت بر عملکرد سیستم‌های لینوکسی به دو صورت کوتاه‌مدت و بلندمدت انجام می‌شود، که هرکدام هدف خاصی دارند و می‌توانند در موقعیت‌های مختلف مورد استفاده قرار گیرند. درک تفاوت‌های این دو نوع نظارت به مدیران سیستم این امکان را می‌دهد که ابزارها و استراتژی‌های مناسبی برای هر شرایط انتخاب کنند. در اینجا به بررسی تفاوت‌های کلیدی بین نظارت کوتاه‌مدت و بلندمدت پرداخته‌ایم.

1. هدف و رویکرد کلی

  • نظارت کوتاه‌مدت: نظارت کوتاه‌مدت معمولاً برای پیگیری وضعیت لحظه‌ای سیستم و شناسایی مشکلات آنی یا نیاز به اقدام فوری طراحی می‌شود. این نوع نظارت بیشتر بر وضعیت فعلی سیستم متمرکز است و به مدیران این امکان را می‌دهد که تغییرات آنی را مشاهده کرده و بلافاصله واکنش نشان دهند.
  • نظارت بلندمدت: در مقابل، نظارت بلندمدت بیشتر بر تحلیل روندهای طولانی‌مدت و شناسایی الگوهای عملکردی متمرکز است. این نوع نظارت برای شناسایی مشکلات عمیق‌تر و اساسی‌تر طراحی شده است که ممکن است در طول زمان ایجاد شوند و نیاز به برنامه‌ریزی و اقدامات پیشگیرانه دارند.

2. میزان داده‌ها و نوع تحلیل

  • نظارت کوتاه‌مدت: در این نوع نظارت، داده‌های جمع‌آوری‌شده معمولاً محدود به وضعیت فعلی سیستم هستند. به عنوان مثال، مصرف لحظه‌ای CPU، حافظه، شبکه، و دیسک در نظر گرفته می‌شود. تجزیه و تحلیل‌های معمولاً به صورت آنی انجام می‌شوند تا در سریع‌ترین زمان ممکن مشکلات شناسایی و حل شوند.
  • نظارت بلندمدت: در نظارت بلندمدت، حجم داده‌ها بسیار بیشتر است و معمولاً شامل تاریخچه‌ای از عملکرد سیستم در طول زمان می‌شود. این داده‌ها برای شناسایی روندها، نقاط ضعف پنهان و بهبودهای مستمر استفاده می‌شوند. تجزیه و تحلیل معمولاً به‌صورت مقایسه‌ای در بازه‌های زمانی مختلف صورت می‌گیرد.

3. ابزارها و تکنیک‌های مورد استفاده

  • نظارت کوتاه‌مدت: در نظارت کوتاه‌مدت، ابزارهای مختلفی مانند top، htop، vmstat، dstat و uptime برای مشاهده وضعیت لحظه‌ای سیستم استفاده می‌شوند. این ابزارها به مدیران سیستم اجازه می‌دهند تا به‌سرعت پردازش‌ها و منابع مصرفی را بررسی کنند و در صورت لزوم تصمیم‌گیری فوری انجام دهند.
  • نظارت بلندمدت: در نظارت بلندمدت، ابزارهایی مانند sar، collectd، Prometheus و Grafana برای جمع‌آوری و ذخیره داده‌ها در طول زمان و تجزیه و تحلیل آن‌ها در بازه‌های طولانی‌مدت استفاده می‌شوند. این ابزارها قادر به ایجاد گراف‌ها و داشبوردهایی هستند که روند تغییرات در طول زمان را نمایش می‌دهند.

4. میزان پیچیدگی

  • نظارت کوتاه‌مدت: نظارت کوتاه‌مدت نسبتاً ساده است و بیشتر به شناسایی مشکلات فوری و استفاده بهینه از منابع در لحظه می‌پردازد. این نوع نظارت معمولاً پیچیدگی کمتری دارد و بیشتر به نیازهای روزمره و عملیاتی پاسخ می‌دهد.
  • نظارت بلندمدت: نظارت بلندمدت پیچیده‌تر است و نیازمند تحلیل عمیق‌تر و بررسی داده‌های تاریخی برای شناسایی الگوهای پنهان و مشکلات طولانی‌مدت است. این نوع نظارت اغلب به صورت سیستماتیک و برنامه‌ریزی شده انجام می‌شود و نیاز به جمع‌آوری و پردازش داده‌های فراوان دارد.

5. زمان و دوره اجرای نظارت

  • نظارت کوتاه‌مدت: این نوع نظارت معمولاً برای مدت زمان کوتاه و در هنگام بروز مشکلات فوری انجام می‌شود. نظارت ممکن است به‌طور لحظه‌ای یا در فواصل زمانی کم (مثلاً هر چند دقیقه یک بار) انجام شود.
  • نظارت بلندمدت: نظارت بلندمدت یک فرآیند مداوم است که ممکن است برای روزها، هفته‌ها یا حتی ماه‌ها ادامه داشته باشد. داده‌های جمع‌آوری‌شده به صورت دوره‌ای و بر اساس نیازهای سازمان تحلیل می‌شوند.

6. نتایج و استفاده از اطلاعات

  • نظارت کوتاه‌مدت: نتایج نظارت کوتاه‌مدت معمولاً به سرعت برای شناسایی و رفع مشکلات آنی به کار گرفته می‌شود. این اطلاعات به مدیران کمک می‌کند تا فوراً تصمیمات عملیاتی مانند پایان دادن به پردازش‌های سنگین، تنظیم مجدد منابع یا رفع اختلالات موقتی را اتخاذ کنند.
  • نظارت بلندمدت: در این نوع نظارت، اطلاعات بیشتر برای برنامه‌ریزی‌های بلندمدت و استراتژیک استفاده می‌شود. به عنوان مثال، از نتایج نظارت بلندمدت می‌توان برای پیش‌بینی نیاز به ارتقاء سخت‌افزار یا شناسایی نقاط ضعف ساختاری استفاده کرد.

جمع‌بندی

نظارت کوتاه‌مدت و بلندمدت دو رویکرد مختلف اما مکمل در مدیریت عملکرد سیستم‌های لینوکسی هستند. نظارت کوتاه‌مدت بیشتر به شناسایی و رفع مشکلات فوری می‌پردازد، در حالی که نظارت بلندمدت برای تجزیه و تحلیل داده‌ها در طول زمان و شناسایی الگوهای عملکردی به کار می‌رود. انتخاب رویکرد مناسب بستگی به نیازهای خاص سیستم و اهداف مدیریتی دارد، اما ترکیب این دو نوع نظارت می‌تواند به بهبود عملکرد و پایداری سیستم کمک شایانی کند.[/cdb_course_lesson][cdb_course_lesson title=”فصل 2. آشنایی با مفاهیم پایه نظارت بر عملکرد”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”تعریف Performance Monitoring” subtitle=”توضیحات کامل”]Performance Monitoring یا نظارت بر عملکرد، به مجموعه‌ای از فرآیندها، ابزارها، و تکنیک‌ها گفته می‌شود که به‌منظور جمع‌آوری، تجزیه و تحلیل، و ارزیابی وضعیت عملکرد سیستم‌ها، برنامه‌ها و منابع مختلف در یک محیط IT طراحی شده‌اند. این فرآیند شامل نظارت بر استفاده از منابع مختلف مانند پردازنده (CPU)، حافظه، دیسک، شبکه و دیگر منابع مرتبط با سیستم می‌شود تا اطمینان حاصل شود که این منابع به‌طور بهینه و بدون بروز مشکلات کار می‌کنند.

نظارت بر عملکرد سیستم به‌طور کلی با هدف شناسایی مشکلات عملکردی، تحلیل مشکلات بالقوه و بهبود کلی عملکرد سیستم انجام می‌شود. این فرآیند می‌تواند به صورت دستی و یا اتوماتیک انجام گیرد و از ابزارهای مختلف نرم‌افزاری برای جمع‌آوری داده‌ها و تجزیه و تحلیل آن‌ها استفاده می‌کند.

عناصر اصلی نظارت بر عملکرد

  1. جمع‌آوری داده‌ها: اولین مرحله در نظارت بر عملکرد، جمع‌آوری داده‌های مربوط به منابع سیستم است. این داده‌ها می‌توانند شامل اطلاعات مربوط به مصرف CPU، حافظه، I/O دیسک، ترافیک شبکه و وضعیت پردازش‌ها باشند.
  2. تجزیه و تحلیل داده‌ها: پس از جمع‌آوری داده‌ها، مرحله تجزیه و تحلیل آغاز می‌شود. در این مرحله، مدیران سیستم تلاش می‌کنند تا روندهای معمولی و غیرعادی را شناسایی کرده و مشکلات بالقوه را تشخیص دهند. این تجزیه و تحلیل می‌تواند شامل بررسی آستانه‌های عملکردی، شناسایی منابع گلوگاه یا موارد مصرف زیاد و شبیه به آن باشد.
  3. گزارش‌دهی و نمایش: در نهایت، داده‌های تجزیه و تحلیل‌شده باید به شکلی قابل فهم به مدیران سیستم یا تیم‌های فنی گزارش داده شوند. ابزارهای گزارش‌دهی و داشبوردهای گرافیکی می‌توانند در این مرحله بسیار مفید باشند تا روند عملکرد در طول زمان نمایش داده شده و مشکلات به‌وضوح نمایان شوند.

اهداف نظارت بر عملکرد

  • شناسایی و حل مشکلات: نظارت به مدیران این امکان را می‌دهد که به سرعت مشکلات عملکردی را شناسایی کرده و اقدامات اصلاحی انجام دهند. این مشکلات می‌توانند شامل مصرف زیاد منابع، کاهش کارایی و یا کندی عملکرد سیستم باشند.
  • بهبود بهره‌وری سیستم: نظارت مداوم به بهینه‌سازی منابع سیستم کمک می‌کند و می‌تواند از مشکلات آینده جلوگیری کرده یا اثرات منفی بر عملکرد سیستم را کاهش دهد. این شامل توزیع بهینه منابع و انجام تنظیمات در راستای افزایش سرعت و کارایی است.
  • برنامه‌ریزی برای ارتقا و پیش‌بینی: داده‌های جمع‌آوری‌شده از نظارت می‌توانند به‌عنوان مبنای برنامه‌ریزی برای ارتقاء سیستم‌ها یا خرید سخت‌افزارهای جدید استفاده شوند. این اطلاعات پیش‌بینی‌کننده به شناسایی نیازهای آینده سیستم کمک می‌کنند.
  • مدیریت منابع در طول زمان: نظارت طولانی‌مدت بر عملکرد سیستم به تحلیل روندهای استفاده از منابع کمک می‌کند و به مدیران امکان می‌دهد تا تصمیمات بهتری برای نگهداری و بهینه‌سازی منابع سیستم اتخاذ کنند.

ابزارهای متداول Performance Monitoring

ابزارهایی که برای نظارت بر عملکرد استفاده می‌شوند، می‌توانند به دو دسته کلی تقسیم شوند:

  1. ابزارهای خط فرمان (CLI): ابزارهایی مانند top، htop، vmstat، iostat، و dstat برای نظارت بر سیستم از طریق ترمینال یا خط فرمان.
  2. ابزارهای گرافیکی (GUI): ابزارهایی مانند Cockpit، Glances و Nagios که برای مشاهده اطلاعات عملکردی به‌صورت گرافیکی طراحی شده‌اند و معمولاً برای نظارت روی چندین سیستم به‌صورت هم‌زمان مناسب هستند.

جمع‌بندی

نظارت بر عملکرد (Performance Monitoring) به عنوان ابزاری حیاتی برای حفظ سلامت و کارایی سیستم‌ها در محیط‌های لینوکسی و IT به‌شمار می‌آید. این فرآیند نه تنها به شناسایی مشکلات موجود کمک می‌کند، بلکه از بروز مشکلات آینده نیز پیشگیری می‌کند و به بهینه‌سازی منابع سیستم و افزایش بهره‌وری کمک شایانی می‌کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”آشنایی با اصطلاحاتی مانند Load Average، Latency، Bottleneck” subtitle=”توضیحات کامل”]در زمینه نظارت بر عملکرد سیستم‌ها، استفاده از اصطلاحات و مفاهیم خاص به مدیران سیستم این امکان را می‌دهد که وضعیت عملکردی سیستم‌ها را دقیق‌تر تحلیل کنند. در این بخش، به بررسی برخی از مهم‌ترین اصطلاحات رایج مانند Load Average، Latency و Bottleneck می‌پردازیم که نقش حیاتی در تحلیل عملکرد سیستم دارند.

Load Average

Load Average به میانگین تعداد پردازش‌هایی اطلاق می‌شود که در حال انتظار برای اجرا یا در حال اجرا در سیستم هستند. این معیار در سیستم‌های لینوکسی معمولاً در قالب سه عدد نمایش داده می‌شود که به ترتیب، بار سیستم در 1 دقیقه، 5 دقیقه و 15 دقیقه گذشته را نشان می‌دهند. این مقادیر می‌توانند به‌طور مستقیم به بهره‌وری سیستم و میزان بار پردازشی آن اشاره کنند.

  • نحوه محاسبه: Load Average به‌طور مداوم به‌وسیله الگوریتمی خاص از زمانی که پردازش‌ها در صف انتظار هستند و یا در حال اجرا می‌باشند، محاسبه می‌شود.
  • مفهوم مقادیر Load Average:
    • اگر Load Average کمتر از تعداد هسته‌های CPU باشد، این یعنی سیستم در وضعیت خوبی از نظر پردازش قرار دارد و بار کمتری روی سیستم است.
    • اگر این مقدار برابر یا بیشتر از تعداد هسته‌های CPU باشد، این نشان‌دهنده فشار بالای سیستم و احتمالاً نیاز به بهینه‌سازی یا ارتقا است.

    به‌عنوان مثال:

    • اگر یک سرور با 4 هسته CPU و Load Average برابر با 2 باشد، این به این معنی است که سیستم به راحتی از پس پردازش‌ها برمی‌آید.
    • اگر Load Average برابر با 6 باشد، این نشان‌دهنده این است که سیستم فشار زیادی را متحمل می‌شود و می‌تواند کند عمل کند.

Latency

Latency به مدت زمانی اطلاق می‌شود که یک درخواست یا عملیات برای رسیدن به مقصد و دریافت پاسخ زمان می‌برد. در سیستم‌های کامپیوتری و شبکه، Latency نقش کلیدی در تعیین سرعت پاسخگویی سیستم‌ها و کیفیت خدمات دارد. این مفهوم می‌تواند به چند دسته مختلف تقسیم شود:

  • Latency در شبکه: زمانی که داده‌ها از مبدا به مقصد منتقل می‌شوند. برای مثال، زمانی که داده‌ها از یک سرور به سرور دیگر منتقل می‌شوند یا زمانی که کاربر درخواست یک وب‌سایت را ارسال می‌کند و سرور جواب می‌دهد.
  • Latency در دیسک: مدت زمانی که یک سیستم نیاز دارد تا از دیسک اطلاعات را بخواند یا روی آن بنویسد.
  • Latency در پردازنده: مدت زمانی که یک پردازش برای انجام یک دستور یا دستورالعمل خاص از پردازنده می‌طلبد.

مقدار پایین‌تر Latency معمولاً نشان‌دهنده عملکرد سریع‌تر سیستم است، به ویژه در مواردی که واکنش فوری یا زمان واقعی (real-time) مورد نیاز است. برای مثال، در سرورهای وب یا در خدمات ابری، Latency پایین می‌تواند تجربه کاربری بهتری فراهم کند.

Bottleneck

Bottleneck به وضعیتی در یک سیستم گفته می‌شود که یک بخش خاص از آن قادر به پردازش تمام داده‌ها و درخواست‌ها به‌طور موثر نیست و باعث ایجاد تاخیر یا محدودیت در عملکرد کلی سیستم می‌شود. این اصطلاح از تصویر یک بطری که در قسمت گردن باریک خود باعث محدود شدن جریان مایع می‌شود، گرفته شده است.

  • علل Bottleneck: Bottleneck‌ها می‌توانند در هر بخش از سیستم رخ دهند. این موارد معمولاً در یکی از این بخش‌ها شایع هستند:
    1. CPU: اگر پردازنده سیستم توانایی انجام پردازش‌های بیشتری را نداشته باشد، عملکرد کلی سیستم کاهش می‌یابد.
    2. Memory (RAM): کمبود حافظه می‌تواند منجر به کند شدن فرآیندها یا استفاده بیش از حد از دیسک به عنوان حافظه مجازی (swap) شود.
    3. Disk I/O: اگر سیستم به سرعت بالای ورودی/خروجی دیسک نیاز داشته باشد اما دیسک قادر به انجام آن نباشد، سرعت سیستم کاهش خواهد یافت.
    4. Network I/O: در شبکه‌های با ترافیک بالا یا پهنای باند محدود، تاخیرها و محدودیت‌ها در انتقال داده می‌تواند باعث Bottleneck شود.
  • شناسایی Bottleneck: شناسایی Bottleneck‌ها نیازمند استفاده از ابزارهای نظارت و تحلیل منابع سیستم است. ابزارهایی مانند top، htop، iostat، و vmstat می‌توانند به شناسایی این نوع مشکلات کمک کنند. بررسی Load Average، مصرف CPU، RAM، Disk I/O و Network I/O می‌تواند نشان‌دهنده مکان‌های مشکل‌زا در سیستم باشد.

جمع‌بندی

مفاهیم Load Average، Latency و Bottleneck از اجزای اساسی تحلیل عملکرد سیستم هستند. این مفاهیم نه‌تنها به مدیران سیستم کمک می‌کنند که وضعیت فعلی سیستم را به‌درستی ارزیابی کنند، بلکه امکان پیش‌بینی مشکلات آینده را نیز فراهم می‌آورند. با درک صحیح این مفاهیم و نظارت مستمر بر آن‌ها، می‌توان عملکرد سیستم را بهبود بخشید و از بروز مشکلات پیشگیرانه جلوگیری کرد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”درک مفاهیم مصرف منابع (CPU، حافظه، دیسک، شبکه)” subtitle=”توضیحات کامل”]یکی از کلیدی‌ترین مفاهیم در نظارت بر عملکرد سیستم، درک نحوه استفاده از منابع مختلف در یک سرور یا سیستم است. منابع سیستم به قسمت‌هایی از سخت‌افزار و نرم‌افزار گفته می‌شود که برای اجرای پردازش‌ها و عملکردهای مختلف به‌کار می‌روند. چهار منبع اصلی که به طور مداوم تحت نظارت قرار می‌گیرند، عبارتند از CPU، حافظه (RAM)، دیسک و شبکه. درک صحیح مصرف این منابع می‌تواند به شناسایی مشکلات عملکردی و بهینه‌سازی سیستم کمک کند.

1. مصرف CPU

CPU (Central Processing Unit) یا واحد پردازش مرکزی، مغز سیستم است که دستورالعمل‌ها را پردازش می‌کند. مصرف بالای CPU می‌تواند نشانه‌ای از بار زیاد سیستم یا وجود یک پردازش ناکارآمد باشد. در سیستم‌های لینوکسی، مصرف CPU معمولاً به صورت درصدی از ظرفیت کل هسته‌های پردازنده نمایش داده می‌شود.

  • نظارت بر مصرف CPU:
    • فرایندهای زمان‌بری: بعضی پردازش‌ها ممکن است منابع زیادی از CPU را مصرف کنند. این امر می‌تواند به کاهش سرعت سیستم و پاسخگویی منجر شود.
    • Over-utilization: مصرف بیش از حد CPU می‌تواند موجب کاهش کارایی سیستم و تاخیر در پردازش درخواست‌ها شود.

    به طور معمول، مصرف زیاد CPU در فرآیندها می‌تواند ناشی از مواردی مانند:

    • اجرای برنامه‌های پیچیده یا اشتباه که به طور مداوم به منابع پردازشی نیاز دارند.
    • نشت حافظه که باعث می‌شود پردازش‌ها همچنان به فعالیت خود ادامه دهند.
  • ابزارهای نظارت: ابزارهایی مانند top، htop، mpstat و pidstat برای نمایش وضعیت مصرف CPU استفاده می‌شوند. این ابزارها به مدیران سیستم این امکان را می‌دهند که پردازش‌های سنگین و پرمصرف را شناسایی کرده و تصمیمات لازم را برای بهینه‌سازی بگیرند.

2. مصرف حافظه (RAM)

حافظه (RAM)، جایی است که سیستم‌عامل و برنامه‌ها داده‌ها را به طور موقت ذخیره می‌کنند تا پردازش سریع‌تری انجام دهند. مصرف زیاد حافظه می‌تواند نشان‌دهنده نشت حافظه، برنامه‌های ناکارآمد یا حتی کمبود منابع در سیستم باشد.

  • نظارت بر مصرف حافظه:
    • کمبود حافظه (Memory Shortage): در صورتی که حافظه RAM به طور کامل پر شود، سیستم شروع به استفاده از فضای Swap می‌کند. این امر می‌تواند منجر به کند شدن سیستم شود.
    • نشت حافظه: زمانی که یک برنامه به طور مداوم حافظه مصرفی خود را آزاد نمی‌کند، نشت حافظه اتفاق می‌افتد که می‌تواند به کاهش کارایی سیستم منجر شود.
  • ابزارهای نظارت: ابزارهایی مانند free، vmstat، smem و pmap اطلاعات دقیق‌تری درباره وضعیت مصرف حافظه ارائه می‌دهند. این ابزارها به مدیران سیستم کمک می‌کنند تا مقدار مصرف شده حافظه، حافظه آزاد و نوع حافظه (مانند Cache و Buffer) را شناسایی کنند.

3. مصرف دیسک

دیسک یا فضای ذخیره‌سازی سیستم برای ذخیره‌سازی دائمی داده‌ها و فایل‌ها استفاده می‌شود. مصرف بالا یا مشکلات در سیستم فایل می‌تواند تأثیر زیادی بر عملکرد سیستم بگذارد. همچنین، دیسک‌هایی با سرعت پایین یا مشکلات سخت‌افزاری می‌توانند در طول زمان عملکرد سیستم را کاهش دهند.

  • نظارت بر مصرف دیسک:
    • Full Disk: پر شدن دیسک می‌تواند منجر به خطاهای نوشتن یا کند شدن فرآیندهای ذخیره‌سازی و بازیابی داده‌ها شود.
    • Disk I/O Bottlenecks: اگر سیستم به طور مداوم نیاز به خواندن و نوشتن داده‌ها داشته باشد، مصرف بالای I/O دیسک می‌تواند سیستم را به Bottleneck تبدیل کند.
    • Fragmentation: در برخی سیستم‌ها، داده‌ها به صورت پراکنده ذخیره می‌شوند که باعث کندی در دسترسی به فایل‌ها می‌شود.
  • ابزارهای نظارت: برای بررسی وضعیت دیسک می‌توان از ابزارهایی مانند df (برای بررسی فضای دیسک) و du (برای بررسی فضای استفاده‌شده توسط فایل‌ها) استفاده کرد. همچنین، ابزارهایی مثل iotop و iostat می‌توانند به نظارت بر عملکرد I/O دیسک کمک کنند.

4. مصرف شبکه

شبکه در هر سیستم به عنوان رابطی برای ارتباط با سایر سیستم‌ها و منابع اینترنتی عمل می‌کند. مصرف بالای منابع شبکه می‌تواند موجب کاهش سرعت بارگذاری صفحات، کندی در انتقال داده‌ها و تأخیر در عملکرد برنامه‌ها شود.

  • نظارت بر مصرف شبکه:
    • Bandwidth Consumption: افزایش مصرف پهنای باند ممکن است ناشی از ترافیک زیاد، حملات DDoS یا مشکلات در زیرساخت‌های شبکه باشد.
    • Network Latency: در صورتی که تاخیر در انتقال داده‌ها زیاد باشد، عملکرد شبکه و در نتیجه عملکرد کلی سیستم دچار اختلال خواهد شد.
  • ابزارهای نظارت: ابزارهایی مانند netstat، iftop و nload می‌توانند به مدیران سیستم کمک کنند تا وضعیت مصرف پهنای باند و داده‌های ورودی/خروجی را تجزیه و تحلیل کنند.

جمع‌بندی

درک مصرف منابع سیستم—شامل CPU، حافظه، دیسک و شبکه—برای نظارت بر عملکرد و شناسایی مشکلات حیاتی است. این چهار منبع، به‌ویژه در سیستم‌های با بار زیاد یا در محیط‌های تولیدی، باید به‌طور مداوم تحت بررسی قرار گیرند تا عملکرد بهینه حفظ شود و مشکلات احتمالی به‌موقع شناسایی و رفع شوند. ابزارهای مختلف لینوکسی می‌توانند به مدیران سیستم کمک کنند تا روند مصرف منابع را تحلیل کرده و بر اساس آن تصمیمات بهینه برای ارتقا و بهبود عملکرد سیستم اتخاذ کنند.[/cdb_course_lesson][cdb_course_lesson title=”فصل 3. مروری کلی بر ابزارهای کلیدی لینوکس”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”ابزارهای CLI برای نظارت بر عملکرد سیستم” subtitle=”توضیحات کامل”]در سیستم‌عامل لینوکس، ابزارهای مختلفی برای نظارت بر عملکرد سیستم وجود دارند که می‌توانند به مدیران سیستم کمک کنند تا منابع مختلف مانند CPU، حافظه، دیسک و شبکه را به‌طور مؤثر مدیریت کنند. در این بخش، سه ابزار معروف و پرکاربرد htop، uptime و dstat معرفی خواهند شد. این ابزارها به شما این امکان را می‌دهند که به‌صورت زنده وضعیت سیستم را بررسی کرده و مشکلات بالقوه را شناسایی کنید.

1. htop: نظارت بر پردازش‌ها با رابط گرافیکی در محیط ترمینال

htop یکی از ابزارهای محبوب برای نظارت بر پردازش‌های سیستم به صورت زنده و تعاملی است. این ابزار به‌طور خاص برای بررسی مصرف منابع (CPU، حافظه، swap) و نمایش اطلاعات پردازش‌ها در قالبی گرافیکی طراحی شده است که از نظر بصری جذاب‌تر از ابزارهای مشابه مانند top به نظر می‌رسد.

  • ویژگی‌های کلیدی htop:
    • رابط گرافیکی: بر خلاف ابزارهای مشابه که خروجی متنی ساده دارند، htop اطلاعات را به‌صورت رنگی و در قالب جداول و گراف‌ها نمایش می‌دهد که خوانایی آن را بالا می‌برد.
    • مشاهده درخت پردازش‌ها: این ابزار قابلیت نمایش درختی پردازش‌ها (Tree View) را دارد که به شما امکان می‌دهد ارتباط بین پردازش‌ها و پردازش‌های پدر و فرزند را مشاهده کنید.
    • تعامل مستقیم: شما می‌توانید پردازش‌ها را به‌راحتی متوقف، اولویت آنها را تغییر دهید یا آنها را کُش کنید (kill) از طریق رابط کاربری آن انجام دهید.
    • نمایش مصرف منابع: اطلاعات دقیق در مورد مصرف منابع سیستم (مانند درصد استفاده از CPU، حافظه و swap) برای هر پردازش به‌طور جداگانه ارائه می‌شود.
    • نصب و استفاده از htop: برای نصب htop در بیشتر توزیع‌های لینوکس می‌توانید از دستور زیر استفاده کنید:
      sudo apt install htop  # برای سیستم‌های مبتنی بر Debian
      sudo yum install htop  # برای سیستم‌های مبتنی بر RedHat
      

      پس از نصب، با اجرای دستور htop در ترمینال می‌توانید به صورت زنده و تعاملی وضعیت پردازش‌ها و منابع سیستم را مشاهده کنید.

2. uptime: نمایش زمان فعالیت سیستم و Load Average

ابزار uptime یک ابزار ساده و سریع است که اطلاعاتی مانند زمان فعالیت سیستم (uptime)، تعداد کاربران وارد شده و load average را نمایش می‌دهد. این اطلاعات به شما کمک می‌کنند تا وضعیت کلی سیستم و میزان بار فعلی آن را درک کنید.

  • ویژگی‌های کلیدی uptime:
    • زمان فعالیت سیستم (Uptime): مدت زمانی که سیستم بدون خاموش شدن یا راه‌اندازی مجدد در حال کار است را نشان می‌دهد.
    • Load Average: این مقدار نشان‌دهنده میانگین بار پردازشی سیستم در سه بازه زمانی مختلف (1 دقیقه، 5 دقیقه و 15 دقیقه) است. این مقدار به شما می‌گوید که سیستم چه میزان بار پردازشی را در طول زمان تحمل کرده است. اگر مقدار Load Average بیشتر از تعداد هسته‌های پردازنده باشد، نشان‌دهنده بار زیاد سیستم است.
    • تعداد کاربران: تعداد کاربران فعال در سیستم را به نمایش می‌گذارد.
    • نصب و استفاده از uptime: ابزار uptime معمولاً به‌طور پیش‌فرض در اکثر توزیع‌های لینوکس نصب است و تنها با وارد کردن دستور زیر در ترمینال قابل استفاده است:
      uptime
      

      نمونه خروجی:

      14:30:45 up 10 days,  3:14,  3 users,  load average: 0.14, 0.23, 0.18
      

      در این مثال، سیستم 10 روز است که به طور مداوم در حال اجرا است و میانگین بار سیستم در بازه‌های 1 دقیقه، 5 دقیقه و 15 دقیقه به ترتیب 0.14، 0.23 و 0.18 است.

3. dstat: جمع‌آوری داده‌های منابع سیستم به‌صورت پویا

dstat یک ابزار قدرتمند و انعطاف‌پذیر است که برای جمع‌آوری داده‌های منابع سیستم به‌صورت پویا و در زمان واقعی استفاده می‌شود. این ابزار امکان نمایش جامع وضعیت سیستم در بخش‌های مختلف مانند CPU، حافظه، دیسک، شبکه و I/O را فراهم می‌کند.

  • ویژگی‌های کلیدی dstat:
    • جمع‌آوری پویا داده‌ها: این ابزار می‌تواند به‌صورت مداوم داده‌ها را جمع‌آوری کند و نمایش دهد تا شما بتوانید تغییرات لحظه‌ای منابع سیستم را مشاهده کنید.
    • انعطاف‌پذیری بالا: شما می‌توانید با استفاده از انواع مختلف پارامترها و سوئیچ‌ها، داده‌های خاصی را نمایش دهید و از آن برای تحلیل دقیق‌تر منابع سیستم استفاده کنید.
    • مقایسه منابع سیستم: از dstat می‌توان برای مقایسه مصرف منابع مختلف سیستم در کنار یکدیگر استفاده کرد.
    • تجزیه و تحلیل عملکرد: این ابزار به شما کمک می‌کند که عملکرد سیستم در برابر بارهای مختلف را بررسی کنید و به راحتی مشکلات احتمالی مانند مصرف زیاد منابع را شناسایی کنید.
    • نصب و استفاده از dstat: برای نصب dstat در سیستم‌های مبتنی بر Debian:
      sudo apt install dstat
      

      سپس برای نمایش وضعیت CPU، حافظه، دیسک و شبکه به‌صورت همزمان، می‌توانید دستور زیر را وارد کنید:

      dstat
      

      خروجی مثال:

      CPU    |   disk  |   net  |  system
      usage  | read   | write   | recv  send
      30%    |  1MB   |  2MB    | 5KB/s  10KB/s
      

جمع‌بندی

ابزارهای htop، uptime و dstat هرکدام ویژگی‌ها و کاربردهای خاص خود را دارند. htop برای نظارت بر پردازش‌ها و مصرف منابع با رابط گرافیکی مفید است، uptime اطلاعات پایه‌ای مانند زمان فعالیت سیستم و load average را فراهم می‌کند، و dstat یک ابزار جامع برای جمع‌آوری و تحلیل داده‌های سیستم به‌صورت پویا است. این ابزارها در کنار هم می‌توانند به شما کمک کنند تا عملکرد سیستم را به‌دقت نظارت کرده و مشکلات بالقوه را شناسایی و حل کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”ابزارهای GUI برای نظارت بر عملکرد سیستم” subtitle=”توضیحات کامل”]ابزارهای رابط گرافیکی (GUI) به‌ویژه برای کاربران یا مدیران سیستمی که ترجیح می‌دهند از محیط‌های گرافیکی به جای ترمینال استفاده کنند، بسیار مفید هستند. این ابزارها اطلاعات مربوط به منابع سیستم را در قالبی بصری و ساده برای تجزیه و تحلیل نمایش می‌دهند. در این بخش، دو ابزار معروف Cockpit و Glances معرفی خواهند شد که هرکدام ویژگی‌های منحصر به فرد خود را دارند و به راحتی به شما کمک می‌کنند تا عملکرد سیستم را مدیریت کنید.

1. Cockpit: رابط گرافیکی تحت وب برای مدیریت سیستم

Cockpit یک ابزار مدیریتی مبتنی بر وب است که به مدیران سیستم این امکان را می‌دهد تا عملکرد سیستم‌های لینوکس خود را به‌راحتی از طریق مرورگر وب نظارت کنند. این ابزار به‌طور خاص برای کاربران مبتدی و حرفه‌ای طراحی شده و می‌تواند روی چندین سرور به‌طور همزمان نظارت داشته باشد.

  • ویژگی‌های کلیدی Cockpit:
    • رابط وب کاربرپسند: Cockpit از طریق مرورگر وب قابل دسترسی است و به شما این امکان را می‌دهد که به راحتی و بدون نیاز به نصب نرم‌افزار اضافی، وضعیت سیستم را بررسی کنید.
    • مدیریت چندین سرور: شما می‌توانید چندین سرور لینوکس را از یک پنل مدیریتی واحد کنترل و نظارت کنید، که برای محیط‌های بزرگ و پیکربندی‌های سروری مفید است.
    • اطلاعات و گزارش‌های جامع: Cockpit اطلاعات گسترده‌ای در مورد وضعیت سیستم، پردازش‌ها، حافظه، دیسک، شبکه، و وضعیت سرویس‌ها نمایش می‌دهد. همچنین امکان مشاهده گزارش‌های سیستم و تجزیه و تحلیل فایل‌های لاگ را فراهم می‌آورد.
    • مدیریت و کنترل سرویس‌ها: شما می‌توانید سرویس‌ها را شروع، متوقف یا مدیریت کنید و حتی برای نظارت بر وضعیت آنها از ویژگی‌هایی مانند Restart یا Status بهره ببرید.
    • پشتیبانی از Docker و شبکه‌های مجازی: Cockpit به‌طور پیش‌فرض از ابزارهای مدیریت کانتینر Docker و نظارت بر شبکه‌های مجازی پشتیبانی می‌کند.
    • نصب و استفاده از Cockpit: برای نصب Cockpit در سیستم‌های مبتنی بر Debian:
      sudo apt install cockpit
      

      و سپس با استفاده از دستور زیر سرویس را فعال کنید:

      sudo systemctl start cockpit
      sudo systemctl enable cockpit
      

      بعد از نصب و راه‌اندازی، برای دسترسی به Cockpit کافی است وارد مرورگر وب شوید و آدرس زیر را وارد کنید:

      https://<IP-ADDRESS>:9090
      

      که در آن آدرس IP سرور شما است. سپس می‌توانید وارد رابط کاربری شوید و به‌راحتی وضعیت سیستم را مدیریت کنید.

2. Glances: ابزار چند منظوره برای نظارت بر سیستم

Glances یک ابزار نظارتی چندمنظوره است که به‌صورت گرافیکی در محیط ترمینال و تحت وب قابل استفاده است. این ابزار با هدف نمایش سریع و مؤثر اطلاعات حیاتی سیستم از جمله مصرف CPU، حافظه، دیسک و شبکه طراحی شده است. Glances یکی از ابزارهای محبوب در دنیای لینوکس است که به دلیل انعطاف‌پذیری و سهولت استفاده، مورد توجه بسیاری از مدیران سیستم قرار گرفته است.

  • ویژگی‌های کلیدی Glances:
    • رابط گرافیکی تحت ترمینال: Glances به صورت گرافیکی و رنگی در ترمینال نمایش داده می‌شود و از آنجایی که فضای کمی را اشغال می‌کند، می‌تواند برای نظارت زنده بر سیستم بسیار مفید باشد.
    • چندمنظوره بودن: این ابزار علاوه بر نظارت بر مصرف CPU، حافظه، دیسک و شبکه، اطلاعات دیگری مانند وضعیت پروسه‌ها، Load Average، دما و مصرف انرژی را نیز نمایش می‌دهد.
    • پشتیبانی از رابط وب: در کنار رابط ترمینالی، Glances همچنین از یک رابط وب پشتیبانی می‌کند که می‌توانید به‌وسیله مرورگر وب به‌صورت زنده وضعیت سیستم خود را مشاهده کنید.
    • تجزیه و تحلیل دقیق: برای هر یک از بخش‌های مختلف سیستم، Glances نمودارها و گراف‌هایی را نمایش می‌دهد که تجزیه و تحلیل مصرف منابع را آسان می‌کند.
    • نظارت از راه دور: شما می‌توانید از Glances برای نظارت بر سیستم‌های از راه دور استفاده کنید و این ابزار از ویژگی‌هایی مانند SSH برای دسترسی به اطلاعات سیستم‌های دیگر پشتیبانی می‌کند.
    • نصب و استفاده از Glances: برای نصب Glances روی سیستم‌های مبتنی بر Debian:
      sudo apt install glances
      

      برای شروع نظارت بر سیستم، کافی است دستور زیر را در ترمینال وارد کنید:

      glances
      

      برای استفاده از رابط وب، می‌توانید دستور زیر را برای راه‌اندازی آن وارد کنید:

      glances -w
      

      سپس وارد مرورگر وب شوید و آدرس زیر را وارد کنید:

      http://<IP-ADDRESS>:61208
      

      که در آن آدرس IP سرور شما است.

جمع‌بندی

ابزارهای Cockpit و Glances هرکدام ویژگی‌ها و کاربردهای خاص خود را دارند. Cockpit برای مدیریت و نظارت بر سیستم‌ها از طریق رابط وب مناسب است و امکان کنترل چندین سرور را به‌طور همزمان فراهم می‌آورد. در حالی که Glances یک ابزار سریع و چندمنظوره است که برای نظارت سریع و دقیق بر منابع سیستم مناسب است و قابلیت استفاده از رابط وب و ترمینال را نیز دارد. استفاده از این ابزارها می‌تواند به شما کمک کند تا عملکرد سیستم‌های لینوکسی خود را بهتر مدیریت کرده و مشکلات را قبل از وقوع شناسایی کنید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 4. ساختار و عملکرد ابزارهای نظارت”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”نحوه کار ابزارهای نظارت بر عملکرد” subtitle=”توضیحات کامل”]ابزارهای نظارت بر عملکرد در سیستم‌های لینوکس برای جمع‌آوری، تجزیه و تحلیل و نمایش اطلاعات مرتبط با منابع سیستم مانند CPU، حافظه، دیسک و شبکه طراحی شده‌اند. این ابزارها به مدیران سیستم این امکان را می‌دهند تا وضعیت لحظه‌ای و تاریخچه‌ای سیستم را نظارت کنند، مشکلات را شناسایی کنند و بهینه‌سازی‌های لازم را انجام دهند. نحوه عملکرد این ابزارها به‌طور کلی شامل چندین مرحله اصلی است که در ادامه به آن‌ها پرداخته می‌شود:

1. جمع‌آوری داده‌ها

ابزارهای نظارت بر عملکرد ابتدا باید داده‌هایی را از سیستم جمع‌آوری کنند. این داده‌ها می‌توانند از منابع مختلفی مانند پروسه‌ها، حافظه، دیسک، شبکه و سایر اجزای سیستم استخراج شوند.

  • داده‌های مربوط به CPU: شامل درصد استفاده از پردازنده، تعداد هسته‌ها، زمان مصرفی توسط پردازش‌ها و فرآیندهای سیستم.
  • داده‌های حافظه: شامل مصرف RAM و swap، اندازه cache و buffer و میزان حافظه آزاد و استفاده‌شده.
  • داده‌های دیسک: اطلاعات مربوط به فضای دیسک، استفاده از دیسک، I/O و سرعت خواندن و نوشتن.
  • داده‌های شبکه: شامل اطلاعاتی از قبیل سرعت ارسال و دریافت داده‌ها، تعداد اتصال‌ها و وضعیت شبکه.

این داده‌ها معمولاً از طریق ابزارهای سیستمی و فایل‌های سیستم‌عاملی مانند /proc و /sys جمع‌آوری می‌شوند. همچنین ابزارهای مانیتورینگ می‌توانند از کتابخانه‌ها و APIهای مختلف برای دسترسی به این اطلاعات استفاده کنند.

2. پردازش و تجزیه و تحلیل داده‌ها

بعد از جمع‌آوری داده‌ها، ابزارهای نظارت بر عملکرد آن‌ها را تجزیه و تحلیل می‌کنند. این مرحله به چند روش مختلف انجام می‌شود:

  • آنالیز همزمانی (Real-time Analysis): در این روش، ابزارها به‌طور پیوسته و لحظه‌ای داده‌ها را بررسی می‌کنند تا روند مصرف منابع را شناسایی کنند. ابزارهایی مانند htop و Glances از این روش استفاده می‌کنند و به مدیران سیستم این امکان را می‌دهند که وضعیت سیستم را در زمان واقعی مشاهده کنند.
  • آنالیز تاریخی (Historical Analysis): برخی از ابزارها مثل sar و dstat داده‌های جمع‌آوری‌شده را برای تحلیل‌های تاریخی ذخیره می‌کنند. این داده‌ها می‌توانند برای شناسایی روندهای طولانی‌مدت مصرف منابع و مقایسه وضعیت سیستم در بازه‌های زمانی مختلف استفاده شوند.
  • تشخیص مشکلات (Problem Diagnosis): ابزارهای نظارت می‌توانند از تکنیک‌هایی برای شناسایی مشکلات سیستم استفاده کنند. به‌عنوان مثال، وقتی مصرف CPU یا حافظه بیش از حد می‌شود، ابزارها می‌توانند با شبیه‌سازی رفتار سیستم و ارزیابی استفاده از منابع، گلوگاه‌ها و مشکلات را شناسایی کنند.

3. نمایش داده‌ها

بعد از تجزیه و تحلیل داده‌ها، این اطلاعات به شکل‌های مختلفی به کاربر ارائه می‌شود. بسته به نوع ابزار و ترجیحات کاربر، نمایش داده‌ها می‌تواند به‌صورت متنی، گرافیکی یا تحت وب باشد. این نمایش‌ها می‌توانند به شکل‌های مختلفی ارائه شوند:

  • نمایش متنی در ترمینال: ابزارهایی مانند top، htop و dstat اطلاعات را به‌صورت متنی و در محیط ترمینال نمایش می‌دهند. این نمایش‌ها شامل لیست پردازش‌ها، مصرف منابع، زمان‌های CPU و وضعیت سیستم می‌شوند.
  • گراف‌ها و نمودارهای گرافیکی: برخی ابزارها مانند Cockpit و Glances از نمودارهای گرافیکی برای نمایش مصرف منابع استفاده می‌کنند. این گراف‌ها به‌ویژه برای شناسایی سریع مشکلات سیستم مفید هستند.
  • رابط وب: ابزارهای مانند Cockpit و Glances از رابط وب برای نمایش داده‌ها استفاده می‌کنند که به شما این امکان را می‌دهد تا از هر جایی به سیستم خود دسترسی پیدا کنید و آن را نظارت کنید.

4. اعلان‌ها و هشدارها

بسیاری از ابزارهای نظارت بر عملکرد امکان پیکربندی هشدارها و اعلان‌ها را فراهم می‌کنند. هنگامی که مصرف منابع به آستانه‌های معین می‌رسد، ابزارها می‌توانند هشدارهایی به مدیر سیستم ارسال کنند. این اعلان‌ها می‌توانند به‌صورت پیام‌های متنی در ترمینال، ایمیل یا حتی پیامک باشند. این ویژگی به مدیران سیستم کمک می‌کند تا مشکلات را سریع‌تر شناسایی کرده و اقدامات لازم را انجام دهند.

5. مدیریت و بهینه‌سازی منابع

بسیاری از ابزارهای نظارت، علاوه بر جمع‌آوری و نمایش داده‌ها، امکاناتی برای مدیریت و بهینه‌سازی عملکرد سیستم دارند. این ابزارها به مدیران سیستم این امکان را می‌دهند که عملیات مختلفی مانند تغییر اولویت پردازش‌ها، محدود کردن مصرف منابع و شبیه‌سازی تغییرات را انجام دهند.

  • تغییر اولویت پردازش‌ها: ابزارهایی مانند nice و renice به مدیران سیستم اجازه می‌دهند تا اولویت پردازش‌ها را تغییر دهند و به این ترتیب منابع سیستم به‌طور بهینه‌تری تخصیص داده شوند.
  • محدود کردن منابع: ابزارهایی مانند cgroups و Docker این امکان را فراهم می‌کنند که مصرف منابع سیستم را محدود کرده و منابع را به‌طور خاص برای هر پردازش یا کانتینر تخصیص دهند.

6. پشتیبانی از اسکریپت‌نویسی و خودکارسازی

ابزارهای نظارت به‌طور معمول از اسکریپت‌نویسی و خودکارسازی پشتیبانی می‌کنند. شما می‌توانید اسکریپت‌هایی برای جمع‌آوری داده‌ها، تحلیل وضعیت سیستم و ارسال گزارش‌ها ایجاد کنید. ابزارهایی مانند cron و at در لینوکس این امکان را فراهم می‌کنند که دستورات نظارت به‌طور خودکار در بازه‌های زمانی مشخص اجرا شوند.

جمع‌بندی

ابزارهای نظارت بر عملکرد در سیستم‌های لینوکس با جمع‌آوری داده‌ها از منابع مختلف سیستم، تجزیه و تحلیل و نمایش آن‌ها به‌صورت متنی، گرافیکی یا تحت وب، به مدیران سیستم کمک می‌کنند تا وضعیت سیستم را به‌طور دقیق و به‌موقع رصد کنند. این ابزارها نه‌تنها برای شناسایی مشکلات و گلوگاه‌های سیستم مفید هستند، بلکه به‌وسیله هشدارها و امکانات مدیریت منابع، به بهینه‌سازی عملکرد سیستم نیز کمک می‌کنند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”شیوه جمع‌آوری و نمایش داده‌های سیستم” subtitle=”توضیحات کامل”]ابزارهای نظارت بر عملکرد سیستم‌های لینوکس برای جمع‌آوری، تجزیه و تحلیل و نمایش داده‌های مختلف سیستم از جمله استفاده از CPU، حافظه، دیسک و شبکه به کار می‌روند. فرآیند جمع‌آوری و نمایش داده‌ها به دو مرحله کلی تقسیم می‌شود: ابتدا داده‌ها جمع‌آوری می‌شوند و سپس به کاربر به روشی قابل‌فهم نمایش داده می‌شوند. در این بخش به تفصیل توضیح داده خواهد شد که چگونه این داده‌ها جمع‌آوری و نمایش داده می‌شوند.

1. جمع‌آوری داده‌ها

ابزارهای نظارتی در لینوکس برای جمع‌آوری داده‌ها از منابع مختلف سیستم از چندین روش استفاده می‌کنند. مهم‌ترین منابعی که این ابزارها از آن‌ها داده جمع‌آوری می‌کنند عبارتند از:

  • CPU: داده‌هایی مانند درصد استفاده از پردازنده، مدت‌زمان مصرف‌شده توسط پردازش‌ها، تعداد هسته‌های CPU و وضعیت پردازش‌ها.
  • حافظه (RAM): مصرف حافظه فیزیکی و swap، اندازه cache و buffer و وضعیت استفاده و آزاد بودن حافظه.
  • دیسک: فضای دیسک، استفاده از I/O، سرعت خواندن و نوشتن و وضعیت عملکرد دیسک.
  • شبکه: اطلاعاتی مانند نرخ ارسال و دریافت داده‌ها، تعداد اتصال‌ها و وضعیت شبکه.

برای جمع‌آوری این داده‌ها، ابزارهای نظارتی از روش‌های مختلف استفاده می‌کنند:

  • خواندن فایل‌های سیستم‌عاملی: سیستم‌های لینوکسی اطلاعات زیادی را در فایل‌هایی مانند /proc و /sys ذخیره می‌کنند که شامل اطلاعات دقیق در مورد CPU، حافظه، دیسک و دیگر اجزای سیستم است.به عنوان مثال:
    • فایل /proc/cpuinfo اطلاعات مربوط به CPU را در اختیار می‌گذارد.
    • فایل /proc/meminfo اطلاعات مربوط به مصرف حافظه را ارائه می‌دهد.
    • فایل /proc/diskstats آمار مربوط به دیسک‌ها و I/O را نشان می‌دهد.
  • کتابخانه‌ها و APIهای سیستم‌عاملی: ابزارهای نظارت می‌توانند از APIهای مختلف سیستم‌عاملی یا کتابخانه‌ها مانند libproc و libstat برای دریافت داده‌ها استفاده کنند.
  • دستورات سیستمی و ابزارهای CLI: ابزارهای استاندارد لینوکس مانند top، ps، vmstat و iostat به‌طور مستقیم از داخل سیستم داده‌ها را جمع‌آوری می‌کنند. این دستورات مستقیماً اطلاعات را از هسته لینوکس دریافت کرده و به کاربر نمایش می‌دهند.

2. پردازش داده‌ها

بعد از جمع‌آوری داده‌ها، اطلاعات معمولاً توسط ابزارهای نظارتی تجزیه و تحلیل می‌شوند. این ابزارها می‌توانند از روش‌های مختلف برای پردازش داده‌ها استفاده کنند:

  • پردازش همزمان (Real-Time Processing): در این حالت، ابزارها داده‌ها را به‌صورت پیوسته و در زمان واقعی تجزیه و تحلیل می‌کنند. ابزارهایی مانند htop و Glances برای نمایش وضعیت سیستم به‌صورت زنده از این روش استفاده می‌کنند. در این روش داده‌ها در زمان واقعی پردازش شده و به کاربر نمایش داده می‌شوند.
  • پردازش دوره‌ای (Batch Processing): در برخی موارد، داده‌ها در بازه‌های زمانی خاص پردازش و تحلیل می‌شوند. ابزارهایی مانند sar و dstat معمولاً برای جمع‌آوری داده‌ها در بازه‌های زمانی مشخص و ذخیره آن‌ها برای تحلیل‌های بعدی استفاده می‌شوند.
  • تحلیل پیشرفته (Advanced Analysis): برخی ابزارها برای تجزیه و تحلیل پیشرفته داده‌ها از الگوریتم‌های پیچیده‌تر استفاده می‌کنند. به‌عنوان‌مثال، ابزارهای تحلیل I/O مانند blktrace می‌توانند رفتار سیستم فایل و دیسک را به‌طور دقیق‌تر بررسی کنند.

3. نمایش داده‌ها

پس از جمع‌آوری و پردازش داده‌ها، نوبت به نمایش آن‌ها به کاربر می‌رسد. بسته به نوع ابزار و نیاز کاربر، داده‌ها می‌توانند به اشکال مختلفی نمایش داده شوند. ابزارهای نظارتی می‌توانند از روش‌های مختلف نمایش استفاده کنند:

  • نمایش متنی: در بسیاری از ابزارهای نظارتی در لینوکس مانند top، htop و dstat، داده‌ها به‌صورت متنی در ترمینال نمایش داده می‌شوند. این نمایش‌ها شامل جزئیاتی مانند میزان استفاده از CPU، حافظه، فضای دیسک، و مصرف منابع هر پردازش است. این نوع نمایش برای نظارت سریع و دقیق به‌ویژه در سیستم‌های سروری مفید است.
  • نمودارها و گراف‌ها: برخی ابزارها مانند Cockpit و Glances از نمودارها و گراف‌های گرافیکی برای نمایش داده‌ها استفاده می‌کنند. این نمایش‌ها می‌توانند روند مصرف منابع را به‌صورت تصویری نمایش دهند و به‌راحتی به مدیران سیستم این امکان را می‌دهند تا مشکلات را شناسایی کنند.
    • مثال: در گراف‌های Cockpit می‌توانید نمودارهای مصرف CPU، حافظه، دیسک و شبکه را مشاهده کنید. این ابزار به‌ویژه برای مشاهده و مدیریت سیستم‌های از راه دور مناسب است.
  • رابط وب: ابزارهای نظارتی مانند Cockpit برای نمایش داده‌ها از رابط‌های وب استفاده می‌کنند. این رابط‌ها این امکان را می‌دهند که مدیر سیستم به‌راحتی از هر مکانی به سیستم خود دسترسی پیدا کند و وضعیت منابع را نظارت کند. این نوع نمایش معمولاً برای مدیریت سیستم‌های بزرگ یا سرورهای از راه دور کاربرد دارد.
  • گزارش‌های متنی یا JSON: برخی ابزارهای پیشرفته‌تر مانند sar و dstat می‌توانند گزارش‌هایی از وضعیت سیستم در قالب فایل‌های متنی یا JSON ایجاد کنند. این گزارش‌ها می‌توانند برای تحلیل‌های بلندمدت و یا ذخیره‌سازی در یک پایگاه داده استفاده شوند.

4. اعلان‌ها و هشدارها

ابزارهای نظارتی می‌توانند از ویژگی‌های اعلان و هشدار استفاده کنند تا به مدیر سیستم در صورت رسیدن به آستانه‌های خاص منابع اطلاع دهند. این هشدارها می‌توانند به‌صورت پیام‌های متنی در ترمینال، ایمیل یا حتی پیامک ارسال شوند.

  • پیکربندی هشدارها: ابزارهایی مانند Nagios یا Zabbix از امکان پیکربندی هشدارها برای آستانه‌های مصرف منابع مانند مصرف بیش از حد CPU یا حافظه استفاده می‌کنند. این هشدارها به‌صورت خودکار به مدیر سیستم ارسال می‌شوند تا سریعاً واکنش نشان دهد.

جمع‌بندی

ابزارهای نظارتی در لینوکس از چندین روش برای جمع‌آوری داده‌ها استفاده می‌کنند، از جمله خواندن فایل‌های سیستم‌عاملی، استفاده از APIها و دستورات سیستمی. پس از جمع‌آوری داده‌ها، این ابزارها آن‌ها را پردازش کرده و به‌صورت متنی یا گرافیکی نمایش می‌دهند. علاوه بر این، ابزارهای نظارتی می‌توانند هشدارهایی ارسال کنند تا مدیر سیستم به مشکلات احتمالی منابع سریعاً واکنش نشان دهد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”مقایسه ابزارهای مختلف از نظر عملکرد و کاربرد” subtitle=”توضیحات کامل”]ابزارهای نظارت بر عملکرد سیستم لینوکس، هرکدام ویژگی‌ها و قابلیت‌های خاص خود را دارند که آن‌ها را برای کاربردهای مختلف مناسب می‌کند. در این بخش، مقایسه‌ای جامع از چندین ابزار کلیدی موجود در لینوکس از نظر عملکرد، کاربرد، و مزایا و معایب آن‌ها خواهیم داشت. این مقایسه به شما کمک خواهد کرد تا بهترین ابزار را برای نظارت بر سیستم خود انتخاب کنید.

1. htop vs top

htop و top دو ابزار محبوب برای نظارت بر عملکرد سیستم در لینوکس هستند. هر دو ابزار اطلاعات مشابهی را در مورد استفاده از CPU، حافظه، پردازش‌ها و دیگر منابع سیستم نمایش می‌دهند، اما تفاوت‌هایی در قابلیت‌ها و کاربرد دارند.

  • htop:
    • ویژگی‌ها:
      • نمایش گرافیکی و رنگی از وضعیت پردازش‌ها.
      • قابلیت جابجایی آسان بین پردازش‌ها و تغییر اولویت (nice value).
      • نمایش درختی پردازش‌ها (Tree View) برای مشاهده ارتباطات بین پردازش‌ها.
      • امکان فیلتر کردن پردازش‌ها بر اساس معیارهای مختلف.
    • مزایا:
      • رابط گرافیکی کاربرپسند و دیدگاه واضح‌تر به پردازش‌ها.
      • قابلیت جابجایی و تغییر اولویت به‌راحتی.
    • معایب:
      • به‌دلیل استفاده از رابط گرافیکی، نیازمند منابع سیستم بیشتری نسبت به top است.
      • ممکن است در سیستم‌های قدیمی با پردازنده‌های ضعیف سرعت پایین‌تری داشته باشد.
  • top:
    • ویژگی‌ها:
      • نمایش داده‌های دقیق و استاندارد در مورد وضعیت سیستم.
      • قابلیت تغییر اولویت پردازش‌ها با استفاده از کلیدهای میانبر.
    • مزایا:
      • مصرف منابع سیستم کم.
      • نصب و دسترسی آسان در تمامی توزیع‌های لینوکس.
    • معایب:
      • فاقد رابط گرافیکی و قابلیت‌های پیشرفته‌ای مانند Tree View یا فیلتر کردن پردازش‌ها.
      • نمایش کمتر واضح و پیچیده‌تر نسبت به htop.

مقایسه:

  • htop به دلیل قابلیت‌های گرافیکی و پیشرفته‌تری که دارد برای افرادی که نیاز به نمایش واضح و مدیریت آسان‌تر پردازش‌ها دارند، مناسب‌تر است.
  • top برای کاربرانی که به مصرف پایین منابع و عملکرد سریع‌تر نیاز دارند، گزینه بهتری است.

2. uptime vs dstat

دستورات uptime و dstat هر دو برای جمع‌آوری و نمایش اطلاعات مربوط به عملکرد سیستم استفاده می‌شوند، اما تفاوت‌هایی در نحوه نمایش داده‌ها و قابلیت‌های خود دارند.

  • uptime:
    • ویژگی‌ها:
      • نمایش زمان فعالیت سیستم و Load Average (میانگین بار سیستم در 1، 5 و 15 دقیقه گذشته).
    • مزایا:
      • استفاده آسان و سریع.
      • اطلاعات مختصر و مفید.
    • معایب:
      • فقط اطلاعات مربوط به Load Average را نمایش می‌دهد و اطلاعات دیگری در مورد منابع دیگر (CPU، حافظه و دیسک) ارائه نمی‌دهد.
  • dstat:
    • ویژگی‌ها:
      • ابزار جامع برای نظارت بر منابع سیستم.
      • نمایش لحظه‌ای آمار مصرف منابع مختلف (CPU، حافظه، I/O دیسک، شبکه و غیره).
      • امکان ذخیره‌سازی داده‌ها در فایل‌های CSV برای تحلیل‌های بعدی.
    • مزایا:
      • قابلیت نظارت بر چندین منبع مختلف به‌طور همزمان.
      • امکانات گرافیکی برای نمایش داده‌ها (با استفاده از ابزارهای جانبی).
    • معایب:
      • نسبت به uptime پیچیده‌تر است و به زمان بیشتری برای آشنایی نیاز دارد.

مقایسه:

  • uptime بسیار ساده و سریع است، اما فقط اطلاعات سطحی در مورد بار سیستم ارائه می‌دهد. برای نظارت سریع و لحظه‌ای، این ابزار کارآمد است.
  • dstat ابزار بسیار قدرتمندتری است که اطلاعات دقیق‌تری در مورد منابع مختلف سیستم در اختیارتان می‌گذارد و برای کاربران حرفه‌ای مناسب است که نیاز به تحلیل دقیق‌تری دارند.

3. Cockpit vs Glances

Cockpit و Glances دو ابزار گرافیکی برای نظارت بر سیستم هستند که به‌ویژه برای نظارت از راه دور مفید هستند.

  • Cockpit:
    • ویژگی‌ها:
      • رابط وب گرافیکی برای مدیریت و نظارت بر سیستم.
      • پشتیبانی از نظارت بر چندین سرور.
      • قابلیت مشاهده و مدیریت منابع سیستم، مانند CPU، حافظه، دیسک و شبکه.
      • ابزار مدیریت و پیکربندی سیستم‌ها مانند سرویس‌ها، کاربران، و تنظیمات شبکه.
    • مزایا:
      • رابط گرافیکی کاربرپسند.
      • مناسب برای مدیران سیستم که نیاز به نظارت از راه دور دارند.
    • معایب:
      • نیاز به تنظیمات اولیه برای راه‌اندازی رابط وب.
      • مصرف منابع نسبتاً بالا به دلیل استفاده از رابط گرافیکی تحت وب.
  • Glances:
    • ویژگی‌ها:
      • ابزار چندمنظوره برای نظارت بر منابع سیستم به‌صورت زنده.
      • رابط گرافیکی برای نمایش وضعیت سیستم در ترمینال.
      • امکان مشاهده وضعیت چندین سرور در یک صفحه.
    • مزایا:
      • بسیار سبک و سریع.
      • مناسب برای محیط‌های ترمینال و نظارت روی چندین سیستم به‌صورت همزمان.
    • معایب:
      • رابط گرافیکی ترمینالی ممکن است برای کاربران غیر حرفه‌ای پیچیده باشد.
      • محدودتر از Cockpit در خصوص قابلیت‌های مدیریتی.

مقایسه:

  • Cockpit برای افرادی که نیاز به رابط گرافیکی تحت وب و ابزارهای مدیریتی بیشتر دارند مناسب است.
  • Glances بیشتر برای نظارت سریع و سبک بر منابع سیستم در ترمینال طراحی شده است و برای کاربران حرفه‌ای که نیاز به یک رابط گرافیکی ساده دارند، مناسب است.

جمع‌بندی

  • htop و top ابزارهایی عالی برای نظارت بر پردازش‌ها هستند که بسته به نیاز کاربران می‌توانند از قابلیت‌های گرافیکی یا عملکرد سریع بهره ببرند.
  • uptime ابزاری ساده برای نظارت بر بار سیستم است، در حالی که dstat ابزار جامع‌تری برای جمع‌آوری و تحلیل داده‌های مختلف سیستم است.
  • Cockpit برای نظارت از راه دور و مدیریت سیستم‌ها در محیط گرافیکی تحت وب مناسب است، در حالی که Glances یک ابزار ترمینالی است که برای نظارت سریع و سبک طراحی شده است.

انتخاب ابزار مناسب بستگی به نیازهای خاص شما دارد. برای نظارت دقیق و مدیریت سیستم‌های مختلف، ابزارهایی مانند dstat و Cockpit توصیه می‌شوند، در حالی که برای نظارت سریع و ساده، htop و uptime گزینه‌های عالی هستند.[/cdb_course_lesson][cdb_course_lesson title=”فصل 5. ملاحظات اولیه قبل از شروع نظارت”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”شناسایی نیازهای سیستم و هدف از نظارت” subtitle=”توضیحات کامل”]برای اینکه نظارت بر عملکرد سیستم‌ها موثر و کاربردی باشد، باید ابتدا نیازهای سیستم به‌طور دقیق شناسایی شوند. این شناسایی نه‌تنها در انتخاب ابزارهای نظارتی مناسب کمک می‌کند، بلکه فرآیندهای بهینه‌سازی و رفع مشکلات سیستم را نیز تسهیل می‌کند. به طور کلی، شناسایی نیازهای سیستم و اهداف نظارت باید متناسب با نوع استفاده از سیستم، محیط کاری و اهداف خاص شما باشد.

شناسایی نیازهای سیستم

  1. نوع سیستم و کاربرد آن:
    • اولین گام در شناسایی نیازهای سیستم، درک نوع سیستم و کاربرد آن است. این موضوع به شما کمک می‌کند تا بدانید به کدام منابع سیستم باید بیشتر توجه کنید. به عنوان مثال، در سرورهای وب که بیشترین بار را از ترافیک اینترنت دارند، نظارت بر منابع شبکه و پردازنده اهمیت بیشتری دارد. در حالی که برای یک سیستم پایگاه داده، نظارت بر عملکرد حافظه و دیسک بسیار حیاتی است.
    • برای سرورهای production، نظارت دقیق و مداوم برای جلوگیری از خرابی‌های غیرمنتظره ضروری است. در مقابل، برای سیستم‌های development ممکن است نیازی به نظارت مداوم نباشد، زیرا خطاها و مشکلات معمولا در مراحل تست شناسایی می‌شوند.
  2. حجم و پیچیدگی منابع سیستم:
    • سیستم‌های کوچک و تک‌کاربردی ممکن است نیاز به نظارت پیچیده نداشته باشند، اما سیستم‌های بزرگ‌تر با عملکردهای متنوع و چندین سرور به‌طور هم‌زمان نیاز به نظارت دقیق‌تر دارند.
    • سیستم‌هایی که به‌طور مداوم با داده‌های بزرگ (مانند سیستم‌های ذخیره‌سازی یا پردازش داده‌های سنگین) سر و کار دارند، باید نظارت دقیقی روی مصرف منابع مانند CPU، حافظه، و دیسک داشته باشند تا از بروز مشکلات قبل از وقوع آن‌ها جلوگیری شود.
  3. سطح دسترسی و امنیت:
    • برای سیستم‌هایی که از دسترسی‌های مختلف (کاربران مختلف با سطوح دسترسی متنوع) برخوردارند، باید قابلیت نظارت دقیق روی logها و رفتار کاربران نیز در نظر گرفته شود. برای جلوگیری از دسترسی غیرمجاز، نظارت بر فعالیت‌های شبکه و ورود به سیستم از اهمیت بالایی برخوردار است.
  4. نوع سرویس‌ها و برنامه‌ها:
    • سیستم‌هایی که سرویس‌های بحرانی یا حساس (مانند پایگاه‌داده‌ها، سرویس‌های ایمیل یا DNS) را اجرا می‌کنند، نیازمند نظارت دقیق‌تری برای اطمینان از دسترس‌پذیری و عملکرد صحیح آن‌ها هستند. این سرویس‌ها باید به‌طور مداوم بررسی شوند تا در صورت بروز خطا، اقدامات اصلاحی به‌سرعت انجام شود.

هدف از نظارت

هدف اصلی از نظارت، شناسایی مشکلات، بهبود عملکرد سیستم و جلوگیری از خرابی‌ها است. اما هدف‌های خاص نظارت می‌توانند بسته به نیازهای سیستم و نوع کاربرد آن، متغیر باشند:

  1. شناسایی مشکلات و عیب‌یابی:
    • یکی از اهداف اصلی نظارت بر سیستم، شناسایی مشکلات پیش از وقوع است. این مشکلات می‌توانند شامل بسته شدن سرویس‌ها، بالا رفتن مصرف منابع یا گلوگاه‌ها (Bottleneck) در پردازش‌ها باشند.
    • به عنوان مثال، نظارت مداوم بر Load Average، CPU usage و memory usage می‌تواند به شناسایی پردازش‌های سنگین و مشکلاتی که ممکن است بر عملکرد سیستم تاثیر بگذارند، کمک کند.
  2. پیشگیری از خرابی سیستم:
    • نظارت دقیق می‌تواند به شما این امکان را بدهد که از مشکلات جدی و خرابی سیستم پیشگیری کنید. برای مثال، از طریق نظارت بر Swap memory و I/O می‌توانید پیش از وقوع مشکل Out of Memory (OOM) یا Thrashing، اقدامات پیشگیرانه انجام دهید.
    • با شناسایی دقیق رفتارهای غیرعادی سیستم، مانند افزایش غیرمجاز مصرف منابع یا فعالیت‌های غیرمعمول، می‌توان از وقوع خرابی‌ها جلوگیری کرد.
  3. بهینه‌سازی عملکرد سیستم:
    • هدف دیگر نظارت، بهینه‌سازی عملکرد سیستم است. از طریق جمع‌آوری و تحلیل داده‌ها می‌توان الگوهای مصرف منابع را شناسایی کرده و تصمیماتی برای بهبود آن‌ها اتخاذ کرد.
    • برای مثال، اگر یک پردازش خاص باعث استفاده بیش از حد از CPU یا RAM می‌شود، می‌توان اولویت آن پردازش را تغییر داد یا اقداماتی برای بهینه‌سازی کد آن انجام داد.
  4. مدیریت ظرفیت (Capacity Management):
    • نظارت به شما کمک می‌کند تا از میزان ظرفیت سیستم‌ها و منابع موجود آگاهی پیدا کنید و از این طریق تصمیمات بهتری در مورد ارتقاء سخت‌افزار یا بهبود پیکربندی منابع بگیرید.
    • این هدف به ویژه در محیط‌های تولید و سرورهایی با بار کاری سنگین اهمیت دارد. نظارت بر عملکرد شبکه، پردازنده، حافظه و دیسک می‌تواند به شناسایی ظرفیت‌های اضافی یا نیاز به افزایش منابع کمک کند.
  5. تحلیل روند (Trend Analysis):
    • در برخی موارد، هدف از نظارت تحلیل روند مصرف منابع در طول زمان است. به‌عنوان مثال، ممکن است شما نیاز داشته باشید تا روند افزایش مصرف CPU یا حافظه را در یک دوره خاص (مثلاً یک ماه) بررسی کنید تا تصمیمات استراتژیک برای توسعه یا بهینه‌سازی سیستم بگیرید.
  6. اطلاع‌رسانی و هشدار:
    • هدف دیگر نظارت، به‌دست آوردن هشدارها و اعلان‌ها به محض بروز مشکلات یا مصرف بیش از حد منابع است. این هشدارها می‌توانند به تیم‌های فنی یا مدیران سیستم کمک کنند تا سریعاً اقدامات لازم را برای حل مشکل انجام دهند.

جمع‌بندی

شناسایی دقیق نیازهای سیستم و هدف از نظارت برای انتخاب ابزار مناسب و اجرای فرآیندهای بهینه‌سازی اهمیت زیادی دارد. هر سیستم با توجه به نوع کاربری، حجم و پیچیدگی منابع و اهداف خاص خود نیازمند استراتژی‌های متفاوتی برای نظارت است. از سوی دیگر، هدف از نظارت می‌تواند شناسایی مشکلات، پیشگیری از خرابی، بهینه‌سازی عملکرد، مدیریت ظرفیت و تحلیل روند باشد. این اهداف باید به‌طور دقیق و متناسب با نیازهای سیستم در نظر گرفته شوند تا نظارت موثر و کاربردی باشد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”درک محیط‌های مختلف (Production vs Development)” subtitle=”توضیحات کامل”]درک تفاوت‌ها و الزامات نظارت در محیط‌های مختلف Production و Development برای مدیران سیستم‌ها و مهندسان IT بسیار حیاتی است. این دو محیط تفاوت‌های عمده‌ای از نظر نیازهای عملکردی، پایداری، و ابزارهای نظارتی دارند. به طور کلی، Production به محیط‌هایی اشاره دارد که در آن‌ها سیستم‌ها به‌طور زنده و واقعی در حال سرویس‌دهی به کاربران یا مشتریان هستند، در حالی که Development محیطی است که برای تست و توسعه نرم‌افزارها و سرویس‌ها استفاده می‌شود.

محیط Production:

این محیط شامل سیستم‌ها، سرویس‌ها و برنامه‌هایی است که به‌طور واقعی و به‌طور مداوم به کاربران سرویس می‌دهند. Production environment باید پایداری و کارایی بالایی داشته باشد تا اختلالات در خدمات به حداقل برسد.

  1. پایداری و اطمینان:
    • در محیط تولید، پایداری سیستم از اهمیت بالایی برخوردار است. هر گونه خرابی یا توقف سرویس می‌تواند تاثیرات جبران‌ناپذیری بر کسب‌وکار و تجربه کاربری بگذارد.
    • نظارت بر uptime سیستم، Load Average، CPU Usage و Memory Usage در این محیط‌ها ضروری است. هرگونه بروز مشکل باید به سرعت شناسایی و رفع شود.
  2. اولویت‌دهی به عملکرد و مقیاس‌پذیری:
    • در این محیط‌ها، مهم‌ترین موضوع بهینه‌سازی عملکرد سیستم و مقیاس‌پذیری است. نظارت باید شامل تحلیل استفاده از منابع مانند CPU، حافظه و دیسک باشد تا از بروز مشکلات ناشی از مصرف بیش از حد منابع جلوگیری شود.
    • نظارت روی عملکرد Database و Network Traffic نیز اهمیت زیادی دارد.
  3. مانیتورینگ مستمر:
    • در محیط‌های تولید، نظارت باید به‌طور مداوم انجام شود و ابزارهایی مانند Prometheus، Nagios یا Zabbix برای نظارت 24 ساعته استفاده می‌شوند.
    • اگر مشکلی در سیستم رخ دهد، باید به سرعت اطلاع‌رسانی شود تا اقدامات فوری برای رفع آن صورت گیرد.
  4. امنیت و نظارت بر دسترسی‌ها:
    • در این محیط‌ها باید روی امنیت و دسترسی‌ها نیز نظارت کرد. ابزارهایی مثل fail2ban یا iptables برای نظارت بر ترافیک و جلوگیری از دسترسی‌های غیرمجاز استفاده می‌شوند.
    • همچنین، بررسی logها و تحلیل رفتار کاربران و درخواست‌ها از طریق SIEM (Security Information and Event Management) ضروری است.
  5. تست و بررسی عملکرد سیستم‌ها:
    • تست‌های عملکردی مانند stress testing و load testing باید پیش از استقرار سیستم در محیط تولید انجام شود. همچنین، rollback یا بازیابی به نسخه قبلی در صورت بروز مشکل، باید پیش‌بینی شده باشد.

محیط Development:

محیط‌های توسعه به محیط‌هایی اطلاق می‌شود که نرم‌افزارها و سرویس‌ها در آن‌ها ساخته، تست و اصلاح می‌شوند. این محیط‌ها معمولاً برای بررسی عملکرد نرم‌افزار در شرایط مختلف طراحی شده‌اند.

  1. آزمایش و تست ویژگی‌های جدید:
    • در محیط‌های توسعه، نظارت بیشتر معطوف به آزمایش ویژگی‌های جدید و اصلاحات است. این محیط‌ها به‌طور عمده شامل debugging و profiling هستند تا مشکلات نرم‌افزاری و مسائل عملکردی شناسایی شوند.
    • ابزارهایی مثل gdb یا Valgrind برای بررسی رفتار برنامه و تشخیص مشکلات مصرف منابع یا نشت حافظه (memory leaks) استفاده می‌شوند.
  2. پایداری پایین‌تر:
    • برخلاف محیط‌های تولید، پایداری در محیط توسعه اهمیت کمتری دارد و ممکن است سیستم‌ها در حال تغییر و به‌روز رسانی‌های مداوم باشند. بنابراین، ابزارهای نظارتی می‌توانند کمی انعطاف‌پذیرتر و کمتر دقیق از محیط‌های تولید باشند.
    • در این محیط‌ها معمولاً مشکلات عملکردی مانند latency یا high CPU usage که در تولید تأثیرگذاری زیادی ندارند، مورد توجه قرار می‌گیرند.
  3. نظارت موقتی:
    • نظارت بر منابع در این محیط‌ها معمولاً موقتی است و برای پیدا کردن مشکلات خاصی مانند memory consumption یا disk I/O bottleneck استفاده می‌شود. نظارت معمولاً در زمان‌های خاصی (مثلاً پس از تغییرات عمده در کد) انجام می‌شود.
    • ابزارهایی مانند htop یا strace برای مشاهده فرآیندهای جاری و شبیه‌سازی رفتار برنامه مورد استفاده قرار می‌گیرند.
  4. نظارت بر عملکرد کد:
    • در این محیط‌ها، معمولاً بیشتر بر روی profiling کد و ارزیابی نحوه عملکرد آن (از نظر زمان‌بندی و مصرف منابع) تمرکز می‌شود.
    • ابزارهایی مانند perf یا gperftools برای اندازه‌گیری زمان‌های اجرای توابع و عملکرد کد به‌کار می‌روند.
  5. آزمایش تحت شرایط مختلف:
    • در محیط‌های توسعه، ممکن است سیستم‌ها تحت شرایط خاص یا شبیه‌سازی‌های بار بالا آزمایش شوند تا عملکرد نرم‌افزار تحت فشارهای مختلف ارزیابی گردد. ابزارهایی مانند Docker و Vagrant برای ایجاد محیط‌های تست مشابه تولید بسیار مفید هستند.

تفاوت‌های اصلی بین Production و Development:

ویژگی Production Development
پایداری بسیار اهمیت دارد، سیستم باید همیشه آنلاین باشد پایداری کمتری نیاز است و ممکن است قطع شوند
هدف اصلی اطمینان از عملکرد درست و جلوگیری از خرابی آزمایش و رفع مشکلات کد و تست ویژگی‌ها
ابزارهای نظارت ابزارهای مستمر مانند Prometheus، Nagios ابزارهای تست و بررسی کد مانند Valgrind و gdb
نوع مشکلات مشکلات باید سریع شناسایی و رفع شوند بیشتر تمرکز بر روی مشکلات عملکردی و کد است
نظارت بر منابع نظارت مداوم و دقیق بر منابع مانند CPU و RAM نظارت موقتی و بیشتر در زمان آزمایش کد جدید

جمع‌بندی

درک تفاوت‌های بین محیط‌های Production و Development به مدیران سیستم‌ها این امکان را می‌دهد که ابزارها و استراتژی‌های نظارتی خود را به‌طور مؤثر تنظیم کنند. در حالی که در محیط‌های تولید نظارت باید پیوسته و دقیق باشد تا از بروز خرابی‌ها جلوگیری شود، در محیط‌های توسعه نظارت بیشتر به شناسایی مشکلات کد و عملکرد نرم‌افزار متمرکز است. این تفاوت‌ها به شما کمک می‌کند تا نظارت را بر اساس نیازهای خاص هر محیط بهینه کنید.

 

 [/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”توجه به منابع مصرفی ابزارهای نظارت” subtitle=”توضیحات کامل”]زمانی که شما به نظارت بر عملکرد سیستم‌ها می‌پردازید، یکی از جنبه‌های مهمی که باید به آن توجه داشته باشید، مصرف منابع توسط خود ابزارهای نظارتی است. ابزارهای نظارت اگرچه برای شناسایی مشکلات سیستم و بهینه‌سازی آن طراحی شده‌اند، اما ممکن است در صورتی که به درستی تنظیم نشوند، منابع سیستم را مصرف کنند و در نهایت منجر به کاهش عملکرد سیستم شوند. بنابراین، مهم است که هنگام استفاده از این ابزارها، تاثیر آنها بر مصرف منابع سیستم را نیز در نظر بگیرید.

تاثیر مصرف منابع ابزارهای نظارتی بر سیستم

  1. مصرف CPU:
    • ابزارهای نظارتی ممکن است برای جمع‌آوری داده‌های عملکردی، پردازش‌های سنگینی روی CPU انجام دهند. به‌ویژه ابزارهایی که به‌طور مداوم به جمع‌آوری و تحلیل داده‌ها می‌پردازند، ممکن است مصرف CPU را بالا ببرند.
    • برای مثال، ابزارهایی مانند top و htop که به‌صورت زنده و مداوم وضعیت پردازش‌ها و منابع را نمایش می‌دهند، ممکن است در سیستم‌های با تعداد زیاد پردازش‌ها، بار زیادی بر CPU وارد کنند.
  2. مصرف حافظه (RAM):
    • ابزارهای نظارتی برای ذخیره داده‌ها و گزارش‌ها نیاز به حافظه دارند. برخی از ابزارها مانند Glances و Cockpit که دارای رابط‌های گرافیکی هستند، بیشتر از ابزارهای مبتنی بر خط فرمان مانند dstat یا uptime حافظه مصرف می‌کنند.
    • مصرف زیاد حافظه ممکن است به مشکلاتی مانند OOM (Out of Memory) منجر شود، به‌ویژه زمانی که تعداد ابزارهای نظارتی در حال اجرا باشد.
  3. ترافیک شبکه:
    • برخی از ابزارهای نظارتی مانند Nagios یا Prometheus ممکن است به‌طور مداوم داده‌های مربوط به وضعیت سیستم را از سرورهای مختلف جمع‌آوری کنند. این می‌تواند منجر به مصرف ترافیک شبکه زیاد شود، به‌ویژه در سیستم‌هایی که دارای تعداد زیادی سرور یا دستگاه هستند.
    • این افزایش ترافیک می‌تواند بر عملکرد شبکه تاثیر منفی بگذارد، به‌ویژه اگر ابزار نظارتی برای سیستم‌های توزیع‌شده به‌کار گرفته شود.
  4. دیسک و I/O:
    • بسیاری از ابزارهای نظارتی برای ذخیره داده‌ها و گزارش‌های سیستم نیاز به فضای دیسک دارند. این امر به‌ویژه در مورد ابزارهایی مانند sar یا sysstat که داده‌های آماری را ذخیره می‌کنند، بیشتر اهمیت دارد.
    • ابزارهایی که به‌طور مرتب گزارش‌ها را در فایل‌های لاگ ذخیره می‌کنند، می‌توانند حجم زیادی از داده‌ها را در دیسک تولید کنند و در نتیجه به مصرف I/O سیستم و همچنین فضای ذخیره‌سازی بیفزایند.

چطور مصرف منابع ابزارهای نظارتی را مدیریت کنیم؟

  1. انتخاب ابزار متناسب با نیاز سیستم:
    • یکی از اولین گام‌ها در مدیریت منابع مصرفی توسط ابزارهای نظارتی، انتخاب ابزار مناسب است. ابزارهایی که ساده و سبک هستند، می‌توانند برای نظارت در سیستم‌های با منابع محدود مناسب‌تر باشند.
    • برای مثال، ابزارهایی مانند htop یا uptime که فقط اطلاعات پایه‌ای ارائه می‌دهند، کمترین بار را بر سیستم وارد می‌کنند، در حالی که ابزارهایی مانند Prometheus که برای نظارت مقیاس‌پذیر و در زمان واقعی طراحی شده‌اند، ممکن است منابع بیشتری مصرف کنند.
  2. تنظیم فواصل جمع‌آوری داده‌ها:
    • در بسیاری از ابزارهای نظارتی، شما می‌توانید فاصله زمانی بین جمع‌آوری داده‌ها یا ارسال گزارش‌ها را تنظیم کنید. برای مثال، اگر ابزار dstat را به‌طور مداوم اجرا کنید، این ممکن است مصرف بالایی از منابع داشته باشد. اما اگر فاصله زمانی جمع‌آوری داده‌ها را افزایش دهید، این مصرف منابع کاهش خواهد یافت.
    • کاهش فواصل به حداقل ممکن می‌تواند تاثیر زیادی بر روی عملکرد سیستم و مصرف منابع بگذارد.
  3. استفاده از ابزارهای سبک‌تر:
    • ابزارهای خط فرمان معمولاً نسبت به ابزارهای گرافیکی منابع کمتری مصرف می‌کنند. ابزارهایی مانند uptime یا vmstat که تنها داده‌های اولیه سیستم را نمایش می‌دهند، می‌توانند به‌طور مؤثری منابع کمتری مصرف کنند.
    • به جای استفاده از ابزارهای گرافیکی سنگین، می‌توانید از ابزارهای سبک برای دریافت سریع اطلاعات و گزارش‌های مورد نیاز استفاده کنید.
  4. محدود کردن تعداد ابزارهای فعال:
    • در بسیاری از سیستم‌ها، استفاده از چندین ابزار نظارتی به‌طور همزمان می‌تواند باعث مصرف زیاد منابع شود. توصیه می‌شود تنها از ابزارهایی استفاده کنید که به‌طور دقیق نیازهای شما را پوشش می‌دهند.
    • برای مثال، اگر فقط به نظارت بر پردازش‌ها نیاز دارید، استفاده از ابزارهایی مانند ps یا top کافی خواهد بود و نیازی به ابزارهای پیچیده‌تری مانند Glances نخواهد بود.
  5. محدود کردن ذخیره‌سازی داده‌ها:
    • بسیاری از ابزارهای نظارتی برای ذخیره‌سازی داده‌ها به فضای دیسک نیاز دارند. برای جلوگیری از پر شدن دیسک با داده‌های زیاد، می‌توانید ذخیره‌سازی داده‌ها را به‌صورت محدود یا موقت تنظیم کنید.
    • علاوه بر این، تنظیم تاریخ انقضاء برای داده‌ها و گزارش‌ها (مثلاً استفاده از اسکریپت‌های حذف خودکار) می‌تواند به جلوگیری از اشغال فضای دیسک کمک کند.

جمع‌بندی

ابزارهای نظارتی می‌توانند به طور قابل توجهی منابع سیستم را مصرف کنند. بنابراین، مدیریت مصرف منابع این ابزارها بسیار مهم است تا از کاهش عملکرد سیستم جلوگیری شود. انتخاب ابزار مناسب، تنظیم فواصل جمع‌آوری داده‌ها، استفاده از ابزارهای سبک‌تر و محدود کردن تعداد ابزارهای فعال می‌تواند به کاهش مصرف منابع توسط ابزارهای نظارتی کمک کند. این اقدامات نه‌تنها باعث بهبود عملکرد سیستم می‌شود بلکه بهره‌وری کلی سیستم را نیز افزایش خواهد داد.[/cdb_course_lesson][cdb_course_lesson title=”فصل 6. تنظیم محیط برای نظارت”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”بررسی دسترسی‌های کاربر برای اجرای دستورات نظارت” subtitle=”توضیحات کامل”]برای نظارت بر عملکرد سیستم‌های لینوکسی، کاربر باید دسترسی‌های مناسبی داشته باشد تا بتواند دستورات مربوط به نظارت را به درستی اجرا کند. این دسترسی‌ها معمولاً به دو بخش اصلی تقسیم می‌شوند: دسترسی به اطلاعات سیستم و دسترسی به اجرای دستورات با سطح دسترسی بالا. در اینجا، نحوه مدیریت و بررسی این دسترسی‌ها توضیح داده می‌شود.

1. دسترسی‌های مورد نیاز برای نظارت بر سیستم

دستورات نظارتی معمولا نیاز به دسترسی به اطلاعات مختلف سیستم دارند، مانند وضعیت پردازش‌ها، مصرف منابع، وضعیت حافظه، دیسک و شبکه. این داده‌ها معمولاً فقط به کاربران با سطح دسترسی بالا (مانند root) یا گروه‌های خاصی از کاربران (مثل گروه sys یا adm) قابل دسترسی است.

1.1 دستورات پایه نظارت
  • uptime, top, htop, ps: این دستورات اطلاعاتی درباره مصرف منابع سیستم، پردازش‌ها، وضعیت بار سیستم و غیره فراهم می‌کنند. برای اجرای این دستورات به‌طور معمول نیاز به دسترسی خاصی نیست و کاربران معمولی هم می‌توانند آن‌ها را اجرا کنند.
  • dstat, vmstat: این دستورات نیز به‌طور معمول نیازی به دسترسی‌های خاص ندارند اما در مواردی که سیستم نیاز به دسترسی به منابع حساسی مانند اطلاعات پردازش‌ها یا داده‌های پردازش‌های سیستم داشته باشد، ممکن است نیاز به مجوزهای خاص داشته باشند.
1.2 دستورات نیازمند دسترسی‌های بالاتر

برای اجرای برخی دستورات که نیاز به بررسی یا تغییر در تنظیمات سیستم دارند، به دسترسی‌های بالاتری نیاز است:

  • iostat, sar: این ابزارها برای تحلیل عمیق‌تر عملکرد سیستم و پردازش‌های I/O نیاز به دسترسی سطح بالاتری دارند، زیرا باید به آمار و تاریخچه سیستم دسترسی داشته باشند.
  • kill, pkill, renice: این دستورات که برای مدیریت پردازش‌ها به کار می‌روند، به دسترسی‌های بالاتری نیاز دارند، زیرا باید بتوانند پردازش‌ها را متوقف کرده یا اولویت پردازش‌ها را تغییر دهند.

2. سطوح دسترسی مختلف در لینوکس

لینوکس از مدل‌های دسترسی مختلفی برای کنترل اینکه چه کاربران و گروه‌هایی به کدام منابع سیستم دسترسی داشته باشند، استفاده می‌کند. در اینجا به برخی از سطوح دسترسی‌های معمول اشاره می‌کنیم:

2.1 کاربران عادی (Regular Users)
  • کاربران عادی می‌توانند دستورات معمولی نظارتی مانند top، ps و uptime را اجرا کنند. این دستورات اطلاعات پایه‌ای از وضعیت سیستم را ارائه می‌دهند.
  • برای دسترسی به داده‌های حساس‌تر یا تغییر وضعیت پردازش‌ها، نیاز به سطوح دسترسی بالاتر دارند.
2.2 کاربران با دسترسی sudo
  • بسیاری از دستورات نظارتی پیشرفته مانند iostat، sar، kill، و pkill نیاز به دسترسی به سطح root دارند. در این شرایط، به کاربران اجازه داده می‌شود تا با استفاده از sudo (یا ابزارهای مشابه)، به‌طور موقت به سطح دسترسی بالاتر دست پیدا کنند.
  • برای استفاده از sudo، باید کاربر عضو گروه sudoers باشد. این گروه می‌تواند دسترسی موقت به دستورات سطح بالا را به کاربران بدهد.
  • برای استفاده از sudo، کاربر باید در فایل پیکربندی /etc/sudoers مشخص شده باشد. در این فایل می‌توان دسترسی‌های خاص را برای دستورات مختلف تنظیم کرد.
2.3 کاربران root
  • کاربر root دارای بالاترین سطح دسترسی در لینوکس است و به تمامی منابع سیستم دسترسی دارد. برای اجرای دستورات نظارتی پیچیده که نیاز به تغییرات در تنظیمات سیستم دارند، کاربر root به‌طور پیش‌فرض می‌تواند هر دستوری را اجرا کند.

3. بررسی و تنظیم دسترسی‌های کاربر

در برخی از موارد، ممکن است نیاز باشد که دسترسی‌های کاربر را برای اجرای دستورات خاص محدود یا تنظیم کنیم. در اینجا، روش‌های مختلفی برای این کار وجود دارد:

3.1 استفاده از sudo

برای دادن دسترسی به دستورات خاص بدون دادن دسترسی کامل به کاربر، می‌توان از sudo استفاده کرد:

  • فایل /etc/sudoers جایی است که دسترسی‌های sudo تنظیم می‌شود. با استفاده از دستور visudo می‌توان فایل /etc/sudoers را ویرایش کرد.
  • به‌عنوان مثال، برای دادن دسترسی فقط به دستور htop به کاربر user1، می‌توانیم وارد فایل /etc/sudoers شویم و خط زیر را اضافه کنیم:
    user1 ALL=(ALL) NOPASSWD: /usr/bin/htop
    
3.2 گروه‌های خاص

علاوه بر sudo، برخی از سیستم‌ها می‌توانند گروه‌های خاصی برای نظارت ایجاد کنند که دسترسی‌های محدودتری دارند. به‌عنوان مثال، کاربران می‌توانند به گروه‌های adm یا sys اضافه شوند تا به ابزارهای نظارتی خاص دسترسی پیدا کنند.

  • برای افزودن کاربر به گروه خاص، می‌توان از دستور زیر استفاده کرد:
    sudo usermod -aG adm user1
    
3.3 استفاده از سیستم‌های لاگ و نظارت

در برخی از محیط‌های پیچیده‌تر، استفاده از ابزارهای مانیتورینگ مرکزی مانند Auditd یا OSSEC می‌تواند برای نظارت بر دسترسی‌های کاربران به دستورات نظارتی استفاده شود. این ابزارها می‌توانند لاگ‌هایی از تلاش‌های دسترسی غیرمجاز و تغییرات در سیستم جمع‌آوری کنند.

جمع‌بندی

برای اجرای دستورات نظارت بر سیستم در لینوکس، کاربر باید دسترسی‌های مناسبی به منابع سیستم داشته باشد. در بسیاری از موارد، کاربران عادی می‌توانند دستورات پایه را اجرا کنند، اما برای استفاده از دستورات پیچیده‌تر یا دسترسی به داده‌های حساس‌تر، نیاز به دسترسی سطح بالاتر (مانند sudo یا root) دارند. برای مدیریت دسترسی‌های کاربر به ابزارهای نظارتی، می‌توان از sudo و گروه‌های خاص استفاده کرد. با توجه به نیازها و سیاست‌های امنیتی، باید دسترسی‌های کاربر به دستورات نظارتی به دقت مدیریت شوند تا از مشکلات امنیتی جلوگیری شود.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”نصب و راه‌اندازی ابزارهای ضروری برای نظارت بر عملکرد سیستم در لینوکس” subtitle=”توضیحات کامل”]برای نظارت مؤثر بر سیستم‌های لینوکسی، نیاز به ابزارهای مختلفی داریم که هر کدام وظایف خاصی را بر عهده دارند. در اینجا به نصب و راه‌اندازی ابزارهای ضروری برای نظارت بر عملکرد سیستم پرداخته می‌شود. این ابزارها می‌توانند شامل ابزارهای خط فرمان (CLI) و ابزارهای گرافیکی (GUI) باشند.

1. نصب و راه‌اندازی ابزارهای CLI

ابزارهای خط فرمان به دلیل سادگی، کارآیی بالا و استفاده از منابع کمتر در سیستم‌های لینوکس پرکاربرد هستند. در اینجا به معرفی چند ابزار ضروری و نحوه نصب آن‌ها پرداخته می‌شود.

1.1 htop

htop یک ابزار قدرتمند برای نظارت بر پردازش‌ها و مصرف منابع سیستم است. این ابزار یک نسخه پیشرفته از دستور top است و یک رابط گرافیکی داخل ترمینال برای نمایش اطلاعات سیستم فراهم می‌کند.

  • نصب: برای نصب htop، دستور زیر را در ترمینال وارد کنید:
    sudo apt-get install htop  # در توزیع‌های مبتنی بر Debian و Ubuntu
    sudo yum install htop      # در توزیع‌های مبتنی بر RHEL و CentOS
    sudo pacman -S htop        # در Arch Linux
    
  • راه‌اندازی: برای اجرای htop، کافیست دستور زیر را در ترمینال وارد کنید:
    htop
    
1.2 uptime

دستور uptime به شما این امکان را می‌دهد که زمان فعالیت سیستم (uptime) و بار سیستم (load average) را مشاهده کنید.

  • نصب: این ابزار به طور پیش‌فرض بر روی بیشتر سیستم‌های لینوکس نصب است، اما اگر نصب نشده باشد، می‌توانید آن را با استفاده از دستور زیر نصب کنید:
    sudo apt-get install procps  # در توزیع‌های مبتنی بر Debian و Ubuntu
    sudo yum install procps      # در توزیع‌های مبتنی بر RHEL و CentOS
    
  • راه‌اندازی: برای استفاده از دستور uptime کافی است آن را در ترمینال وارد کنید:
    uptime
    
1.3 dstat

dstat یک ابزار برای جمع‌آوری داده‌های منابع سیستم به‌صورت پویا و لحظه‌ای است. این ابزار می‌تواند اطلاعات زیادی از جمله مصرف CPU، حافظه، دیسک، شبکه و ورودی/خروجی (I/O) را به شما نشان دهد.

  • نصب: برای نصب dstat، دستور زیر را در ترمینال وارد کنید:
    sudo apt-get install dstat  # در توزیع‌های مبتنی بر Debian و Ubuntu
    sudo yum install dstat      # در توزیع‌های مبتنی بر RHEL و CentOS
    
  • راه‌اندازی: برای اجرای dstat و مشاهده وضعیت سیستم در زمان واقعی، دستور زیر را وارد کنید:
    dstat
    

2. نصب و راه‌اندازی ابزارهای GUI

ابزارهای گرافیکی معمولاً رابط‌های کاربری راحت‌تری دارند و برای مدیریت و نظارت بر سیستم مناسب‌تر هستند. این ابزارها اغلب به مدیران سیستم کمک می‌کنند تا به‌صورت گرافیکی وضعیت سیستم را مشاهده کنند.

2.1 Cockpit

Cockpit یک ابزار مدیریت و نظارت بر سیستم لینوکسی است که از یک رابط گرافیکی تحت وب استفاده می‌کند. این ابزار می‌تواند وضعیت سیستم را به‌صورت آنلاین و از راه دور نشان دهد و به مدیران این امکان را می‌دهد که برخی از عملیات مدیریتی را نیز انجام دهند.

  • نصب: برای نصب Cockpit، می‌توانید از دستور زیر استفاده کنید:
    sudo apt-get install cockpit      # در توزیع‌های مبتنی بر Debian و Ubuntu
    sudo yum install cockpit          # در توزیع‌های مبتنی بر RHEL و CentOS
    sudo dnf install cockpit          # در توزیع‌های مبتنی بر Fedora
    
  • راه‌اندازی: بعد از نصب، برای فعال‌سازی و شروع استفاده از Cockpit، دستور زیر را وارد کنید:
    sudo systemctl enable --now cockpit.socket
    

    سپس می‌توانید به رابط گرافیکی Cockpit از طریق مرورگر وب خود با آدرس زیر دسترسی پیدا کنید:

    https://<your-server-ip>:9090
    
2.2 Glances

Glances یک ابزار نظارت چندمنظوره است که اطلاعات دقیقی در مورد وضعیت سیستم، مصرف منابع، پردازش‌ها، شبکه و دیسک را به صورت زنده به شما نمایش می‌دهد. این ابزار می‌تواند به صورت محلی یا از راه دور اجرا شود.

  • نصب: برای نصب Glances، می‌توانید دستور زیر را وارد کنید:
    sudo apt-get install glances    # در توزیع‌های مبتنی بر Debian و Ubuntu
    sudo yum install glances        # در توزیع‌های مبتنی بر RHEL و CentOS
    sudo pacman -S glances          # در Arch Linux
    
  • راه‌اندازی: بعد از نصب، می‌توانید Glances را با دستور زیر اجرا کنید:
    glances
    

3. نصب و راه‌اندازی ابزارهای خاص برای تحلیل

برای نظارت بر عملکرد سیستم به‌طور دقیق‌تر و تحلیل داده‌های عمیق‌تر، استفاده از ابزارهای خاص مفید است. این ابزارها معمولاً به نصب و پیکربندی‌های بیشتری نیاز دارند.

3.1 sar

sar ابزار تاریخچه‌ای است که برای جمع‌آوری و تحلیل آمارهای سیستم استفاده می‌شود. این ابزار می‌تواند برای گزارش‌گیری در مورد مصرف CPU، حافظه، دیسک، شبکه و دیگر منابع استفاده شود.

  • نصب: برای نصب sar، می‌توانید از دستور زیر استفاده کنید:
    sudo apt-get install sysstat   # در توزیع‌های مبتنی بر Debian و Ubuntu
    sudo yum install sysstat       # در توزیع‌های مبتنی بر RHEL و CentOS
    sudo pacman -S sysstat         # در Arch Linux
    
  • راه‌اندازی: برای شروع استفاده از sar، دستور زیر را وارد کنید:
    sar -u 1 3
    

    این دستور آمار مصرف CPU را هر یک ثانیه به مدت 3 بار نمایش می‌دهد.

جمع‌بندی

نصب و راه‌اندازی ابزارهای ضروری برای نظارت بر عملکرد سیستم در لینوکس، شامل مجموعه‌ای از ابزارهای خط فرمان و گرافیکی است که به مدیران سیستم کمک می‌کند تا وضعیت سیستم خود را به‌صورت دقیق و در زمان واقعی مشاهده کنند. ابزارهایی مانند htop، uptime، و dstat برای نظارت اولیه و ابزارهایی مانند Cockpit و Glances برای نظارت گرافیکی و جامع‌تر بسیار مفید هستند. با نصب و پیکربندی صحیح این ابزارها، می‌توانید از سلامت سیستم خود اطمینان حاصل کنید و از مشکلات احتمالی جلوگیری کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”استفاده از اسکریپت‌های پایه برای شروع نظارت” subtitle=”توضیحات کامل”]برای شروع نظارت بر عملکرد سیستم با استفاده از اسکریپت‌های پایه در لینوکس، می‌توان از اسکریپت‌های شل (Shell Scripts) بهره برد. این اسکریپت‌ها به شما این امکان را می‌دهند که داده‌های مختلفی را از سیستم جمع‌آوری کرده و آن‌ها را به‌طور منظم ذخیره یا گزارش کنید.

در اینجا به برخی از اسکریپت‌های ساده و ابتدایی برای نظارت بر عملکرد سیستم پرداخته می‌شود:

1. اسکریپت نظارت بر مصرف CPU و حافظه

این اسکریپت به‌طور مرتب مصرف CPU و حافظه را بررسی کرده و آن را در یک فایل گزارش ذخیره می‌کند.

اسکریپت: monitor_cpu_memory.sh

#!/bin/bash

# تعریف مسیر فایل گزارش
LOG_FILE="/var/log/system_monitor.log"

# نوشتن تاریخ و زمان
echo "----------------------------------------------------" >> $LOG_FILE
echo "Monitoring started at $(date)" >> $LOG_FILE
echo "" >> $LOG_FILE

# جمع‌آوری اطلاعات مصرف CPU و حافظه
echo "CPU Usage:" >> $LOG_FILE
top -bn1 | grep "Cpu(s)" >> $LOG_FILE
echo "" >> $LOG_FILE

echo "Memory Usage:" >> $LOG_FILE
free -h >> $LOG_FILE
echo "" >> $LOG_FILE

echo "----------------------------------------------------" >> $LOG_FILE

نحوه استفاده:

  1. ابتدا اسکریپت را در یک فایل ذخیره کنید. برای مثال، نام آن را monitor_cpu_memory.sh قرار دهید.
    nano monitor_cpu_memory.sh
    
  2. سپس مجوز اجرایی به آن بدهید:
    chmod +x monitor_cpu_memory.sh
    
  3. برای اجرای اسکریپت، دستور زیر را وارد کنید:
    ./monitor_cpu_memory.sh
    
  4. این اسکریپت به‌طور مرتب اطلاعات مربوط به مصرف CPU و حافظه را به فایل گزارش /var/log/system_monitor.log اضافه می‌کند.

2. اسکریپت نظارت بر مصرف دیسک

این اسکریپت به شما اطلاعاتی در مورد وضعیت فضای دیسک در سیستم می‌دهد.

اسکریپت: monitor_disk_usage.sh

#!/bin/bash

# تعریف مسیر فایل گزارش
LOG_FILE="/var/log/disk_usage.log"

# نوشتن تاریخ و زمان
echo "----------------------------------------------------" >> $LOG_FILE
echo "Disk usage report at $(date)" >> $LOG_FILE
echo "" >> $LOG_FILE

# جمع‌آوری اطلاعات مصرف دیسک
df -h >> $LOG_FILE
echo "" >> $LOG_FILE

echo "----------------------------------------------------" >> $LOG_FILE

نحوه استفاده:

  1. ابتدا اسکریپت را در یک فایل ذخیره کنید. برای مثال، نام آن را monitor_disk_usage.sh قرار دهید.
    nano monitor_disk_usage.sh
    
  2. سپس مجوز اجرایی به آن بدهید:
    chmod +x monitor_disk_usage.sh
    
  3. برای اجرای اسکریپت، دستور زیر را وارد کنید:
    ./monitor_disk_usage.sh
    
  4. این اسکریپت به‌طور منظم اطلاعات مربوط به مصرف دیسک را در فایل گزارش /var/log/disk_usage.log ذخیره می‌کند.

3. اسکریپت نظارت بر بار سیستم (Load Average)

این اسکریپت می‌تواند بار سیستم (Load Average) را بررسی کرده و در صورتی که بار از حد معینی بیشتر شود، یک هشدار ایجاد کند.

اسکریپت: monitor_load_average.sh

#!/bin/bash

# تعریف مسیر فایل گزارش
LOG_FILE="/var/log/load_average.log"

# تعریف حد بار سیستم
MAX_LOAD=2.0

# نوشتن تاریخ و زمان
echo "----------------------------------------------------" >> $LOG_FILE
echo "Load Average report at $(date)" >> $LOG_FILE
echo "" >> $LOG_FILE

# دریافت بار سیستم
LOAD=$(uptime | awk -F 'load average:' '{ print $2 }' | cut -d ',' -f1 | sed 's/ //g')

echo "Current Load Average: $LOAD" >> $LOG_FILE

# بررسی بار سیستم و هشدار در صورت بالا بودن
if (( $(echo "$LOAD > $MAX_LOAD" | bc -l) )); then
    echo "WARNING: Load average is above threshold!" >> $LOG_FILE
else
    echo "Load average is within acceptable range." >> $LOG_FILE
fi

echo "----------------------------------------------------" >> $LOG_FILE

نحوه استفاده:

  1. ابتدا اسکریپت را در یک فایل ذخیره کنید. برای مثال، نام آن را monitor_load_average.sh قرار دهید.
    nano monitor_load_average.sh
    
  2. سپس مجوز اجرایی به آن بدهید:
    chmod +x monitor_load_average.sh
    
  3. برای اجرای اسکریپت، دستور زیر را وارد کنید:
    ./monitor_load_average.sh
    
  4. این اسکریپت بار سیستم را بررسی کرده و در صورت بالا بودن بار، یک هشدار به فایل گزارش /var/log/load_average.log اضافه می‌کند.

4. اسکریپت نظارت بر وضعیت شبکه

این اسکریپت می‌تواند وضعیت شبکه، پینگ‌های اینترنت و مصرف شبکه را بررسی کند.

اسکریپت: monitor_network.sh

#!/bin/bash

# تعریف مسیر فایل گزارش
LOG_FILE="/var/log/network_status.log"

# نوشتن تاریخ و زمان
echo "----------------------------------------------------" >> $LOG_FILE
echo "Network status report at $(date)" >> $LOG_FILE
echo "" >> $LOG_FILE

# بررسی وضعیت شبکه
echo "Network interfaces status:" >> $LOG_FILE
ifconfig >> $LOG_FILE
echo "" >> $LOG_FILE

# پینگ کردن یک آدرس برای بررسی اتصال به اینترنت
PING_RESULT=$(ping -c 4 8.8.8.8)

echo "Ping result:" >> $LOG_FILE
echo "$PING_RESULT" >> $LOG_FILE
echo "" >> $LOG_FILE

echo "----------------------------------------------------" >> $LOG_FILE

نحوه استفاده:

  1. ابتدا اسکریپت را در یک فایل ذخیره کنید. برای مثال، نام آن را monitor_network.sh قرار دهید.
    nano monitor_network.sh
    
  2. سپس مجوز اجرایی به آن بدهید:
    chmod +x monitor_network.sh
    
  3. برای اجرای اسکریپت، دستور زیر را وارد کنید:
    ./monitor_network.sh
    
  4. این اسکریپت وضعیت شبکه و نتایج پینگ به DNS عمومی گوگل (8.8.8.8) را در فایل گزارش /var/log/network_status.log ذخیره می‌کند.

5. اجرای اسکریپت‌ها به‌طور خودکار با Cron

برای نظارت مداوم و اجرای این اسکریپت‌ها به‌طور خودکار در زمان‌های مشخص، می‌توانید از Cron استفاده کنید. به‌عنوان مثال، برای اجرای اسکریپت‌ها هر 5 دقیقه یک‌بار، می‌توانید این کار را با اضافه کردن یک وظیفه Cron انجام دهید:

  1. برای ویرایش فایل Cron، دستور زیر را وارد کنید:
    crontab -e
    
  2. سپس خط زیر را اضافه کنید تا اسکریپت‌ها هر 5 دقیقه اجرا شوند:
    */5 * * * * /path/to/monitor_cpu_memory.sh
    */5 * * * * /path/to/monitor_disk_usage.sh
    */5 * * * * /path/to/monitor_load_average.sh
    */5 * * * * /path/to/monitor_network.sh
    

این دستورات هر 5 دقیقه اسکریپت‌های مختلف را اجرا خواهند کرد.


جمع‌بندی

استفاده از اسکریپت‌های ساده برای نظارت بر عملکرد سیستم می‌تواند به شما کمک کند تا اطلاعات حیاتی درباره وضعیت سیستم خود را جمع‌آوری کنید. این اسکریپت‌ها می‌توانند برای نظارت بر مصرف منابع (CPU، حافظه، دیسک، شبکه) و همچنین بررسی مشکلات احتمالی استفاده شوند. با تنظیم Cron برای اجرای مداوم این اسکریپت‌ها، می‌توانید نظارت پیوسته و خودکار بر سیستم داشته باشید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 7. مروری بر تحلیل داده‌ها”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”نحوه تفسیر Load Average” subtitle=”توضیحات کامل”]Load Average یکی از مهم‌ترین پارامترهایی است که در نظارت بر عملکرد سیستم‌های لینوکس و یونیکس به کار می‌رود. این شاخص نشان‌دهنده‌ی بار سیستم است و معمولاً برای سنجش میزان فشار و ظرفیت پردازشگرها استفاده می‌شود. تفسیر صحیح این مقدار به شما کمک می‌کند تا تصمیمات بهتری در مدیریت منابع سیستم بگیرید.

مفهوم Load Average

Load Average میانگین بار سیستم در یک بازه زمانی مشخص است. این مقدار به شما می‌گوید که به طور متوسط چند فرآیند (process) در حال انجام یا انتظار برای اجرای در CPU سیستم هستند. به عبارت دیگر، Load Average تعداد فرآیندهایی است که در حال استفاده از منابع پردازشگر (CPU) یا منتظر در صف پردازش هستند.

در اکثر سیستم‌های لینوکسی، Load Average در سه بازه زمانی مختلف به شما نمایش داده می‌شود:

  1. 1 دقیقه‌ای (1 min): بار سیستم در یک دقیقه گذشته
  2. 5 دقیقه‌ای (5 min): بار سیستم در پنج دقیقه گذشته
  3. 15 دقیقه‌ای (15 min): بار سیستم در ۱۵ دقیقه گذشته

فرمت نمایش Load Average

در دستور uptime یا top، شما معمولاً خروجی مشابه زیر را مشاهده خواهید کرد:

11:15:43 up 10 days,  3:17,  2 users,  load average: 0.25, 0.30, 0.40

در اینجا، اعداد بعد از “load average:” نشان‌دهنده بار سیستم در بازه‌های زمانی 1 دقیقه‌ای، 5 دقیقه‌ای و 15 دقیقه‌ای هستند:

  • 1 دقیقه: 0.25
  • 5 دقیقه: 0.30
  • 15 دقیقه: 0.40

نحوه تفسیر Load Average

  1. Load Average برابر با تعداد هسته‌های CPU
    • برای سیستم‌هایی که چندین هسته پردازشی دارند، مقدار ایده‌آل Load Average نباید از تعداد هسته‌ها بیشتر باشد. به عنوان مثال:
      • اگر سیستم شما یک هسته پردازشی (CPU) دارد، بار سیستم باید کمتر از 1.0 باشد.
      • اگر سیستم شما چهار هسته پردازشی دارد، بار سیستم باید کمتر از 4.0 باشد.
  2. Load Average کمتر از 1 (در سیستم تک‌هسته‌ای)
    • اگر Load Average کمتر از 1 باشد (برای سیستم‌های تک‌هسته‌ای)، نشان‌دهنده این است که سیستم شما در حالت ایده‌آل یا بهینه عمل می‌کند و هیچ صف پردازشی برای CPU وجود ندارد.
  3. Load Average برابر با یا بیشتر از تعداد هسته‌ها
    • اگر Load Average برابر یا بیشتر از تعداد هسته‌های پردازشی باشد، این نشان می‌دهد که سیستم شما بار زیادی دارد و ممکن است نیاز به منابع بیشتر یا بهینه‌سازی پردازش‌ها داشته باشد. به طور خاص:
      • اگر Load Average از 1.0 بیشتر باشد (برای سیستم تک‌هسته‌ای)، به این معنی است که تعداد فرآیندهایی که در حال اجرای همزمان یا انتظار برای اجرا هستند، بیشتر از ظرفیت سیستم است.
      • اگر Load Average از 4.0 بیشتر باشد (برای سیستم چهار هسته‌ای)، این نشان‌دهنده فشار زیاد بر سیستم و احتمالاً کند شدن عملکرد است.
  4. تغییرات در Load Average
    • تفاوت میان Load Average در بازه‌های زمانی مختلف (1 دقیقه‌ای، 5 دقیقه‌ای و 15 دقیقه‌ای) می‌تواند اطلاعات بیشتری درباره وضعیت بار سیستم بدهد.
      • اگر مقدار Load Average در حال افزایش باشد (مثلاً از 0.25 به 0.75 در طول 15 دقیقه)، این نشان‌دهنده افزایش تدریجی بار سیستم است و ممکن است به دلایل مختلفی مثل اجرای فرآیندهای سنگین یا افزایش تعداد کاربران باشد.
      • اگر مقدار Load Average ثابت یا کاهش یابد، ممکن است نشان‌دهنده این باشد که سیستم به حالت پایدار بازگشته است.
  5. Load Average در زمان‌های مختلف
    • مقدار Load Average در بازه‌های زمانی مختلف می‌تواند به شما کمک کند تا مشکلات احتمالی را شناسایی کنید. برای مثال:
      • 1 دقیقه: اگر این مقدار به طور ناگهانی زیاد شود، ممکن است نشان‌دهنده بار شدید یا فرآیندهای سنگین باشد.
      • 5 و 15 دقیقه: اگر در این بازه‌ها مقدار Load Average نسبت به 1 دقیقه تغییرات زیادی داشته باشد، این ممکن است نشان‌دهنده تغییرات بار سیستم در طول زمان باشد که نیاز به بررسی دقیق‌تر دارد.

تفسیر دقیق‌تر با استفاده از مثال‌ها

مثال 1: Load Average: 0.25, 0.30, 0.40

  • در این مثال، بار سیستم در 1 دقیقه، 5 دقیقه و 15 دقیقه به ترتیب 0.25، 0.30 و 0.40 است.
  • تحلیل: این مقادیر نشان می‌دهند که سیستم به‌طور کلی بار کمی دارد و همه چیز در حالت نرمال قرار دارد. سیستم در حال حاضر از توان پردازشی خود به‌طور مؤثر استفاده می‌کند و هیچ مشکلی در عملکرد آن مشاهده نمی‌شود.

مثال 2: Load Average: 3.5, 4.0, 4.2 (سیستم 4 هسته‌ای)

  • در این مثال، بار سیستم در هر سه بازه زمانی به مراتب بیشتر از 1 است.
  • تحلیل: برای یک سیستم چهار هسته‌ای، این مقادیر نشان‌دهنده فشار زیاد است. سیستم ممکن است به‌طور کامل بارگذاری شده باشد و ممکن است با کندی در پردازش‌ها مواجه شود. در این صورت، می‌توان به بررسی فرآیندهای در حال اجرا و بهینه‌سازی عملکرد سیستم پرداخته و منابع بیشتری را به آن اختصاص داد.

مثال 3: Load Average: 0.80, 0.85, 1.00

  • در این مثال، Load Average از 1 در 15 دقیقه عبور کرده است.
  • تحلیل: اگرچه هنوز بار سیستم کمتر از تعداد هسته‌ها است (برای سیستم چند هسته‌ای)، این می‌تواند نشان‌دهنده افزایش تدریجی فشار بر سیستم باشد. باید بررسی کرد که آیا این روند ادامه‌دار است یا خیر.

جمع‌بندی

  • Load Average نشان‌دهنده‌ی بار سیستم و تعداد فرآیندهایی است که در حال انتظار برای استفاده از CPU هستند. برای درک وضعیت سیستم و تشخیص مشکلات عملکردی، تفسیر صحیح Load Average ضروری است.
  • معمولاً مقدار Load Average باید کمتر از یا برابر با تعداد هسته‌های پردازشی سیستم باشد.
  • اگر Load Average به‌طور پیوسته بیشتر از تعداد هسته‌ها باشد، نیاز به بررسی منابع و ممکن است به بهینه‌سازی یا افزودن منابع بیشتر باشد.

با توجه به این اصول، شما می‌توانید عملکرد سیستم خود را بهتر نظارت کرده و مشکلات احتمالی را پیش از وقوع شناسایی و رفع کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”تحلیل داده‌های منابع برای شناسایی مشکلات” subtitle=”توضیحات کامل”]تحلیل داده‌های منابع یکی از مهم‌ترین گام‌ها در شناسایی مشکلات و بهینه‌سازی عملکرد سیستم‌ها است. تحلیل صحیح داده‌ها می‌تواند به شما کمک کند تا مشکلاتی مانند کندی عملکرد، خرابی‌های سیستم، یا افزایش مصرف منابع را شناسایی کرده و اقداماتی برای حل آن‌ها انجام دهید.

برای تحلیل داده‌های منابع، باید به مصرف منابع مختلف سیستم توجه کنید، از جمله CPU، حافظه (RAM)، دیسک و شبکه. در اینجا به برخی از مراحل و تکنیک‌های تحلیل داده‌های منابع برای شناسایی مشکلات می‌پردازیم.

1. تحلیل مصرف CPU

  • مقدار Load Average: همانطور که قبلاً توضیح داده شد، میزان Load Average اطلاعاتی درباره فشار CPU و فرآیندهای در حال اجرا می‌دهد. اگر Load Average به طور مداوم بیشتر از تعداد هسته‌های CPU باشد، نشان‌دهنده این است که بار سیستم بالا است و ممکن است نیاز به بررسی فرآیندهای در حال اجرا باشد.
  • مشاهده فرآیندهای سنگین: با استفاده از ابزارهایی مانند top یا htop می‌توانید فرآیندهایی که بیشترین میزان CPU را مصرف می‌کنند شناسایی کنید. اگر فرآیندی بدون دلیل خاصی منابع زیادی از CPU را مصرف کند، ممکن است یک مشکل یا اشتباه در کدنویسی باشد.
  • زمان CPU Idle: اگر زمان idle (زمانی که CPU مشغول نیست) بسیار کم باشد، این به این معنی است که سیستم در حالت فشرده قرار دارد و ممکن است با بار زیاد روبه‌رو شود.

مثال: اگر مشاهده کنید که Load Average سیستم شما برای مدت طولانی بیش از 2.0 (برای یک سیستم تک‌هسته‌ای) یا 8.0 (برای یک سیستم چهار هسته‌ای) است، این نشان‌دهنده مشکلات احتمالی در سیستم و بار زیاد است.

2. تحلیل مصرف حافظه (RAM)

  • مصرف حافظه: برای بررسی مصرف حافظه، می‌توانید از دستورات free -m یا top استفاده کنید. این دستورات میزان حافظه استفاده‌شده، آزاد و بافرها را نشان می‌دهند.
  • Memory Swap: اگر سیستم شما به طور مداوم از Swap (فضای دیسک به عنوان حافظه مجازی) استفاده می‌کند، ممکن است نشان‌دهنده کمبود حافظه باشد. این وضعیت به طور معمول باعث کندی شدید سیستم می‌شود زیرا دسترسی به دیسک بسیار کندتر از حافظه RAM است.
  • Memory Leaks: اگر یک فرآیند به طور مداوم حافظه را مصرف کند و از آن آزاد نکند، ممکن است با یک Memory Leak مواجه باشید. ابزارهایی مانند valgrind می‌توانند برای تشخیص نشت حافظه استفاده شوند.

مثال: اگر در خروجی free -m مشاهده کنید که حافظه سیستم به طور کامل مصرف شده و به swap منتقل شده است، این ممکن است نشان‌دهنده کمبود حافظه یا فرآیندهای سنگینی باشد که نیاز به حافظه دارند.

3. تحلیل مصرف دیسک

  • استفاده از دیسک: با استفاده از دستوراتی مانند df -h می‌توانید میزان فضای مصرف‌شده و فضای آزاد دیسک‌ها را مشاهده کنید. اگر فضای دیسک پر شود، می‌تواند باعث توقف سیستم یا کاهش عملکرد شود.
  • وضعیت I/O دیسک: دستور iostat می‌تواند به شما نشان دهد که آیا سیستم در حال انجام عملیات ورودی/خروجی (I/O) سنگین روی دیسک است. افزایش زمان انتظار I/O یا disk latency ممکن است نشان‌دهنده مشکلات در دسترسی به دیسک باشد.
  • Bottleneck در دیسک: اگر سیستم شما به طور مداوم درگیر خواندن و نوشتن از دیسک باشد و عملکرد سیستم پایین باشد، این ممکن است نشانه‌ای از Bottleneck در دیسک باشد. ابزارهایی مانند iotop می‌توانند به شما در شناسایی فرآیندهای I/O سنگین کمک کنند.

مثال: اگر مشاهده کنید که فضای دیسک یکی از پارتیشن‌ها به طور کامل پر شده است (مثلاً 100%)، این می‌تواند باعث خرابی یا کاهش عملکرد سیستم شود.

4. تحلیل مصرف شبکه

  • عرض باند شبکه: با استفاده از ابزارهایی مانند iftop یا nload می‌توانید میزان مصرف شبکه و پهنای باند را نظارت کنید. اگر سیستم شما به طور مداوم به پهنای باند زیادی نیاز داشته باشد، ممکن است فشار زیادی بر شبکه وارد شود و سرعت سیستم پایین بیاید.
  • پکت‌های ارسال و دریافت: با استفاده از دستورات netstat یا ss می‌توانید تعداد پکت‌های ارسال و دریافت‌شده را بررسی کنید. در صورتی که تعداد زیادی ارتباط شبکه‌ای یا پکت‌های مشکوک در حال ارسال باشند، ممکن است نشانه‌ای از یک حمله یا ترافیک غیرمجاز باشد.

مثال: اگر از دستور netstat استفاده کرده و تعداد زیادی اتصال به آدرس‌های غیرمعمول مشاهده کنید، این می‌تواند نشانه‌ای از حمله DDoS یا ترافیک غیرمجاز باشد.

5. تحلیل زمان‌های پاسخ (Latency)

  • زمان تأخیر: بررسی latency شبکه و دیسک بسیار مهم است. اگر زمان تأخیر در شبکه بالا باشد، ممکن است باعث کند شدن پردازش‌های شبکه‌ای شود. همچنین، بالا بودن زمان تأخیر در دیسک می‌تواند موجب کاهش سرعت دسترسی به داده‌ها شود.
  • دستورات مفید: ابزارهایی مانند ping برای اندازه‌گیری زمان تأخیر شبکه و iostat برای اندازه‌گیری زمان تأخیر در دیسک مفید هستند.

مثال: اگر از ابزار ping استفاده کنید و زمان تأخیر بالا (مثلاً بیش از 100ms) را مشاهده کنید، این می‌تواند نشان‌دهنده مشکلات شبکه باشد.

6. شناسایی Bottleneck

  • Bottleneck زمانی اتفاق می‌افتد که یکی از منابع سیستم (مثل CPU، حافظه، دیسک یا شبکه) باعث کندی عملکرد سیستم می‌شود. شناسایی Bottleneck‌ها بسیار حیاتی است زیرا نشان‌دهنده این است که کدام قسمت از سیستم نیاز به بهبود دارد.
  • برای شناسایی Bottleneck‌ها، می‌توانید به طور همزمان از ابزارهای نظارتی برای بررسی وضعیت منابع مختلف استفاده کنید. به عنوان مثال، اگر مصرف CPU بالا است ولی حافظه و دیسک معمولی هستند، ممکن است مشکل از پردازش‌های سنگین باشد.

مثال: اگر با استفاده از top مشاهده کنید که CPU به طور مداوم 100% مصرف می‌شود ولی حافظه و دیسک در حد نرمال هستند، این نشان‌دهنده Bottleneck در پردازش‌های CPU است.

جمع‌بندی

برای شناسایی مشکلات سیستم از طریق تحلیل داده‌های منابع، شما باید از ابزارهای مختلف برای نظارت بر مصرف CPU، حافظه، دیسک و شبکه استفاده کنید. مهم است که نه تنها از یک منبع بلکه از ترکیب چندین ابزار و معیار برای شناسایی مشکلات و Bottleneck‌ها استفاده کنید. در این راه، می‌توانید مشکلات را به موقع شناسایی کرده و برای بهینه‌سازی عملکرد سیستم اقدام کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”تشخیص گلوگاه‌ها و ارائه راه‌حل‌های اولیه” subtitle=”توضیحات کامل”]گلوگاه‌ها (Bottlenecks) به عواملی اطلاق می‌شود که باعث کاهش عملکرد سیستم یا یک بخش خاص از آن می‌شوند. این مشکلات می‌توانند در هر یک از اجزای سیستم، از جمله پردازنده (CPU)، حافظه (RAM)، دیسک، و شبکه وجود داشته باشند. شناسایی گلوگاه‌ها و حل آن‌ها برای بهبود عملکرد سیستم بسیار حیاتی است.

در ادامه به روش‌های تشخیص گلوگاه‌ها و راه‌حل‌های اولیه برای رفع آن‌ها می‌پردازیم:

1. گلوگاه CPU

  • تشخیص گلوگاه CPU: یکی از نشانه‌های معمول گلوگاه در CPU، بالا بودن دائمی میزان Load Average و مصرف 100% پردازنده است. این مشکل معمولاً زمانی اتفاق می‌افتد که تعداد زیادی فرآیند هم‌زمان در حال اجرا باشد و CPU نتواند به تمام درخواست‌ها پاسخ دهد.
  • ابزارهای تشخیص: برای تشخیص مصرف بالای CPU می‌توانید از ابزارهایی مانند top، htop یا mpstat استفاده کنید. این ابزارها فرآیندهایی را که بیشترین بار را بر روی CPU وارد می‌کنند، شناسایی می‌کنند.
  • راه‌حل‌ها:
    • بهینه‌سازی کد: ممکن است لازم باشد تا کد برنامه‌ها و اسکریپت‌ها بهینه‌سازی شوند.
    • استفاده از پردازش موازی: تقسیم بار پردازش به چندین هسته یا ماشین می‌تواند به کاهش فشار بر CPU کمک کند.
    • افزایش منابع سخت‌افزاری: اگر نیاز است، با ارتقاء سخت‌افزار (افزایش تعداد هسته‌های پردازنده) می‌توان مشکل را رفع کرد.

مثال: اگر مشاهده کنید که یک فرآیند به طور مداوم 100% از CPU را مصرف می‌کند، شاید لازم باشد آن فرآیند را بررسی کرده و بهینه‌سازی کنید یا منابع بیشتری برای آن تخصیص دهید.

2. گلوگاه حافظه (RAM)

  • تشخیص گلوگاه حافظه: زمانی که سیستم با کمبود حافظه مواجه می‌شود، از فضای swap (حافظه مجازی) استفاده می‌کند که به شدت موجب کاهش سرعت سیستم می‌شود. اگر سیستم مداوم از swap استفاده کند، این یک گلوگاه حافظه است.
  • ابزارهای تشخیص: ابزارهایی مانند free -m یا top برای بررسی وضعیت حافظه مفید هستند. اگر بخش زیادی از حافظه شما در swap قرار دارد، به احتمال زیاد با گلوگاه حافظه مواجه هستید.
  • راه‌حل‌ها:
    • اضافه کردن حافظه RAM: افزایش حافظه فیزیکی سیستم می‌تواند مشکل کمبود حافظه را برطرف کند.
    • مدیریت حافظه بهینه: بستن فرآیندهای غیرضروری و استفاده از ابزارهایی مانند OOM Killer برای خاتمه دادن به فرآیندهایی که حافظه زیادی مصرف می‌کنند، مفید است.
    • بهینه‌سازی برنامه‌ها: برخی از برنامه‌ها ممکن است بهینه‌سازی نشده باشند و حجم زیادی از حافظه را مصرف کنند. بررسی و بهینه‌سازی این برنامه‌ها می‌تواند به کاهش مصرف حافظه کمک کند.

مثال: اگر سیستم به طور مداوم از فضای swap استفاده می‌کند، ممکن است نیاز باشد که حافظه بیشتری نصب کنید یا فرآیندهای پرمصرف حافظه را شناسایی و مدیریت کنید.

3. گلوگاه دیسک

  • تشخیص گلوگاه دیسک: زمانی که سیستم نیاز به خواندن یا نوشتن سریع داده‌ها دارد، اما دیسک نمی‌تواند سرعت مناسبی را ارائه دهد، این مشکل می‌تواند به گلوگاه دیسک تبدیل شود. این گلوگاه‌ها معمولاً زمانی رخ می‌دهند که عملیات ورودی/خروجی (I/O) به شدت سنگین است.
  • ابزارهای تشخیص: ابزارهایی مانند iostat، iotop و dstat می‌توانند میزان استفاده از دیسک و زمان انتظار برای عملیات I/O را نشان دهند.
  • راه‌حل‌ها:
    • افزایش سرعت دیسک: استفاده از SSD به جای HDD می‌تواند زمان دسترسی به داده‌ها را کاهش دهد و گلوگاه دیسک را رفع کند.
    • تقسیم‌بندی دیسک: تقسیم‌بندی بهتر دیسک‌ها و استفاده از RAID می‌تواند کارایی دیسک را افزایش دهد.
    • مدیریت فرآیندهای I/O: اطمینان حاصل کنید که فرآیندهای I/O سنگین بهینه‌سازی شده‌اند و در زمان‌های مناسب اجرا می‌شوند.

مثال: اگر مشاهده کنید که دیسک سیستم در حال انجام تعداد زیادی عملیات ورودی/خروجی است و زمان انتظار برای هر عملیات زیاد است، ممکن است نیاز به استفاده از دیسک سریع‌تر یا بهینه‌سازی فرآیندهای I/O داشته باشید.

4. گلوگاه شبکه

  • تشخیص گلوگاه شبکه: زمانی که پهنای باند شبکه برای ارسال یا دریافت داده‌ها کافی نباشد، سیستم با گلوگاه شبکه مواجه می‌شود. این مشکلات معمولاً زمانی رخ می‌دهند که ترافیک شبکه زیاد است و سرور قادر به پاسخ‌گویی به تمام درخواست‌ها نیست.
  • ابزارهای تشخیص: ابزارهایی مانند iftop، nload و netstat برای بررسی مصرف پهنای باند شبکه و شناسایی اتصالات سنگین شبکه مفید هستند.
  • راه‌حل‌ها:
    • افزایش پهنای باند شبکه: ارتقای سخت‌افزار شبکه، مانند استفاده از کارت‌های شبکه با سرعت بالاتر یا استفاده از شبکه‌های با پهنای باند بیشتر، می‌تواند مشکلات مربوط به گلوگاه شبکه را رفع کند.
    • مدیریت ترافیک شبکه: استفاده از QoS (Quality of Service) و تقسیم‌بندی ترافیک می‌تواند به کاهش ترافیک سنگین و توزیع مناسب منابع شبکه کمک کند.
    • فشرده‌سازی داده‌ها: فشرده‌سازی داده‌ها قبل از ارسال آن‌ها می‌تواند به کاهش حجم داده‌های منتقل‌شده در شبکه کمک کند.

مثال: اگر مشاهده کنید که استفاده از شبکه به طور مداوم بالاست و زمان تأخیر نیز زیاد است، ممکن است نیاز به بهبود پهنای باند یا مدیریت بهینه ترافیک شبکه داشته باشید.

5. گلوگاه‌های نرم‌افزاری

  • تشخیص گلوگاه نرم‌افزاری: برخی از گلوگاه‌ها ممکن است در کد برنامه‌ها و نرم‌افزارها باشند. این گلوگاه‌ها می‌توانند ناشی از الگوریتم‌های ناکارآمد، مشکلات همزمانی یا استفاده غیرموثر از منابع سیستم باشند.
  • ابزارهای تشخیص: استفاده از ابزارهای پروفایلینگ مانند gprof و perf می‌تواند به شناسایی مشکلات کارایی در سطح کد کمک کند.
  • راه‌حل‌ها:
    • بهینه‌سازی کد: با تحلیل کد و شناسایی بخش‌هایی که زمان زیادی را مصرف می‌کنند، می‌توان کارایی نرم‌افزار را بهبود بخشید.
    • استفاده از کش‌ها و ذخیره‌سازی داده‌ها: استفاده از کش‌های مناسب می‌تواند از بار اضافی بر روی منابع سیستم جلوگیری کند.

مثال: اگر یک برنامه زمان زیادی را برای پردازش یک بخش خاص از داده‌ها صرف کند، ممکن است نیاز باشد تا آن بخش از کد بهینه‌سازی شود.

جمع‌بندی

شناسایی گلوگاه‌ها یکی از گام‌های حیاتی در بهینه‌سازی عملکرد سیستم است. با استفاده از ابزارهای نظارتی و تحلیل داده‌ها می‌توان به راحتی گلوگاه‌های مختلف سیستم را شناسایی کرد. پس از شناسایی گلوگاه‌ها، راه‌حل‌های اولیه برای رفع آن‌ها شامل بهینه‌سازی کد، ارتقای سخت‌افزار، یا بهبود مدیریت منابع سیستم می‌باشد. در نهایت، بهینه‌سازی عملکرد سیستم نیازمند رویکردی چندجانبه است که شامل تحلیل دقیق و اقدامات به موقع برای رفع مشکلات می‌شود.[/cdb_course_lesson][cdb_course_lesson title=”فصل 8. آمادگی برای عیب‌یابی پیشرفته”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”شناخت محدودیت‌های ابزارهای نظارت” subtitle=”توضیحات کامل”]ابزارهای نظارت بر عملکرد سیستم نقش حیاتی در شناسایی و رفع مشکلات عملکردی دارند. با این حال، هیچ ابزار نظارتی کاملاً بی‌عیب و نقص نیست و هرکدام محدودیت‌هایی دارند که باید در نظر گرفته شوند. درک این محدودیت‌ها می‌تواند به شما کمک کند تا به بهترین شکل از ابزارها استفاده کنید و از اشتباهات احتمالی جلوگیری کنید. در ادامه به برخی از محدودیت‌های رایج ابزارهای نظارتی پرداخته‌ایم:

1. محدودیت‌های دقت و صحت داده‌ها

  • پایین بودن دقت اندازه‌گیری‌ها: برخی ابزارهای نظارت ممکن است دقت لازم برای اندازه‌گیری دقیق برخی پارامترهای سیستم را نداشته باشند. به‌ویژه در سیستم‌های پیچیده یا با منابع محدود، ممکن است ابزار نتواند داده‌ها را به‌طور صحیح و در زمان واقعی جمع‌آوری کند.
  • داده‌های ناقص: گاهی ابزارها قادر به ثبت داده‌ها به‌صورت کامل نیستند و ممکن است در زمان‌های اوج بار سیستم، داده‌هایی را از دست بدهند. این می‌تواند به تحلیل نادرست وضعیت سیستم منجر شود.

2. مصرف منابع ابزارهای نظارتی

  • اثر منفی بر عملکرد سیستم: برخی از ابزارهای نظارتی خود مصرف بالایی از منابع سیستم دارند. ابزارهایی که برای نظارت در زمان واقعی طراحی شده‌اند، ممکن است منابع CPU یا حافظه را مصرف کرده و خود به گلوگاهی برای سیستم تبدیل شوند.
  • افزایش بار بر روی سیستم: ابزارهایی که بار زیادی بر روی سیستم می‌گذارند، ممکن است در برخی شرایط منجر به شبیه‌سازی گلوگاه شوند، حتی اگر سیستم در حالت عادی عملکرد مناسبی داشته باشد. این مسأله به‌ویژه در سیستم‌های با منابع محدود یا بار سنگین اهمیت دارد.

3. محدودیت در تحلیل داده‌ها

  • کمبود تحلیل‌های پیشرفته: برخی ابزارهای نظارتی تنها داده‌های خام را جمع‌آوری می‌کنند و امکان تجزیه و تحلیل پیشرفته مانند تحلیل روند (Trend Analysis) یا پیش‌بینی مشکلات در آینده را فراهم نمی‌کنند. به‌ویژه برای شناسایی گلوگاه‌های پنهان و تحلیل دقیق نیاز به ابزارهای پیچیده‌تری دارید.
  • کمبود درک عمیق از مشکلات: بسیاری از ابزارها قادر به شناسایی مشکلات سطح بالا هستند، اما نمی‌توانند دلایل دقیق آن‌ها را شبیه‌سازی یا تجزیه‌وتحلیل کنند. به‌طور مثال، ممکن است ابزارها مصرف بالای CPU را شناسایی کنند اما قادر به شناسایی علت آن (مثلاً نقص در کد برنامه) نباشند.

4. محدودیت در مقیاس‌پذیری

  • عدم پشتیبانی از مقیاس‌های بزرگ: ابزارهای نظارتی معمولاً برای سیستم‌های کوچک یا متوسط طراحی شده‌اند. در مقیاس‌های بزرگ، ابزارها ممکن است دچار مشکل شوند و به‌درستی قادر به نظارت بر تمامی اجزای سیستم یا چندین سرور به‌طور همزمان نباشند.
  • مسائل مربوط به مدیریت داده‌های عظیم: در سیستم‌های بزرگ و پیچیده، جمع‌آوری و ذخیره‌سازی داده‌ها برای مدت زمان طولانی می‌تواند به یک چالش تبدیل شود. ابزارهایی که برای ذخیره‌سازی داده‌های تاریخی یا مقیاس‌پذیری در سطح کلان طراحی نشده‌اند، ممکن است با مشکلاتی مانند کمبود فضای ذخیره‌سازی یا کاهش سرعت پاسخ‌دهی مواجه شوند.

5. محدودیت در شناسایی مشکلات نرم‌افزاری پیچیده

  • عدم تشخیص مشکلات نرم‌افزاری خاص: برخی از مشکلات نرم‌افزاری پیچیده مانند مشکلات مربوط به همزمانی (Concurrency Issues) یا مشکلات خاص در کد، به راحتی توسط ابزارهای نظارتی قابل شناسایی نیستند. این مشکلات ممکن است فقط در شرایط خاص یا در بارهای سنگین نمایان شوند و ابزارهای نظارتی قادر به شبیه‌سازی یا شناسایی آن‌ها نباشند.
  • عدم تشخیص گلوگاه‌های نرم‌افزاری: ابزارهای نظارتی ممکن است قادر به شناسایی گلوگاه‌های سخت‌افزاری مانند استفاده بیش از حد از CPU یا حافظه باشند، اما مشکلات مربوط به کد برنامه‌ها که باعث استفاده غیرموثر از منابع می‌شود، معمولاً توسط این ابزارها شناسایی نمی‌شود.

6. وابستگی به تنظیمات و پیکربندی ابزارها

  • پیکربندی نادرست: بسیاری از ابزارهای نظارتی نیاز به پیکربندی و تنظیمات دقیق دارند. اگر این تنظیمات به‌درستی انجام نشوند، ممکن است ابزارها داده‌های نادرستی ارائه دهند یا قادر به شناسایی مشکلات به‌طور دقیق نباشند.
  • پیکربندی پیچیده در سیستم‌های بزرگ: در سیستم‌های پیچیده با چندین بخش مختلف، پیکربندی صحیح ابزارهای نظارتی و پیوند دادن آن‌ها به‌طور صحیح به یکدیگر می‌تواند چالش‌برانگیز باشد.

7. محدودیت در کارایی در محیط‌های پویا

  • سختی در ردیابی تغییرات در زمان واقعی: ابزارهای نظارتی ممکن است برای محیط‌های با تغییرات سریع مناسب نباشند. به‌ویژه در سیستم‌های توزیع‌شده یا محیط‌های ابری که منابع به‌طور پویا اضافه یا حذف می‌شوند، ردیابی دقیق وضعیت منابع و مشکلات به‌صورت لحظه‌ای مشکل است.
  • شناسایی تغییرات کوچک یا کوتاه‌مدت: ابزارهای نظارتی ممکن است در شناسایی تغییرات کوچک یا مشکلات مقطعی که برای مدت کوتاه رخ می‌دهند، ناتوان باشند. به‌ویژه اگر این تغییرات سریع باشند، شناسایی آن‌ها برای ابزارهای نظارتی معمولی دشوار است.

8. محدودیت در نظارت بر مقادیر وابسته به زمان

  • عدم توانایی در پیش‌بینی مشکلات آینده: اکثر ابزارهای نظارتی فقط وضعیت سیستم را در زمان حال نمایش می‌دهند. آن‌ها قادر به پیش‌بینی مشکلات آینده یا ارائه پیشنهاداتی برای جلوگیری از وقوع مشکلات نیستند، مگر اینکه با ابزارهای تحلیل داده‌های پیشرفته یا یادگیری ماشین ترکیب شوند.

جمع‌بندی

در نهایت، ابزارهای نظارتی بر اساس نوع سیستم و نیازهای خاص شما می‌توانند مفید یا ناکافی باشند. شناخت محدودیت‌های این ابزارها، از جمله دقت داده‌ها، مصرف منابع، مشکلات مقیاس‌پذیری و تحلیل‌های محدود، به شما کمک می‌کند تا تصمیمات آگاهانه‌تری در مورد انتخاب ابزارها و نحوه استفاده از آن‌ها بگیرید. برای بهینه‌سازی عملکرد سیستم و جلوگیری از مشکلات، ترکیب ابزارهای نظارتی مختلف و تجزیه و تحلیل دقیق داده‌ها به‌طور مداوم ضروری است.

 

 [/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”آماده‌سازی سیستم برای تحلیل دقیق‌تر در مراحل بعدی” subtitle=”توضیحات کامل”]آماده‌سازی سیستم برای تحلیل دقیق‌تر و شناسایی مشکلات عملکردی به‌طور مؤثر، یکی از مراحل کلیدی در فرآیند نظارت و بهینه‌سازی سیستم‌ها است. برای اینکه ابزارهای نظارتی بتوانند به‌طور مؤثر و دقیق داده‌های مورد نیاز را جمع‌آوری کنند و مشکلات را شناسایی نمایند، باید سیستم به‌طور مناسبی آماده‌سازی شود. این آماده‌سازی شامل مجموعه‌ای از اقدامات برای بهبود دقت جمع‌آوری داده‌ها، تنظیمات مناسب ابزارهای نظارتی، و اطمینان از دسترسی صحیح به منابع است.

در اینجا مراحل مهم برای آماده‌سازی سیستم برای تحلیل دقیق‌تر را بررسی می‌کنیم:

1. نصب و پیکربندی ابزارهای نظارت

  • نصب ابزارهای نظارتی: اولین گام در آماده‌سازی سیستم، نصب ابزارهای نظارتی مناسب است. این ابزارها باید قابلیت نظارت بر منابع مختلف مانند CPU، حافظه، دیسک و شبکه را داشته باشند.
  • پیکربندی ابزارها: پس از نصب، باید تنظیمات این ابزارها به‌گونه‌ای پیکربندی شوند که به‌طور دقیق داده‌های مربوط به عملکرد سیستم را جمع‌آوری کنند. در این مرحله، باید مشخص شود که کدام منابع و متغیرها برای نظارت انتخاب شوند.
  • مثال: نصب و پیکربندی ابزارهایی مانند htop, dstat, یا Glances برای نظارت بر منابع سیستم و اطمینان از اینکه تنظیمات پیش‌فرض تغییر یافته و مناسب نیازهای خاص سیستم شده‌اند.

2. فعال‌سازی و تنظیم لاگ‌ها (Logs)

  • فعال‌سازی لاگ‌ها: برای جمع‌آوری داده‌های دقیق‌تر و تجزیه و تحلیل مشکلات در مراحل بعدی، باید سیستم قادر به ثبت لاگ‌های مربوط به عملکرد و رویدادهای مختلف باشد.
  • تنظیم سطوح لاگ‌گیری: باید اطمینان حاصل شود که سطوح لاگ‌گیری به‌طور مناسب تنظیم شده است. سطح لاگ‌گیری باید متناسب با نیازهای نظارتی و تجزیه و تحلیل سیستم باشد. در برخی موارد، ممکن است لازم باشد که لاگ‌های دقیق‌تری از فعالیت‌های پردازشی، مشکلات و خرابی‌ها ذخیره شوند.
  • مثال: تنظیم سرویس‌هایی مانند syslog یا journald برای ثبت وقایع سیستمی و اجرای دستورات برای بررسی و ذخیره‌سازی لاگ‌های مهم.

3. پیکربندی هشدارها و آلارم‌ها

  • ایجاد آلارم‌های مناسب: برای شناسایی مشکلات به‌طور سریع، باید آلارم‌ها و هشدارهایی بر اساس معیارهای خاص مانند مصرف بالای CPU، استفاده بیش از حد از حافظه، یا خرابی دیسک تنظیم شوند. این آلارم‌ها باید به‌گونه‌ای تنظیم شوند که مدیر سیستم در صورت بروز مشکل فوری به آن آگاه شود.
  • تنظیم معیارهای آلارم: برای اینکه آلارم‌ها مؤثر باشند، باید معیارهایی دقیقاً بر اساس نوع سیستم و نیازهای خاص آن تنظیم شوند. این معیارها می‌توانند از سطح‌های خاصی از مصرف منابع تا خطاهای سیستمی مختلف متغیر باشند.
  • مثال: تنظیم آلارم‌ها در Prometheus برای اطلاع‌رسانی در صورت افزایش مصرف منابع از آستانه‌های تعیین‌شده.

4. جمع‌آوری و ذخیره داده‌های تاریخی

  • تنظیم ذخیره‌سازی داده‌های تاریخی: برای تحلیل دقیق‌تر در مراحل بعدی، لازم است داده‌های جمع‌آوری‌شده توسط ابزارهای نظارتی ذخیره شوند. این داده‌ها باید برای مدت زمان مشخصی نگهداری شوند تا مدیران سیستم بتوانند روندهای بلندمدت را مشاهده کرده و مشکلات احتمالی که در گذر زمان بروز می‌کنند را شناسایی کنند.
  • پیکربندی ذخیره‌سازی داده‌ها: باید تعیین شود که داده‌ها در کجا ذخیره شوند (به عنوان مثال، در دیتابیس‌ها، فایل‌ها یا سیستم‌های ذخیره‌سازی ابری) و برای دسترسی سریع به آن‌ها باید ساختار مناسبی برای ذخیره‌سازی ایجاد شود.
  • مثال: استفاده از InfluxDB برای ذخیره داده‌های تاریخی جمع‌آوری‌شده توسط Telegraf و Grafana برای تجزیه و تحلیل این داده‌ها در آینده.

5. ایجاد نمودارها و داشبوردهای تجزیه و تحلیل

  • ساخت داشبوردهای تجزیه و تحلیل: برای کمک به تجزیه و تحلیل داده‌ها در مراحل بعدی، باید داشبوردهایی ساخته شوند که داده‌های جمع‌آوری‌شده را به‌صورت گرافیکی و قابل‌فهم نمایش دهند. این داشبوردها باید شامل نمودارهای مختلف مانند نمودارهای خطی، میله‌ای و دایره‌ای برای مشاهده مصرف منابع و دیگر شاخص‌های عملکردی باشند.
  • پیکربندی ابزارهای تجزیه و تحلیل: ابزارهایی مانند Grafana می‌توانند برای نمایش و تجزیه و تحلیل داده‌ها در قالب داشبوردهای مختلف استفاده شوند.
  • مثال: ساخت داشبورد در Grafana برای نظارت بر عملکرد CPU، مصرف حافظه، و استفاده از دیسک.

6. آزمایش و اعتبارسنجی ابزارها

  • آزمایش و شبیه‌سازی بار: پس از نصب و پیکربندی ابزارهای نظارتی، باید سیستم آزمایش شود تا مطمئن شویم که همه ابزارها به‌درستی کار می‌کنند و داده‌ها به‌درستی جمع‌آوری می‌شوند. آزمایش‌های بار می‌توانند برای بررسی پاسخگویی سیستم و صحت داده‌ها انجام شوند.
  • اعتبارسنجی آلارم‌ها و هشدارها: باید آلارم‌ها و هشدارها را بررسی کرد تا مطمئن شویم که آن‌ها در شرایط مختلف به‌درستی فعال می‌شوند.
  • مثال: اجرای تست‌های بار مصنوعی با استفاده از ابزارهایی مانند stress یا stress-ng برای شبیه‌سازی بار پردازشی و بررسی پاسخ سیستم.

7. مستندسازی فرآیندهای نظارتی

  • مستندسازی تنظیمات و فرآیندها: تمامی تنظیمات انجام‌شده برای ابزارهای نظارت باید مستند شوند. این مستندات باید شامل اطلاعاتی در مورد پیکربندی‌ها، معیارهای آلارم‌ها، تنظیمات ذخیره‌سازی داده‌ها، و نحوه دسترسی به داشبوردها و گزارش‌ها باشد.
  • مثال: مستندسازی نحوه تنظیم Prometheus، Grafana، و نحوه پیکربندی آلارم‌ها و ذخیره‌سازی داده‌ها.

جمع بندی

آماده‌سازی سیستم برای تحلیل دقیق‌تر در مراحل بعدی نیازمند تنظیمات دقیق و بررسی مداوم است. با پیکربندی صحیح ابزارهای نظارتی، فعال‌سازی لاگ‌ها، ذخیره‌سازی داده‌های تاریخی، و ایجاد آلارم‌ها و داشبوردهای مؤثر، می‌توان به‌راحتی مشکلات عملکردی را شناسایی و تحلیل کرد. این آماده‌سازی همچنین شامل شبیه‌سازی بار، آزمایش صحت ابزارها و مستندسازی دقیق است که به مدیران سیستم کمک می‌کند تا روند نظارت و تجزیه و تحلیل عملکرد را بهینه کنند و مشکلات را در سریع‌ترین زمان شناسایی و رفع نمایند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”ارتباط بین نظارت و بهینه‌سازی” subtitle=”توضیحات کامل”]نظارت و بهینه‌سازی دو بخش حیاتی در مدیریت عملکرد سیستم‌ها هستند که به‌طور مستقیم به یکدیگر وابسته‌اند و همکاری مؤثری دارند. درک این ارتباط می‌تواند به شناسایی مشکلات و رفع آن‌ها، بهبود عملکرد سیستم‌ها، و دستیابی به بهره‌وری بیشتر کمک کند.

1. نظارت به‌عنوان پیش‌نیاز بهینه‌سازی

نظارت بر عملکرد سیستم‌ها به مدیران این امکان را می‌دهد که وضعیت فعلی سیستم‌ها را مشاهده کرده و اطلاعات دقیقی از منابع مصرفی، زمان‌بندی پردازش‌ها، و وضعیت کلی سیستم به‌دست آورند. این اطلاعات اولیه به مدیران سیستم کمک می‌کند تا مشکلات موجود و مناطق ضعیف را شناسایی کنند و بر اساس آن‌ها تصمیمات بهینه‌سازی صحیح بگیرند.

مثال: اگر نظارت نشان دهد که مصرف CPU در ساعات اوج بسیار بالا است، این داده‌ها می‌تواند به مدیر سیستم کمک کند تا بهینه‌سازی‌هایی مانند تنظیم دوباره فرآیندها یا تخصیص منابع اضافی به سیستم اعمال کند.

2. شناسایی گلوگاه‌ها (Bottlenecks)

یکی از مهم‌ترین کارکردهای نظارت، شناسایی گلوگاه‌ها است. گلوگاه‌ها به نواحی اشاره دارند که عملکرد سیستم به‌دلیل محدودیت‌های منابع (مانند پردازنده، حافظه، دیسک یا شبکه) کاهش می‌یابد. وقتی یک گلوگاه شناسایی می‌شود، می‌توان آن را به‌عنوان نقطه تمرکز برای بهینه‌سازی در نظر گرفت.

مثال: اگر ابزارهای نظارت نشان دهند که بخش‌هایی از برنامه تحت فشار شبکه قرار دارند، می‌توان سرعت شبکه را افزایش داده یا از روش‌های فشرده‌سازی داده‌ها برای بهبود عملکرد استفاده کرد.

3. تحلیل داده‌ها و تصمیم‌گیری بهینه

داده‌های جمع‌آوری‌شده از ابزارهای نظارتی مانند htop، dstat یا Grafana به مدیران سیستم کمک می‌کنند تا رفتار سیستم را به‌طور دقیق تحلیل کرده و تصمیمات بهینه‌سازی را اتخاذ کنند. به‌عنوان مثال، اگر ابزار نظارتی نشان دهد که برخی سرویس‌ها بیشتر از سایر سرویس‌ها از منابع استفاده می‌کنند، می‌توان تصمیماتی مانند توزیع بهتر بار بین سرورها یا ارتقاء منابع سخت‌افزاری را اتخاذ کرد.

4. بررسی و اعمال تنظیمات بر اساس داده‌ها

پس از نظارت دقیق و جمع‌آوری داده‌ها، بهینه‌سازی‌ها می‌توانند به‌طور دقیق‌تری اعمال شوند. این بهینه‌سازی‌ها می‌تواند شامل بهبود تنظیمات سیستم، تغییر در تنظیمات نرم‌افزاری، یا ارتقاء منابع سخت‌افزاری باشد. به‌طور مثال، تغییر پارامترهای پیکربندی سرور، افزایش تعداد هسته‌های پردازنده، یا اضافه کردن حافظه اضافی می‌تواند پس از شناسایی نیازها از طریق نظارت انجام شود.

5. آزمایش و بازبینی پس از بهینه‌سازی

پس از اعمال تغییرات بهینه‌سازی، نظارت ادامه‌دار بر سیستم‌ها ضروری است تا اطمینان حاصل شود که تغییرات اعمال‌شده تأثیرات مثبت و مطلوبی داشته‌اند. با استفاده از ابزارهای نظارتی، می‌توان بررسی کرد که آیا بهینه‌سازی‌ها باعث افزایش عملکرد یا کاهش مشکلات شده‌اند یا خیر. این فرایند می‌تواند شامل تجزیه و تحلیل مجدد Load Average، مصرف منابع و latency باشد.

مثال: پس از بهینه‌سازی شبکه، نظارت می‌تواند نشان دهد که بار شبکه کاهش یافته و زمان پاسخگویی سرویس‌ها بهبود یافته است.

6. نظارت مداوم و بهینه‌سازی پیوسته

یکی از اصول کلیدی در بهینه‌سازی این است که این فرایند یک تلاش پیوسته است. سیستم‌ها در طول زمان تغییر می‌کنند و نیاز به بهینه‌سازی مستمر دارند. نظارت مداوم امکان شناسایی مشکلات جدید یا تغییرات در عملکرد را فراهم می‌آورد و به این ترتیب بهینه‌سازی‌ها باید به‌طور دوره‌ای بازبینی و به‌روز شوند.

مثال: پس از افزایش ترافیک وب‌سایت، ممکن است نیاز به بهینه‌سازی دوباره سرورها یا تنظیمات نرم‌افزاری برای مقابله با بار اضافی باشد.

جمع بندی

در نهایت، نظارت و بهینه‌سازی یک روند دایمی و مکمل هستند. نظارت داده‌ها و شاخص‌های کلیدی عملکرد را فراهم می‌آورد که به شناسایی مشکلات، گلوگاه‌ها و نواحی نیازمند بهینه‌سازی کمک می‌کند. سپس این داده‌ها به‌عنوان مبنای تصمیم‌گیری برای بهینه‌سازی سیستم‌ها استفاده می‌شود. پس از اعمال بهینه‌سازی‌ها، نظارت ادامه می‌یابد تا تأثیر تغییرات بررسی شده و در صورت لزوم، اصلاحات بیشتر اعمال شوند. این چرخه باعث می‌شود که سیستم‌ها همواره به‌طور بهینه و بدون مشکلات عمده عمل کنند.[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 2. نظارت بر پردازش‌ها”][cdb_course_lesson title=”فصل 1. مقدمه‌ای بر پردازش‌ها در لینوکس”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”تعریف پردازش (Process) و تفاوت آن با Thread” subtitle=”توضیحات کامل”]

پردازش (Process)

پردازش یک واحد مستقل از اجرای برنامه است که در سیستم‌عامل لینوکس به‌طور مجزا اجرا می‌شود. هر پردازش دارای فضای حافظه مخصوص به خود است و از سایر پردازش‌ها به‌طور کامل ایزوله است. در حقیقت، پردازش‌ها به‌عنوان برنامه‌های در حال اجرا شناخته می‌شوند و هر پردازش به‌طور مستقل منابع سیستم (مانند CPU، حافظه، و دیسک) را مدیریت می‌کند.

یک پردازش می‌تواند شامل یک یا چند رشته (Thread) باشد که به‌طور هم‌زمان فعالیت می‌کنند. پردازش‌ها می‌توانند از یکدیگر کاملاً جدا بوده و دارای حافظه و منابع اختصاصی خود باشند. به‌عبارت دیگر، پردازش‌ها می‌توانند با یکدیگر تعامل داشته باشند، اما فضای حافظه و داده‌های آن‌ها جدا از یکدیگر است.

ویژگی‌های پردازش:

  1. فضای حافظه اختصاصی: هر پردازش فضای حافظه خود را دارد و از فضای حافظه سایر پردازش‌ها جدا است.
  2. ایزولاسیون: پردازش‌ها از یکدیگر به‌طور کامل ایزوله هستند و به هم دسترسی ندارند.
  3. منابع اختصاصی: پردازش‌ها می‌توانند منابع خاص خود را داشته باشند.
  4. مستقل بودن: پردازش‌ها به‌طور مستقل اجرا می‌شوند.

Thread (رشته)

رشته یا Thread واحدی از اجرای پردازش است که به‌طور هم‌زمان در داخل یک پردازش اجرا می‌شود. برخلاف پردازش‌ها، رشته‌ها فضای حافظه مشترک دارند و می‌توانند با یکدیگر داده‌ها را به‌اشتراک بگذارند. این اشتراک‌گذاری داده‌ها باعث می‌شود که ارتباط بین رشته‌ها بسیار سریع‌تر از پردازش‌ها باشد. با این حال، رشته‌ها به‌خاطر این اشتراک‌گذاری منابع، ممکن است تحت تاثیر مشکلاتی مانند شرایط مسابقه (Race Condition) قرار بگیرند.

ویژگی‌های رشته:

  1. اشتراک‌گذاری فضای حافظه: تمام رشته‌ها در یک پردازش از فضای حافظه مشترک استفاده می‌کنند.
  2. سرعت ارتباط بالاتر: به‌خاطر اشتراک‌گذاری داده‌ها، رشته‌ها می‌توانند سریع‌تر از پردازش‌ها با یکدیگر ارتباط برقرار کنند.
  3. هزینه کمتر: ایجاد و مدیریت رشته‌ها نسبت به پردازش‌ها به‌طور معمول هزینه کمتری دارد.

تفاوت‌های اصلی بین پردازش و رشته:

  1. فضای حافظه:
    • پردازش‌ها فضای حافظه مختص خود را دارند و از دیگر پردازش‌ها جدا هستند.
    • رشته‌ها از فضای حافظه یک پردازش مشترک استفاده می‌کنند.
  2. هزینه‌های سیستمی:
    • ایجاد و مدیریت پردازش‌ها هزینه بالاتری دارد زیرا هر پردازش منابع خاص خود را اشغال می‌کند.
    • رشته‌ها هزینه کمتری دارند زیرا منابع مشترک استفاده می‌کنند.
  3. مستقل بودن:
    • پردازش‌ها از یکدیگر مستقل هستند و اگر یک پردازش دچار مشکل شود، پردازش‌های دیگر تحت تأثیر قرار نمی‌گیرند.
    • رشته‌ها وابسته به پردازش مادر خود هستند و خطای یک رشته می‌تواند سایر رشته‌ها را تحت تأثیر قرار دهد.
  4. سرعت ارتباط:
    • پردازش‌ها برای ارتباط با یکدیگر نیاز به مکانیزم‌هایی مانند IPC (Inter-Process Communication) دارند که می‌تواند کندتر باشد.
    • رشته‌ها می‌توانند سریع‌تر از پردازش‌ها با یکدیگر ارتباط برقرار کنند زیرا فضای حافظه مشترک دارند.

جمع‌بندی

در نهایت، پردازش‌ها و رشته‌ها دو مفهومی هستند که در سیستم‌عامل‌ها برای مدیریت اجرای برنامه‌ها استفاده می‌شوند. پردازش‌ها واحدهای مستقلی هستند که منابع خاص خود را دارند، در حالی که رشته‌ها واحدهای اجرایی کوچکتر و سریع‌تری هستند که فضای حافظه مشترک استفاده می‌کنند. تفاوت‌های این دو در نحوه مدیریت منابع، سرعت ارتباط، و هزینه‌های سیستمی نقش مهمی در انتخاب استفاده از هر یک ایفا می‌کند.

 [/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”ساختار پردازش‌ها در لینوکس: Parent و Child Processes” subtitle=”توضیحات کامل”]در سیستم‌عامل لینوکس، هر پردازش دارای یک Parent Process (پردازش والد) و یک یا چند Child Process (پردازش فرزند) است. این مدل از پردازش‌ها نشان‌دهنده یک ساختار درختی است که در آن هر پردازش می‌تواند پردازش‌های جدیدی را ایجاد کند.

پردازش والد (Parent Process)

پردازش والد، پردازشی است که پردازش‌های فرزند را ایجاد می‌کند. به‌طور معمول، پردازش اصلی که از آن سیستم‌عامل شروع به کار می‌کند، init process یا در نسخه‌های جدید لینوکس systemd است که پردازش والد همه دیگر پردازش‌ها به شمار می‌آید. این پردازش مسئول مدیریت سایر پردازش‌ها و ایجاد آن‌ها از طریق سیستم‌عامل است.

هر پردازش والد می‌تواند یک یا چند پردازش فرزند ایجاد کند. برای مثال، وقتی شما در ترمینال یک برنامه مانند firefox را اجرا می‌کنید، پردازش ترمینال به‌عنوان پردازش والد و firefox به‌عنوان پردازش فرزند در نظر گرفته می‌شود.

پردازش فرزند (Child Process)

پردازش فرزند به پردازشی اطلاق می‌شود که توسط یک پردازش والد ایجاد می‌شود. این پردازش‌ها معمولاً از پردازش والد خود داده‌ها یا منابعی را به ارث می‌برند، اما می‌توانند مستقل از پردازش والد خود اجرا شوند. پردازش فرزند ممکن است بتواند پردازش‌های فرزند دیگری نیز ایجاد کند، که به این ترتیب یک سلسله‌مراتب یا درخت از پردازش‌ها به وجود می‌آید.

در لینوکس، پردازش‌ها به‌وسیله فرمان fork() ایجاد می‌شوند. این فرمان یک کپی از پردازش والد را ایجاد کرده و آن را به پردازش فرزند تبدیل می‌کند. پس از آن، پردازش فرزند می‌تواند رفتار متفاوتی نسبت به پردازش والد خود داشته باشد.

تفاوت‌های اصلی بین پردازش والد و پردازش فرزند:

  1. ایجاد پردازش:
    • پردازش والد پردازش فرزند را با استفاده از دستور fork() ایجاد می‌کند.
    • پردازش فرزند از پردازش والد خود کپی می‌شود و می‌تواند پردازش‌های جدیدتری ایجاد کند.
  2. اشتراک منابع:
    • پردازش‌های فرزند معمولاً از منابع پردازش والد مانند فضای حافظه و فایل‌های باز به‌صورت مشترک استفاده می‌کنند.
    • پردازش فرزند می‌تواند منابع جدیدی را اختصاص دهد که مختص خودش باشد.
  3. شخصیت پردازش:
    • پردازش والد معمولاً یک برنامه اصلی است که وظیفه کنترل و نظارت بر اجرای پردازش‌ها را بر عهده دارد.
    • پردازش فرزند می‌تواند به اجرای وظایف خاص بپردازد و بعد از اتمام کار خود، از پردازش والد جدا شود.
  4. مدیریت پردازش‌ها:
    • پردازش والد مسئول مدیریت پردازش‌های فرزند خود است و باید به آن‌ها اجازه دهد تا تمام منابع اختصاصی خود را آزاد کنند.
    • پردازش فرزند بعد از اتمام وظیفه خود به پردازش والد اطلاع می‌دهد که کار خود را تمام کرده است و پردازش والد پردازش فرزند را از حافظه حذف می‌کند.

فرآیند Forking در لینوکس

در لینوکس، استفاده از فرمان fork() برای ایجاد پردازش‌های جدید بسیار رایج است. این فرمان در واقع یک کپی از پردازش والد می‌سازد و پردازش فرزند تمام داده‌ها و کدهای پردازش والد را به ارث می‌برد.

در صورتی که پردازش فرزند نیاز به تغییر رفتار خود داشته باشد، از دستور exec() استفاده می‌کند. این دستور می‌تواند به پردازش فرزند کدی جدید بدهد تا پردازش جدیدی در همان فضای حافظه اجرا شود.

نحوه ارتباط پردازش‌ها:

پردازش‌های والد و فرزند معمولاً از طریق پایپ‌ها (Pipes) یا سگنال‌ها (Signals) با یکدیگر ارتباط برقرار می‌کنند. به‌عنوان مثال، اگر پردازش فرزند بخواهد پیامی را به پردازش والد ارسال کند، از یک سگنال یا پایپ استفاده خواهد کرد.

جمع‌بندی

در سیستم‌عامل لینوکس، پردازش‌ها به‌صورت یک درخت سلسله‌مراتبی عمل می‌کنند که در آن هر پردازش والد می‌تواند یک یا چند پردازش فرزند را ایجاد کند. پردازش‌های فرزند معمولاً از پردازش والد خود منابع به ارث می‌برند و می‌توانند پردازش‌های جدیدی را آغاز کنند. ارتباط بین پردازش‌ها از طریق مکانیزم‌هایی مانند پایپ‌ها و سگنال‌ها صورت می‌گیرد و هر پردازش در پایان باید منابع خود را آزاد کرده و از سیستم خارج شود.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”اهمیت نظارت بر پردازش‌ها برای بهبود عملکرد سیستم” subtitle=”توضیحات کامل”]نظارت بر پردازش‌ها یکی از بخش‌های حیاتی در مدیریت و بهینه‌سازی عملکرد سیستم‌های لینوکسی است. در حقیقت، پردازش‌ها در هر سیستم‌عامل به عنوان واحدهای اجرایی اصلی عمل می‌کنند که منابع سیستم را مصرف می‌کنند و باید به طور مؤثر مدیریت شوند تا عملکرد بهینه حفظ شود. در اینجا به بررسی اهمیت نظارت بر پردازش‌ها و تأثیر آن بر بهبود عملکرد سیستم پرداخته می‌شود.

۱. شناسایی و مدیریت مصرف منابع

پردازش‌ها منابع سیستم مانند CPU، حافظه (RAM)، دیسک و شبکه را مصرف می‌کنند. نظارت بر این پردازش‌ها کمک می‌کند تا پردازش‌هایی که منابع زیادی مصرف می‌کنند، شناسایی شوند. این پردازش‌ها ممکن است در سیستم مشکل ایجاد کرده و باعث کندی یا ناپایداری شوند. از طریق نظارت، می‌توان به سرعت این پردازش‌ها را مدیریت کرده و مصرف منابع آن‌ها را بهینه کرد.

برای مثال، پردازش‌هایی که به طور غیرمعمول از CPU استفاده می‌کنند می‌توانند سیستم را کند کرده و تجربه کاربری را مختل کنند. این مشکلات را می‌توان با ابزارهایی مثل top، htop یا ps شناسایی کرد و در صورت لزوم پردازش‌های غیرضروری یا سنگین را خاتمه داد.

۲. شناسایی پردازش‌های معیوب یا مشکل‌زا

گاهی اوقات پردازش‌ها ممکن است به دلایل مختلف به درستی کار نکنند. پردازش‌هایی که وارد حلقه‌های بی‌پایان شده‌اند یا به درستی از منابع استفاده نمی‌کنند، می‌توانند مشکلات جدی ایجاد کنند. نظارت بر پردازش‌ها می‌تواند به شناسایی پردازش‌های Zombie، Orphan یا غیرفعال کمک کند.

پردازش‌های Zombie پردازش‌هایی هستند که به پایان رسیده‌اند، اما همچنان در سیستم وجود دارند و منابع را اشغال می‌کنند. نظارت منظم بر پردازش‌ها این امکان را می‌دهد که این پردازش‌ها شناسایی و حذف شوند. پردازش‌های Orphan هم پردازش‌هایی هستند که والد خود را از دست داده‌اند و باید به یک پردازش والد جدید متصل شوند.

۳. پیشگیری از مشکلات عملکردی

نظارت بر پردازش‌ها نه تنها به شناسایی مشکلات موجود کمک می‌کند، بلکه می‌تواند به پیشگیری از مشکلات عملکردی آینده نیز کمک کند. با تحلیل رفتار پردازش‌ها در طول زمان، می‌توان روند مصرف منابع را شناسایی کرد و پیش از وقوع بحران‌ها، اقدامات پیشگیرانه‌ای مانند تنظیم اولویت پردازش‌ها یا استفاده از ابزارهای محدودکننده منابع مانند cgroups انجام داد.

برای مثال، اگر یک پردازش به طور مداوم منابع زیادی از CPU را مصرف می‌کند، می‌توان اولویت اجرای آن را کاهش داد یا آن را به طور کامل متوقف کرد تا از تاثیر منفی آن بر عملکرد سیستم جلوگیری شود.

۴. بهبود پایداری و پاسخ‌دهی سیستم

با نظارت مستمر بر پردازش‌ها، می‌توان رفتار سیستم را در زمان‌های مختلف تحت نظر قرار داد و نقاط ضعفی که ممکن است باعث Latencies یا Bottlenecks شوند را شناسایی کرد. از آنجا که پردازش‌ها به‌طور مستقیم بر عملکرد سیستم تاثیر دارند، شناسایی پردازش‌های معیوب یا ناپایدار می‌تواند پایداری و پاسخ‌دهی سیستم را بهبود بخشد.

برای مثال، اگر پردازشی در حال مصرف بیش از حد منابع شبکه باشد، می‌تواند باعث تاخیر در سایر بخش‌های سیستم شود. با نظارت و شناسایی چنین پردازش‌هایی، می‌توان به سرعت آنها را اصلاح کرد تا سیستم بهینه‌تر عمل کند.

۵. بهینه‌سازی عملکرد سیستم

نظارت بر پردازش‌ها به شما کمک می‌کند تا گلوگاه‌های (Bottlenecks) سیستم را شناسایی کنید. گلوگاه‌ها معمولاً زمانی ایجاد می‌شوند که یک پردازش بیش از حد از یک منبع خاص استفاده کند و باعث شود سایر پردازش‌ها با کمبود منابع مواجه شوند.

این وضعیت می‌تواند عملکرد سیستم را کاهش دهد و نیازمند اقداماتی برای بهینه‌سازی عملکرد باشد. به‌عنوان مثال، ممکن است لازم باشد پردازش‌های سنگین را به ماشین‌های دیگری منتقل کنید یا از روش‌هایی برای توزیع بهینه بار استفاده کنید.

۶. بهبود تجربه کاربری

نظارت بر پردازش‌ها همچنین می‌تواند بهبود تجربه کاربری را تضمین کند. کاربران به سیستمی نیاز دارند که به‌طور پیوسته در دسترس و کارآمد باشد. زمانی که پردازش‌ها به درستی نظارت شوند و مشکلات منابع به سرعت حل شوند، عملکرد سیستم بهتر می‌شود و این امر به تجربه کاربری مثبت‌تر کمک خواهد کرد.

جمع‌بندی

نظارت بر پردازش‌ها یکی از ارکان اصلی بهینه‌سازی و بهبود عملکرد سیستم‌های لینوکس است. این کار به شما این امکان را می‌دهد که مصرف منابع را بهینه کرده، پردازش‌های معیوب را شناسایی کنید و از بروز مشکلات عملکردی پیشگیری کنید. با نظارت مؤثر، می‌توانید سیستم را در وضعیت پایداری نگه‌دارید، سرعت پاسخ‌دهی را افزایش دهید و در نهایت تجربه کاربری بهتری را فراهم کنید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 2. ابزارها و دستورات کلیدی برای نظارت بر پردازش‌ها”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”ps: نمایش اطلاعات پردازش‌های فعال” subtitle=”توضیحات کامل”]ابزار ps یکی از ابزارهای قدرتمند در لینوکس برای مشاهده و نمایش اطلاعات پردازش‌های فعال در سیستم است. این ابزار به طور پیش‌فرض اطلاعاتی را در مورد پردازش‌های در حال اجرا نمایش می‌دهد و به شما این امکان را می‌دهد که وضعیت پردازش‌ها را مشاهده و تجزیه و تحلیل کنید.

پارامترهای مهم ps

  1. ps aux
    • این دستور یکی از رایج‌ترین و پرکاربردترین دستورها برای نمایش اطلاعات کامل در مورد تمام پردازش‌های در حال اجرا است. پارامترها و اطلاعاتی که این دستور نشان می‌دهد عبارتند از:
      • USER: کاربر مالک پردازش.
      • PID: شناسه پردازش.
      • %CPU: میزان استفاده از پردازنده (CPU) توسط پردازش.
      • %MEM: میزان استفاده از حافظه (RAM) توسط پردازش.
      • VSZ: میزان حافظه مجازی که پردازش استفاده می‌کند.
      • RSS: میزان حافظه فیزیکی (RAM) که پردازش استفاده می‌کند.
      • TTY: ترمینال مرتبط با پردازش.
      • STAT: وضعیت پردازش (Running، Sleeping، etc).
      • START: زمان شروع پردازش.
      • TIME: مدت زمان پردازش در حال اجرا.
      • COMMAND: دستور اجرایی پردازش.

    مثال:

    ps aux
    

    این دستور به شما لیستی از پردازش‌ها با اطلاعات بالا را نمایش می‌دهد. این ابزار برای نظارت کلی و مشاهده وضعیت پردازش‌های مختلف مفید است.

  2. ps -ef
    • این گزینه دستور ps اطلاعات پردازش‌های فعال را به همراه شناسه پردازش‌های والد (Parent PID) و سایر جزئیات سیستم نمایش می‌دهد. در این حالت، اطلاعات به صورت فشرده‌تر و با فرمت استاندارد نمایش داده می‌شود.
    • این دستور به شما یک نمای کلی از پردازش‌های در حال اجرا در سیستم می‌دهد و کمک می‌کند تا ساختار درختی پردازش‌ها را بررسی کنید.

    مثال:

    ps -ef
    

    در اینجا، اطلاعات به صورت ستون‌هایی مانند:

    • UID: شناسه کاربری.
    • PID: شناسه پردازش.
    • PPID: شناسه پردازش والد.
    • C: میزان استفاده از CPU.
    • STIME: زمان شروع پردازش.
    • TTY: ترمینال مربوطه.
    • TIME: مدت زمان پردازش.
    • CMD: دستور اجرایی.
  3. ps -eo pid,ppid,cmd,%mem,%cpu
    • این دستور به شما این امکان را می‌دهد که تنها مقادیر خاصی از اطلاعات پردازش‌ها را مشاهده کنید. شما می‌توانید با استفاده از این دستور، اطلاعات مهم مربوط به پردازش‌ها را فیلتر کنید و تمرکز خود را بر روی جنبه‌های خاصی از پردازش‌ها بگذارید. در اینجا، از گزینه -eo برای تعیین پارامترهایی که می‌خواهید نمایش داده شوند استفاده می‌شود.

    پارامترهای مورد استفاده در این مثال عبارتند از:

    • pid: شناسه پردازش.
    • ppid: شناسه پردازش والد.
    • cmd: دستور اجرایی پردازش.
    • %mem: درصد مصرف حافظه توسط پردازش.
    • %cpu: درصد مصرف CPU توسط پردازش.

    مثال:

    ps -eo pid,ppid,cmd,%mem,%cpu
    

    این دستور به شما فهرستی از پردازش‌ها همراه با شناسه پردازش‌ها، پردازش والد، دستور اجرایی، درصد مصرف حافظه و پردازنده را نشان می‌دهد. این اطلاعات می‌تواند برای شناسایی پردازش‌های سنگین و بررسی عملکرد پردازش‌ها مفید باشد.

جمع‌بندی

ابزار ps و پارامترهای مختلف آن، به‌ویژه ps aux، ps -ef و ps -eo pid,ppid,cmd,%mem,%cpu، ابزارهای کاربردی و قدرتمندی برای مشاهده وضعیت پردازش‌ها در لینوکس هستند. این ابزارها به شما این امکان را می‌دهند که اطلاعات دقیق و مفیدی در مورد پردازش‌های در حال اجرا، مصرف منابع و ساختار پردازش‌ها بدست آورید. این اطلاعات برای تجزیه و تحلیل مشکلات عملکرد سیستم، شناسایی پردازش‌های سنگین و بهینه‌سازی مصرف منابع بسیار حیاتی است.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”top: نظارت زنده بر پردازش‌ها” subtitle=”توضیحات کامل”]ابزار top یکی از ابزارهای پایه‌ای و قدرتمند در لینوکس است که به شما امکان می‌دهد تا به طور زنده اطلاعات مربوط به پردازش‌ها و مصرف منابع سیستم را مشاهده کنید. این ابزار به‌طور مداوم به‌روزرسانی می‌شود و اطلاعات به‌روز از وضعیت سیستم را نمایش می‌دهد. این ویژگی به خصوص برای نظارت بر پردازش‌های در حال اجرا، شناسایی پردازش‌های سنگین و مدیریت منابع سیستم بسیار مفید است.

ویژگی‌ها و امکانات top

top اطلاعاتی در مورد پردازش‌ها، استفاده از منابع CPU و حافظه، وضعیت سیستم و جزئیات دیگر نمایش می‌دهد. مهم‌ترین ویژگی‌های آن عبارتند از:

  • PID: شناسه پردازش.
  • USER: کاربری که پردازش تحت مالکیت آن است.
  • PR: اولویت پردازش.
  • NI: میزان اولویت (nice value) پردازش.
  • VIRT: حافظه مجازی استفاده‌شده توسط پردازش.
  • RES: حافظه فیزیکی استفاده‌شده توسط پردازش.
  • SHR: حافظه مشترک.
  • S: وضعیت پردازش (Running، Sleeping، etc).
  • %CPU: درصد استفاده از CPU توسط پردازش.
  • %MEM: درصد استفاده از حافظه توسط پردازش.
  • TIME+: مدت زمان پردازش در حال اجرا.

استفاده از کلیدهای میانبر در top

ابزار top علاوه بر نمایش اطلاعات به صورت زنده، امکانات مختلفی را برای تعامل با پردازش‌ها و بهینه‌سازی عملکرد سیستم فراهم می‌آورد. برخی از کلیدهای میانبر مهم که می‌توانید در محیط top استفاده کنید عبارتند از:

  1. k (کشتن پردازش)
    • با استفاده از کلید k، می‌توانید پردازش خاصی را متوقف کنید (kill). پس از فشار دادن این کلید، از شما شناسه پردازش (PID) پردازش مورد نظر خواسته می‌شود. سپس شما می‌توانید یکی از سیگنال‌های مختلف را انتخاب کرده و پردازش را متوقف کنید.
    • برای مثال، برای کشتن یک پردازش، کافیست شماره PID پردازش را وارد کنید و سپس انتخاب کنید که چه سیگنالی (مانند SIGTERM یا SIGKILL) به آن پردازش ارسال شود.
  2. r (تغییر اولویت پردازش)
    • با فشار دادن کلید r، می‌توانید اولویت (nice value) پردازش‌ها را تغییر دهید. این ویژگی به شما این امکان را می‌دهد که تأثیر پردازش‌ها بر منابع سیستم را تغییر داده و پردازش‌هایی که به منابع بیشتری نیاز دارند، اولویت بالاتری بدهید یا بالعکس.
    • برای تغییر اولویت، پس از فشار دادن r، باید شناسه پردازش (PID) را وارد کنید و سپس مقدار جدید اولویت (nice value) را مشخص کنید.
  3. z (تغییر رنگ نمایش)
    • با فشار دادن کلید z، می‌توانید رنگ نمایش اطلاعات در top را تغییر دهید. این تغییرات به شما کمک می‌کند که پردازش‌ها و اطلاعات سیستم را بهتر شناسایی کرده و با سرعت بیشتری به آنها توجه کنید. این ویژگی به خصوص زمانی که حجم زیادی از داده‌ها نمایش داده می‌شود، مفید است.

مثال‌های کاربردی از کلیدهای میانبر top

  • برای مشاهده پردازش‌ها به صورت زنده، کافی است دستور top را اجرا کنید:
    top
    
  • پس از باز شدن صفحه top، با استفاده از کلیدهای میانبر زیر می‌توانید به راحتی پردازش‌ها را مدیریت کنید:
    • k: وارد کردن PID پردازش و ارسال سیگنال کشتن.
    • r: وارد کردن PID و تغییر اولویت پردازش.
    • z: تغییر رنگ نمایش اطلاعات.

جمع‌بندی

ابزار top یکی از بهترین ابزارهای نظارت زنده بر پردازش‌ها در سیستم‌های لینوکسی است. این ابزار به شما امکان می‌دهد تا در زمان واقعی از وضعیت پردازش‌ها، استفاده از منابع CPU و حافظه و سایر اطلاعات سیستم مطلع شوید. با استفاده از کلیدهای میانبر مانند k، r و z می‌توانید به راحتی پردازش‌ها را مدیریت و وضعیت سیستم را بهبود دهید. این ویژگی‌ها باعث می‌شوند که top ابزاری بسیار مؤثر و کارآمد برای مدیران سیستم و کارشناسان IT در راستای بهینه‌سازی عملکرد سیستم و شناسایی مشکلات پردازشی باشد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”htop: نسخه پیشرفته‌تر و گرافیکی‌تر ابزار top” subtitle=”توضیحات کامل”]ابزار htop نسخه پیشرفته‌تری از ابزار محبوب top است که علاوه بر نمایش اطلاعات مشابه با top، ویژگی‌های گرافیکی و امکانات اضافی بیشتری را برای نظارت بر پردازش‌ها و منابع سیستم فراهم می‌آورد. این ابزار به کاربران این امکان را می‌دهد که به راحتی و با استفاده از رابط گرافیکی ترمینال، وضعیت سیستم و پردازش‌های در حال اجرا را مشاهده و مدیریت کنند.

ویژگی‌های اصلی htop

htop عملکرد مشابه top را ارائه می‌دهد، اما با ویژگی‌های اضافی و رابط کاربری جذاب‌تر که کار را برای تحلیل اطلاعات سیستم ساده‌تر می‌کند. برخی از ویژگی‌های مهم htop عبارتند از:

  • رابط گرافیکی جذاب: برخلاف top که فقط از متن ساده برای نمایش اطلاعات استفاده می‌کند، htop از نمودارهای گرافیکی برای نمایش میزان مصرف منابع (CPU، حافظه، و غیره) استفاده می‌کند. این نمودارها باعث می‌شوند که شناسایی سریع مشکلات منابع سیستم آسان‌تر شود.
  • مشاهده درخت پردازش‌ها (Tree View): یکی از ویژگی‌های برجسته htop قابلیت مشاهده درخت پردازش‌ها است. این ویژگی به شما اجازه می‌دهد تا به صورت بصری وابستگی‌ها و ارتباطات بین پردازش‌های والد و فرزند را مشاهده کنید. این قابلیت به خصوص در شناسایی پردازش‌هایی که به صورت زنجیره‌ای از یکدیگر اجرا می‌شوند، بسیار مفید است.
  • فیلتر کردن پردازش‌ها: htop به شما این امکان را می‌دهد که پردازش‌ها را بر اساس معیارهای خاصی فیلتر کنید. برای مثال، می‌توانید فقط پردازش‌هایی که بیشتر از مقدار مشخصی از CPU یا حافظه استفاده می‌کنند را نمایش دهید.

ویژگی‌های اضافی htop

  1. درخت پردازش‌ها (Tree View)
    • در این نمایش، پردازش‌ها به‌صورت درختی و با نمایش روابط والد و فرزند نمایش داده می‌شوند. این نمایش به شما کمک می‌کند که به سرعت پردازش‌های وابسته به یکدیگر را شناسایی کرده و به مدیریت آن‌ها بپردازید.
    • برای فعال کردن درخت پردازش‌ها، کافی است که کلید F5 را در محیط htop فشار دهید.
  2. فیلتر کردن بر اساس معیارهای خاص
    • در htop می‌توانید پردازش‌ها را بر اساس معیارهای خاص مانند میزان استفاده از CPU، حافظه، یا شناسه پردازش (PID) فیلتر کنید.
    • برای فعال کردن فیلتر، می‌توانید از کلید F3 استفاده کنید و سپس الگوی مورد نظر خود را وارد کنید. این ویژگی به شما کمک می‌کند تا تنها پردازش‌های مرتبط با معیارهای خاص را مشاهده کنید.
  3. نظارت بر CPU و حافظه با گرافیک
    • یکی از ویژگی‌های مهم htop نمایش گرافیکی میزان مصرف منابع است. برای هر هسته از CPU یک نمودار جداگانه نمایش داده می‌شود که نشان‌دهنده میزان استفاده از CPU در زمان واقعی است. علاوه بر این، نمودار مصرف حافظه نیز به صورت گرافیکی نمایش داده می‌شود.
    • این ویژگی به کاربران کمک می‌کند تا در نگاه اول متوجه وضعیت منابع سیستم شوند و بتوانند به راحتی نقاط بحرانی را شناسایی کنند.
  4. تغییر اولویت پردازش‌ها (Nice Value)
    • مانند ابزار top، در htop نیز می‌توانید اولویت پردازش‌ها را تغییر دهید. برای این کار کافی است پردازش مورد نظر را انتخاب کرده و سپس از کلید F7 یا F8 برای کاهش یا افزایش اولویت استفاده کنید.
  5. کشتن پردازش‌ها
    • htop به شما امکان می‌دهد که پردازش‌ها را به‌راحتی متوقف کنید. کافی است پردازش مورد نظر را انتخاب کرده و سپس از کلید F9 برای ارسال سیگنال کشتن استفاده کنید. شما می‌توانید سیگنال‌های مختلف مانند SIGTERM یا SIGKILL را انتخاب کنید.

دستور نصب htop

برای نصب htop در سیستم‌های لینوکسی، می‌توانید از دستورات زیر استفاده کنید:

  • در سیستم‌های مبتنی بر دبیان و اوبونتو:
    sudo apt-get install htop
    
  • در سیستم‌های مبتنی بر ردهت و فدورا:
    sudo yum install htop
    
  • در سیستم‌های مبتنی بر Arch:
    sudo pacman -S htop
    

جمع‌بندی

htop یک ابزار نظارت قدرتمند و پیشرفته‌تر نسبت به top است که ویژگی‌های گرافیکی و تعاملات بیشتری را برای کاربران فراهم می‌آورد. این ابزار با امکان مشاهده درخت پردازش‌ها، فیلتر کردن پردازش‌ها، و نظارت گرافیکی بر منابع سیستم، به شما این امکان را می‌دهد که به راحتی عملکرد سیستم خود را کنترل و بهینه‌سازی کنید. htop برای افرادی که نیاز به نظارت دقیق و سریع بر پردازش‌ها و منابع سیستم دارند، ابزاری ایده‌آل است.

 [/cdb_course_lesson][cdb_course_lesson title=”فصل 3. مشاهده و شناسایی پردازش‌های سنگین”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”بررسی مصرف منابع پردازش‌ها (CPU و RAM)” subtitle=”توضیحات کامل”]در سیستم‌های مبتنی بر لینوکس، بررسی مصرف منابع پردازش‌ها از جمله مصرف CPU و RAM (حافظه) بخش مهمی از نظارت بر عملکرد سیستم است. این اطلاعات به مدیران سیستم و توسعه‌دهندگان کمک می‌کند تا مشکلات عملکردی را شناسایی و حل کنند. در اینجا به بررسی نحوه نظارت بر مصرف منابع پردازش‌ها با استفاده از ابزارهای مختلف مانند htop، top، و ps می‌پردازیم.

مصرف CPU

پردازش‌ها برای انجام محاسبات به واحد پردازش مرکزی (CPU) نیاز دارند. مصرف زیاد CPU می‌تواند نشانه‌ای از پردازش‌های سنگین یا مشکلات عملکردی در سیستم باشد.

  1. نظارت بر مصرف CPU با htop در htop می‌توانید میزان مصرف CPU هر پردازش را مشاهده کنید. این اطلاعات در قالب نمودارهای گرافیکی و به‌صورت درصدی نمایش داده می‌شود. مصرف CPU برای هر هسته از پردازش‌گر به‌طور مجزا نشان داده می‌شود، که این کمک می‌کند تا بدانید هر هسته چقدر مورد استفاده قرار گرفته است.
    • در htop ستون %CPU نشان‌دهنده درصد استفاده از CPU توسط هر پردازش است. در اینجا می‌توانید پردازش‌های با مصرف بالای CPU را شناسایی کنید.
    • برای مشاهده مصرف CPU، فقط کافی است که از کلیدهای جهت‌دار برای حرکت بین پردازش‌ها استفاده کرده و ستون %CPU را بررسی کنید.
  2. نظارت بر مصرف CPU با top در ابزار top نیز می‌توانید مصرف CPU را برای هر پردازش مشاهده کنید. top به‌طور مرتب فهرست پردازش‌های در حال اجرا و مصرف منابع سیستم را به‌روز می‌کند. در ستون %CPU می‌توانید میزان استفاده از CPU را به‌صورت درصدی مشاهده کنید.
    • برای مرتب‌سازی پردازش‌ها بر اساس مصرف CPU در top، می‌توانید کلید P را فشار دهید. این کار پردازش‌ها را بر اساس میزان مصرف CPU مرتب می‌کند.
  3. نظارت بر مصرف CPU با ps با استفاده از دستور ps نیز می‌توانید مصرف CPU پردازش‌ها را بررسی کنید. دستور زیر، مصرف CPU برای پردازش‌های در حال اجرا را به نمایش می‌گذارد:
    ps aux --sort=-%cpu
    

    این دستور لیستی از پردازش‌ها را به‌صورت مرتب شده بر اساس مصرف CPU نمایش می‌دهد. با استفاده از این دستور، پردازش‌هایی که بیشترین منابع CPU را مصرف می‌کنند، در ابتدای لیست قرار خواهند گرفت.

مصرف RAM

حافظه RAM برای ذخیره داده‌ها و برنامه‌هایی که در حال اجرا هستند، مورد استفاده قرار می‌گیرد. مصرف زیاد حافظه می‌تواند منجر به کندی سیستم و کاهش عملکرد شود.

  1. نظارت بر مصرف RAM با htop در htop، مصرف RAM در ستون %MEM نمایش داده می‌شود. این ستون درصد استفاده از حافظه را برای هر پردازش نشان می‌دهد. همچنین در بالای صفحه، یک نمودار گرافیکی از مصرف کلی حافظه و swap سیستم نمایش داده می‌شود که به شما کمک می‌کند تا سریعاً وضعیت حافظه سیستم را بررسی کنید.
    • در htop، با استفاده از کلید F6 می‌توانید پردازش‌ها را بر اساس مصرف حافظه مرتب کنید و پردازش‌هایی که بیشترین مقدار RAM را مصرف می‌کنند، شناسایی کنید.
  2. نظارت بر مصرف RAM با top در ابزار top نیز می‌توانید مصرف RAM هر پردازش را مشاهده کنید. در این ابزار، ستون %MEM میزان مصرف حافظه برای هر پردازش را نمایش می‌دهد. به‌طور مشابه با htop، می‌توانید پردازش‌ها را بر اساس مصرف RAM مرتب کنید.
    • برای مرتب‌سازی پردازش‌ها بر اساس مصرف RAM در top، کلید M را فشار دهید.
  3. نظارت بر مصرف RAM با ps برای مشاهده مصرف RAM پردازش‌ها با استفاده از دستور ps، می‌توانید از دستور زیر استفاده کنید:
    ps aux --sort=-%mem
    

    این دستور پردازش‌ها را بر اساس مصرف حافظه (RAM) مرتب می‌کند. این ابزار به شما کمک می‌کند تا سریعاً پردازش‌هایی که بیشترین حافظه را مصرف می‌کنند شناسایی کنید.

تشخیص مشکلات مصرف منابع

  • پردازش‌های پرمصرف CPU: پردازش‌هایی که به‌طور غیرمعمولی از CPU زیاد استفاده می‌کنند، می‌توانند دلیل کندی سیستم باشند. این پردازش‌ها ممکن است مشکلاتی مانند حلقه‌های بی‌پایان یا خطاهای نرم‌افزاری داشته باشند که باید بررسی و حل شوند.
  • پردازش‌های پرمصرف حافظه (RAM): پردازش‌هایی که بیش از حد از حافظه استفاده می‌کنند، می‌توانند موجب استفاده زیاد از swap و کاهش عملکرد سیستم شوند. این مشکل می‌تواند به دلیل نشت حافظه (memory leak) یا بار زیاد در برنامه‌ها باشد.

جمع‌بندی

نظارت بر مصرف منابع پردازش‌ها (CPU و RAM) برای شناسایی و حل مشکلات عملکرد سیستم اهمیت زیادی دارد. با استفاده از ابزارهایی مانند htop، top و ps می‌توان به راحتی پردازش‌هایی که بیشترین منابع را مصرف می‌کنند شناسایی کرده و اقدامات لازم برای بهینه‌سازی و رفع مشکلات را انجام داد. این نظارت مستمر می‌تواند به بهبود عملکرد سیستم و جلوگیری از مشکلات جدی در آینده کمک کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”شناسایی پردازش‌هایی که بیشترین استفاده از منابع دارند” subtitle=”توضیحات کامل”]یکی از روش‌های سریع و موثر برای شناسایی پردازش‌هایی که بیشترین منابع را مصرف می‌کنند، استفاده از ابزار top همراه با دستورات فیلترینگ مانند grep است. این کار به شما این امکان را می‌دهد تا پردازش‌های خاصی را که به دنبال آن‌ها هستید، پیدا کنید و یا به‌طور کلی، پردازش‌هایی که بیشترین منابع سیستم (CPU، RAM) را مصرف می‌کنند، شناسایی کنید.

استفاده از دستور top | grep 'PID'

با استفاده از دستور top می‌توانید فهرست پردازش‌های در حال اجرا را مشاهده کنید و با استفاده از دستور grep می‌توانید پردازش‌های خاصی را بر اساس PID (Process ID) فیلتر کنید. این دستور برای زمانی که شما می‌خواهید پردازش خاصی را که شناسه PID آن را دارید، بررسی کنید مفید است.

برای مثال، اگر شما شناسه PID یک پردازش خاص را دارید و می‌خواهید بدانید که این پردازش چه مقدار منابع سیستم را مصرف می‌کند، می‌توانید دستور زیر را اجرا کنید:

top | grep 'PID'

در این دستور، PID باید با شناسه پردازش مورد نظر جایگزین شود. این دستور تنها آن پردازش خاص را که با PID مشخص شده مطابقت دارد، نمایش می‌دهد. خروجی این دستور شامل تمام اطلاعات مربوط به مصرف منابع پردازش مانند میزان استفاده از CPU، RAM، زمان اجرا، و دیگر جزئیات می‌باشد.

مثال

فرض کنید شما می‌خواهید پردازش‌هایی را که از CPU زیاد استفاده می‌کنند فیلتر کنید. ابتدا از دستور top برای مشاهده مصرف منابع استفاده می‌کنید، سپس با فیلتر کردن بر اساس PID پردازش‌های خاص را شناسایی می‌کنید.

برای فیلتر کردن همه پردازش‌ها با استفاده از grep، دستور زیر را وارد کنید:

top -b -n 1 | grep 'PID'

این دستور به‌طور خلاصه لیستی از پردازش‌ها را که در حال حاضر در سیستم شما در حال اجرا هستند، نمایش می‌دهد و از آنجا می‌توانید اطلاعات مصرف منابع پردازش‌ها را فیلتر کنید. توجه داشته باشید که -b به معنی اجرای top در حالت batch (بدون نمایش گرافیکی) است و -n 1 برای اجرای تنها یک بار از top است.

فیلتر کردن پردازش‌ها بر اساس مصرف CPU یا RAM

اگر بخواهید پردازش‌هایی را که بیشترین منابع را مصرف می‌کنند پیدا کنید، می‌توانید با استفاده از دستور top اطلاعات را مرتب کنید و سپس با استفاده از grep آن‌ها را فیلتر کنید.

برای مشاهده پردازش‌هایی که بیشترین مصرف CPU دارند:

top -b -n 1 | sort -nrk 3,3 | head -n 10

در این دستور:

  • -b برای اجرای top در حالت batch است.
  • -n 1 باعث می‌شود که فقط یک بار خروجی دریافت کنید.
  • sort -nrk 3,3 خروجی را بر اساس ستون سوم که مصرف CPU است، مرتب می‌کند.
  • head -n 10 تنها ۱۰ پردازش با بیشترین مصرف CPU را نمایش می‌دهد.

برای مشاهده پردازش‌هایی که بیشترین مصرف حافظه دارند:

top -b -n 1 | sort -nrk 10,10 | head -n 10

در این دستور:

  • sort -nrk 10,10 خروجی را بر اساس ستون دهم که مصرف حافظه (RAM) است، مرتب می‌کند.

جمع‌بندی

استفاده از دستور top | grep 'PID' به شما این امکان را می‌دهد تا به راحتی پردازش‌های خاص را بر اساس شناسه PID فیلتر کرده و اطلاعات مربوط به مصرف منابع آنها را مشاهده کنید. همچنین، با استفاده از ابزارهای اضافی مانند sort و head می‌توانید پردازش‌هایی که بیشترین منابع را مصرف می‌کنند شناسایی کنید و اقدامات لازم را برای بهینه‌سازی سیستم انجام دهید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”استفاده از sort برای مرتب‌سازی مصرف منابع” subtitle=”توضیحات کامل”]یکی از روش‌های مؤثر برای شناسایی پردازش‌هایی که بیشترین منابع را مصرف می‌کنند، استفاده از دستور sort برای مرتب‌سازی اطلاعات خروجی از ابزارهایی مانند top و ps است. با این روش می‌توانید پردازش‌ها را بر اساس معیارهای مختلف مانند مصرف CPU، مصرف حافظه و یا زمان اجرا به‌طور مرتب مشاهده کنید و بدین ترتیب بتوانید به راحتی پردازش‌های سنگین را شناسایی کنید.

نحوه استفاده از دستور sort

دستور sort در لینوکس برای مرتب‌سازی خروجی دستورات مختلف به کار می‌رود. این دستور می‌تواند اطلاعات را بر اساس معیارهای مختلفی مانند اعداد، حروف یا تاریخ مرتب کند. با استفاده از پارامترهای خاص، می‌توان مصرف منابع سیستم مانند CPU و RAM را مرتب‌سازی کرد تا پردازش‌های بیشترین مصرف منابع در بالای لیست قرار گیرند.

مثال 1: مرتب‌سازی مصرف منابع با استفاده از top

برای مشاهده مصرف منابع پردازش‌ها و مرتب‌سازی آن‌ها می‌توانید از دستور top در حالت batch استفاده کرده و سپس خروجی را با دستور sort مرتب کنید.

برای مرتب‌سازی مصرف CPU پردازش‌ها به‌صورت نزولی (از بیشترین به کمترین)، دستور زیر را وارد کنید:

top -b -n 1 | sort -nrk 3,3

در این دستور:

  • -b به معنای اجرای top در حالت batch است.
  • -n 1 باعث می‌شود که تنها یک بار خروجی تولید شود.
  • sort -nrk 3,3 برای مرتب‌سازی خروجی به‌صورت نزولی بر اساس ستون سوم که مربوط به مصرف CPU است، استفاده می‌شود.

برای مرتب‌سازی مصرف حافظه (RAM) پردازش‌ها:

top -b -n 1 | sort -nrk 10,10

در این دستور:

  • sort -nrk 10,10 برای مرتب‌سازی خروجی به‌صورت نزولی بر اساس ستون دهم که مصرف RAM است، به کار می‌رود.
مثال 2: استفاده از ps برای شناسایی پردازش‌های سنگین

ابزار ps نیز می‌تواند برای شناسایی پردازش‌های سنگین و مرتب‌سازی مصرف منابع استفاده شود. برای مشاهده پردازش‌ها و مرتب‌سازی آن‌ها به‌صورت نزولی بر اساس مصرف CPU می‌توانید دستور زیر را وارد کنید:

ps aux --sort=-%cpu

در این دستور:

  • ps aux برای نمایش اطلاعات تمام پردازش‌های در حال اجرا است.
  • --sort=-%cpu مصرف CPU پردازش‌ها را به‌صورت نزولی مرتب می‌کند.

برای مرتب‌سازی بر اساس مصرف حافظه، می‌توانید از دستور زیر استفاده کنید:

ps aux --sort=-%mem

در این دستور:

  • --sort=-%mem مصرف حافظه پردازش‌ها را به‌صورت نزولی مرتب می‌کند.
مثال 3: استفاده از dstat برای بررسی منابع سیستم

دستور dstat به شما این امکان را می‌دهد تا به‌طور آنی مصرف منابع مختلف سیستم را مشاهده کنید. اگر می‌خواهید خروجی این ابزار را مرتب‌سازی کنید، می‌توانید از دستور sort استفاده کنید. به‌عنوان مثال:

dstat -c -m -d -n --sort=cpu

در این دستور:

  • dstat -c -m -d -n برای نمایش مصرف CPU، حافظه، دیسک و شبکه است.
  • --sort=cpu برای مرتب‌سازی اطلاعات بر اساس مصرف CPU است.

جمع‌بندی

با استفاده از دستور sort در ترکیب با ابزارهایی مانند top، ps و dstat می‌توانید به راحتی پردازش‌هایی که بیشترین مصرف منابع را دارند شناسایی کرده و آن‌ها را بر اساس معیارهای مختلف (مثل CPU یا RAM) مرتب‌سازی کنید. این کار به شما کمک می‌کند تا به‌طور مؤثرتری عملکرد سیستم را نظارت کرده و به بهینه‌سازی آن بپردازید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 4. مدیریت پردازش‌ها”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”ارسال سیگنال به پردازش‌ها” subtitle=”توضیحات کامل”]در لینوکس، مدیریت پردازش‌ها و ارسال سیگنال‌های مختلف به آن‌ها برای کنترل عملکرد سیستم، اهمیت زیادی دارد. سیگنال‌ها دستورات خاصی هستند که به پردازش‌ها ارسال می‌شوند تا عملیات خاصی را انجام دهند. برای متوقف کردن یا مدیریت پردازش‌ها می‌توان از ابزارهای مختلفی استفاده کرد. سه ابزار مهم برای ارسال سیگنال به پردازش‌ها عبارتند از kill، killall و pkill که هرکدام ویژگی‌ها و کاربردهای خاص خود را دارند.

1. دستور kill: متوقف کردن پردازش‌ها با استفاده از PID

دستور kill برای ارسال سیگنال به پردازش‌ها استفاده می‌شود. این دستور معمولاً برای متوقف کردن یا مدیریت پردازش‌هایی که با استفاده از PID (Process ID) شناسایی شده‌اند، به کار می‌رود.

نحوه استفاده از دستور kill

برای ارسال سیگنال به یک پردازش خاص، ابتدا باید PID آن پردازش را شناسایی کنید. سپس دستور kill را با استفاده از PID پردازش مورد نظر اجرا کنید. به‌عنوان مثال:

kill <PID>

در این دستور:

  • <PID> باید با شماره شناسایی پردازش (PID) جایگزین شود.

به‌طور پیش‌فرض، دستور kill سیگنال SIGTERM (سیگنال خاتمه) را به پردازش ارسال می‌کند که پردازش را به‌طور نرم متوقف می‌کند. اگر پردازش به این سیگنال پاسخ ندهد، می‌توان از سیگنال‌های دیگر مانند SIGKILL استفاده کرد:

kill -9 <PID>

در این دستور:

  • -9 به معنی ارسال سیگنال SIGKILL است که پردازش را فوراً خاتمه می‌دهد و پردازش قادر به انجام هیچ‌گونه تمیزکاری نخواهد بود.

2. دستور killall: متوقف کردن تمامی پردازش‌ها با نام خاص

دستور killall برای ارسال سیگنال به تمامی پردازش‌هایی که نام خاصی دارند، استفاده می‌شود. این ابزار به شما امکان می‌دهد که بدون نیاز به شناسایی PID، تمام پردازش‌های مشابه را خاتمه دهید.

نحوه استفاده از دستور killall

برای ارسال سیگنال به تمامی پردازش‌هایی که نام مشخصی دارند، می‌توانید از دستور زیر استفاده کنید:

killall <process_name>

در این دستور:

  • <process_name> باید با نام پردازش جایگزین شود.

برای مثال، اگر بخواهید تمامی پردازش‌های مربوط به برنامه firefox را متوقف کنید، دستور زیر را وارد می‌کنید:

killall firefox

به‌طور پیش‌فرض، دستور killall سیگنال SIGTERM را به تمامی پردازش‌های مربوط به نام مورد نظر ارسال می‌کند. برای ارسال سیگنال‌های دیگر مانند SIGKILL می‌توانید از دستور زیر استفاده کنید:

killall -9 <process_name>

3. دستور pkill: متوقف کردن پردازش‌ها با تطبیق الگو

دستور pkill مشابه killall است، اما به شما این امکان را می‌دهد که از الگوهای تطبیقی (regular expressions) برای شناسایی پردازش‌ها استفاده کنید. این ابزار به‌ویژه زمانی مفید است که نمی‌خواهید دقیقا نام پردازش‌ها را بدانید، بلکه می‌خواهید پردازش‌هایی که با یک الگوی خاص تطابق دارند را خاتمه دهید.

نحوه استفاده از دستور pkill

برای ارسال سیگنال به پردازش‌ها با استفاده از الگو، می‌توانید دستور زیر را وارد کنید:

pkill <pattern>

در این دستور:

  • <pattern> باید با الگوی مورد نظر برای تطبیق با نام پردازش‌ها جایگزین شود.

برای مثال، برای متوقف کردن تمامی پردازش‌های firefox یا پردازش‌هایی که نام آن‌ها حاوی fire باشد، دستور زیر را وارد می‌کنید:

pkill fire

به‌طور پیش‌فرض، دستور pkill سیگنال SIGTERM را به تمامی پردازش‌هایی که با الگوی داده‌شده تطبیق دارند، ارسال می‌کند. برای استفاده از سیگنال‌های دیگر مانند SIGKILL، می‌توانید دستور زیر را وارد کنید:

pkill -9 <pattern>

جمع‌بندی

  • kill برای ارسال سیگنال به یک پردازش خاص با استفاده از PID است. این دستور به شما امکان می‌دهد که یک پردازش مشخص را به‌طور نرم یا سخت متوقف کنید.
  • killall برای ارسال سیگنال به تمامی پردازش‌هایی که نام خاصی دارند، به کار می‌رود.
  • pkill مشابه killall است، اما به شما این امکان را می‌دهد که پردازش‌ها را با استفاده از الگوهای تطبیقی متوقف کنید.

این ابزارها برای مدیریت پردازش‌ها در سیستم‌های لینوکس بسیار مفید هستند و در بهینه‌سازی عملکرد سیستم، جلوگیری از مصرف بی‌رویه منابع توسط پردازش‌های غیرضروری، و همچنین در انجام وظایف نگهداری سیستم مورد استفاده قرار می‌گیرند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”تغییر اولویت پردازش‌ها (دستور renice: تغییر nice value یک پردازش در حال اجرا)” subtitle=”توضیحات کامل”]در سیستم‌عامل لینوکس، هر پردازش دارای یک اولویت به نام nice value است که تعیین می‌کند چقدر پردازش باید منابع پردازنده (CPU) را نسبت به سایر پردازش‌ها به خود اختصاص دهد. مقدار nice value می‌تواند بین -20 (بیشترین اولویت) تا 19 (کمترین اولویت) باشد. پردازش‌هایی با nice value کمتر از 0 دارای اولویت بالاتری هستند و پردازش‌هایی که مقدار nice value بالاتری دارند، اولویت کمتری برای استفاده از منابع CPU خواهند داشت.

برای تغییر اولویت یک پردازش در حال اجرا، می‌توان از دستور renice استفاده کرد.

دستور renice: تغییر nice value یک پردازش در حال اجرا

دستور renice به شما این امکان را می‌دهد که nice value یک پردازش در حال اجرا را تغییر دهید، که می‌تواند تأثیر زیادی بر نحوه تخصیص منابع سیستم (به‌ویژه CPU) داشته باشد. این دستور به‌طور خاص برای تنظیم اولویت پردازش‌های در حال اجرا استفاده می‌شود.

نحوه استفاده از دستور renice

برای تغییر nice value یک پردازش خاص، باید شماره PID پردازش مورد نظر را بدانید و سپس دستور renice را اجرا کنید.

renice <nice_value> -p <PID>

در این دستور:

  • <nice_value> باید با مقدار جدید nice value که می‌خواهید برای پردازش تنظیم کنید، جایگزین شود. (مقدار می‌تواند از -20 تا 19 باشد)
  • <PID> باید با شماره PID پردازش جایگزین شود.
مثال‌هایی از استفاده دستور renice:
  1. تغییر اولویت پردازش با PID مشخص:

اگر بخواهید اولویت پردازش با PID 1234 را به 10 تغییر دهید، دستور زیر را وارد می‌کنید:

renice 10 -p 1234

این دستور nice value پردازش را به 10 تغییر می‌دهد که نشان‌دهنده اولویت پایین‌تر برای این پردازش است.

  1. تغییر اولویت چند پردازش به طور همزمان:

اگر بخواهید چند پردازش را به طور همزمان تغییر دهید، می‌توانید از چندین PID استفاده کنید. برای مثال، برای تغییر nice value پردازش‌های با PID‌های 1234، 5678، و 91011 به 5، دستور زیر را وارد می‌کنید:

renice 5 -p 1234 -p 5678 -p 91011
  1. تغییر اولویت یک پردازش توسط کاربر خاص:

برای تغییر اولویت تمامی پردازش‌های متعلق به یک کاربر خاص، از دستور زیر استفاده کنید:

renice 10 -u <username>

در این دستور:

  • <username> باید با نام کاربری که پردازش‌ها متعلق به آن هستند، جایگزین شود.
ملاحظات مهم:
  • حقوق دسترسی: برای تغییر nice value پردازش‌هایی که متعلق به کاربر دیگری هستند (به‌ویژه پردازش‌های سیستمی یا ریشه‌ای)، باید دسترسی‌های مدیریتی (مانند sudo) داشته باشید.
  • محدوده nice value: مقدار nice value می‌تواند بین -20 (بیشترین اولویت) تا 19 (کمترین اولویت) باشد. به طور پیش‌فرض، پردازش‌ها مقدار nice value 0 دارند.
  • اولویت پردازش‌ها: پردازش‌هایی با nice value پایین‌تر (یعنی اعداد منفی) به‌طور کلی پردازنده بیشتری را از سیستم می‌گیرند، در حالی که پردازش‌هایی با nice value بالاتر، منابع کمتری از CPU دریافت می‌کنند.

جمع‌بندی

دستور renice ابزاری مفید برای مدیریت اولویت پردازش‌ها در سیستم‌های لینوکس است. با تغییر nice value، می‌توان اولویت پردازش‌ها را تغییر داد و به پردازش‌های مهم‌تر منابع بیشتری اختصاص داد. این ابزار به ویژه در سیستم‌هایی که چندین پردازش در حال اجرا هستند و نیاز به تخصیص منابع بهینه‌تری دارند، اهمیت دارد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”استفاده از top و htop برای تغییر اولویت پردازش‌ها به‌صورت زنده” subtitle=”توضیحات کامل”]در سیستم‌عامل لینوکس، ابزارهای top و htop به شما این امکان را می‌دهند که اولویت پردازش‌ها (که همان nice value است) را به صورت زنده تغییر دهید. این ابزارها به‌ویژه زمانی مفید هستند که بخواهید تغییرات را سریعاً اعمال کرده و در محیطی گرافیکی یا تعاملی به پردازش‌ها نگاه کنید.

استفاده از top برای تغییر اولویت پردازش‌ها

ابزار top به شما این امکان را می‌دهد که nice value پردازش‌ها را از داخل خود ابزار به‌صورت زنده تغییر دهید. این کار به شما کمک می‌کند که به راحتی اولویت پردازش‌ها را بدون نیاز به ترک محیط ترمینال تغییر دهید.

مراحل تغییر اولویت پردازش‌ها با top:
  1. ابتدا، دستور top را در ترمینال وارد کنید تا لیست پردازش‌ها نمایش داده شود:
    top
    
  2. برای تغییر اولویت پردازش‌ها، ابتدا باید به PID پردازش مورد نظر برسید. از طریق کلیدهای جهت‌دار می‌توانید پردازش‌ها را انتخاب کنید.
  3. سپس، کلید r را فشار دهید تا وارد حالت تغییر nice value شوید.
  4. top از شما می‌خواهد که PID پردازش مورد نظر را وارد کنید. شماره PID را وارد کنید.
  5. سپس، سیستم از شما می‌خواهد که مقدار جدید nice value را وارد کنید. این مقدار می‌تواند عددی بین -20 تا 19 باشد.
  6. پس از وارد کردن مقدار nice value، اولویت پردازش تغییر خواهد کرد و به‌صورت زنده در نمایشگر top نشان داده می‌شود.
مثال:

فرض کنید می‌خواهید اولویت پردازش با PID 1234 را به 10 تغییر دهید. مراحل به شرح زیر خواهد بود:

  1. وارد محیط top شوید.
  2. پردازش مورد نظر را انتخاب کرده و کلید r را فشار دهید.
  3. PID (در این مثال 1234) را وارد کنید.
  4. مقدار جدید nice value (برای مثال 10) را وارد کنید.
  5. اولویت پردازش تغییر خواهد کرد.

استفاده از htop برای تغییر اولویت پردازش‌ها

htop نسخه پیشرفته‌تر و گرافیکی‌تر از top است و امکانات بیشتری برای مدیریت پردازش‌ها فراهم می‌کند. تغییر nice value پردازش‌ها در htop ساده‌تر و سریع‌تر است، زیرا دارای رابط گرافیکی است که به شما کمک می‌کند تا پردازش‌ها را به راحتی انتخاب کنید.

مراحل تغییر اولویت پردازش‌ها با htop:
  1. ابتدا، دستور htop را وارد کنید تا صفحه گرافیکی پردازش‌ها نمایش داده شود:
    htop
    
  2. در htop، پردازش‌ها به صورت لیستی گرافیکی نمایش داده می‌شوند. از کلیدهای جهت‌دار برای جابجایی بین پردازش‌ها استفاده کنید.
  3. پس از پیدا کردن پردازش مورد نظر، با استفاده از کلید جهت‌دار بالا یا پایین پردازش مورد نظر را انتخاب کنید.
  4. سپس، کلید F7 برای افزایش اولویت پردازش (کاهش nice value) و کلید F8 برای کاهش اولویت پردازش (افزایش nice value) را فشار دهید.
  5. تغییرات به صورت فوری اعمال می‌شود و اولویت پردازش در لیست به‌روزرسانی خواهد شد.
مثال:

برای تغییر اولویت پردازش به صورت گرافیکی در htop:

  1. پردازش مورد نظر را انتخاب کنید.
  2. از F7 برای افزایش اولویت (کاهش nice value) یا F8 برای کاهش اولویت (افزایش nice value) استفاده کنید.
  3. اولویت پردازش به صورت زنده تغییر خواهد کرد.

جمع‌بندی

ابزارهای top و htop هر دو امکانات خوبی برای مدیریت و تغییر اولویت پردازش‌ها در سیستم‌های لینوکس دارند. در حالی که top نیاز به ورود دستی PID و مقدار nice value دارد، htop این فرآیند را به صورت گرافیکی و تعاملی تسهیل می‌کند. استفاده از این ابزارها به شما این امکان را می‌دهد که اولویت پردازش‌ها را در زمان واقعی و بدون نیاز به ترک محیط ترمینال یا تغییرات اضافی در سیستم انجام دهید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 5. مشاهده ساختار پردازش‌ها”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”استفاده از pstree: مشاهده ساختار درختی پردازش‌ها و شناسایی ارتباطات بین Parent و Child Processes” subtitle=”توضیحات کامل”]ابزار pstree یکی از ابزارهای مفید و قدرتمند در لینوکس است که به شما این امکان را می‌دهد تا ساختار درختی پردازش‌ها را مشاهده کنید و ارتباطات بین Parent (والد) و Child (فرزند) پردازش‌ها را شناسایی نمایید.

نحوه استفاده از pstree:

  1. برای مشاهده درخت پردازش‌ها، کافی است دستور pstree را در ترمینال وارد کنید:
    pstree
    
  2. پس از اجرای این دستور، خروجی به صورت درختی نمایش داده می‌شود که هر پردازش به صورت یک گره در درخت نشان داده می‌شود. پردازش‌هایی که به هم مرتبط هستند (مثلاً Parent و Child processes) به‌صورت درختی به یکدیگر متصل می‌شوند.
  3. در این نمایش، پردازش‌های Child به‌صورت زیرمجموعه‌های Parent در نظر گرفته می‌شوند و ارتباط بین آنها به وضوح قابل مشاهده است.

مشاهده پردازش‌ها با جزئیات بیشتر:

با استفاده از گزینه‌های مختلف، می‌توانید نمایش pstree را سفارشی کرده و اطلاعات بیشتری به دست آورید. برای مثال، اگر بخواهید شماره PID هر پردازش را در کنار نام پردازش مشاهده کنید، می‌توانید از گزینه -p استفاده کنید:

pstree -p

این دستور علاوه بر نمایش ساختار درختی پردازش‌ها، شماره‌های PID هر پردازش را نیز به همراه نام آنها نشان می‌دهد.

بررسی ویژگی‌ها و امکانات pstree:

  1. نمایش درخت پردازش‌ها:
    • با اجرای pstree می‌توانید به راحتی ارتباط بین پردازش‌ها را به صورت درختی مشاهده کنید.
    • پردازش‌های Parent و Child به‌طور واضح و در قالب درخت به هم متصل می‌شوند.
  2. نمایش PID در کنار نام پردازش‌ها:
    • با استفاده از گزینه -p، می‌توانید شماره PID هر پردازش را در کنار نام آن ببینید و ارتباط دقیق‌تر بین پردازش‌ها را شناسایی کنید.
  3. مشاهده پردازش‌ها در قالب یک نام خاص:
    • شما می‌توانید نام پردازش خاصی را به pstree بدهید تا تنها درخت پردازش‌های مرتبط با آن نام خاص نمایش داده شود. برای این کار از دستور زیر استفاده کنید:
    pstree <نام_پردازش>
    

    به عنوان مثال، برای مشاهده درخت پردازش‌های مرتبط با برنامه nginx، از دستور زیر استفاده کنید:

    pstree nginx
    

شناسایی ارتباطات بین Parent و Child Processes با pstree:

در سیستم‌های چندپردازشی (multiprocessing)، هر پردازش معمولاً یک Parent دارد که آن را ایجاد کرده است، و پردازش‌های Child که از آن به‌عنوان والد منشعب می‌شوند. pstree به شما کمک می‌کند تا این روابط را شفاف و واضح ببینید.

  • پردازش‌های Parent به‌طور مستقیم به پردازش‌های Child خود متصل هستند.
  • هر پردازش Child می‌تواند پردازش‌های فرزند دیگری داشته باشد که به صورت زیرمجموعه‌های آن به نمایش درمی‌آیند.

مثال کاربردی:

فرض کنید در سیستم شما یک برنامه وب به نام apache2 در حال اجرا است. اگر بخواهید ببینید که چه پردازش‌هایی از apache2 به عنوان والد منشعب شده‌اند، می‌توانید دستور زیر را وارد کنید:

pstree -p apache2

در این صورت، تمام پردازش‌هایی که از apache2 به‌عنوان والد منشعب شده‌اند، در قالب یک درخت نمایش داده می‌شوند.

جمع‌بندی

ابزار pstree یک ابزار مفید و کارآمد برای مشاهده ساختار درختی پردازش‌ها و شناسایی ارتباطات بین Parent و Child processes است. این ابزار کمک می‌کند تا ارتباطات پیچیده بین پردازش‌ها به‌طور بصری قابل درک باشد. علاوه بر این، با استفاده از گزینه‌های مختلف، می‌توان اطلاعات جزئی‌تری از پردازش‌ها دریافت کرد و به راحتی ارتباط بین پردازش‌ها را شفاف‌تر مشاهده نمود.[/cdb_course_lesson][cdb_course_lesson title=”فصل 6. مانیتور کردن پردازش‌ها در بازه زمانی”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”استفاده از watch: اجرای دستورات در بازه‌های زمانی مشخص و مشاهده خروجی” subtitle=”توضیحات کامل”]ابزار watch در لینوکس یکی از ابزارهای مفید برای اجرای دستورات در بازه‌های زمانی مشخص و مشاهده خروجی به‌صورت پیوسته است. این ابزار به‌ویژه در مواقعی که نیاز دارید وضعیت سیستم را به‌طور زنده و مداوم بررسی کنید، بسیار کارآمد است.

نحوه کار با watch:

دستور watch به شما این امکان را می‌دهد که یک دستور را به‌طور مداوم اجرا کرده و خروجی آن را در بازه‌های زمانی مشخص مشاهده کنید. به‌طور پیش‌فرض، watch هر 2 ثانیه دستور را دوباره اجرا می‌کند و خروجی را به روز می‌کند.

سینتکس اصلی دستور watch به شکل زیر است:

watch <دستور>

مهم‌ترین ویژگی‌های watch:

  1. اجرای مکرر دستور:
    • با استفاده از watch، می‌توانید هر دستور یا فرمانی را در فواصل زمانی خاص تکرار کنید. به عنوان مثال، اگر بخواهید وضعیت مصرف منابع پردازش‌ها را بررسی کنید، می‌توانید دستور ps aux را با استفاده از watch به‌طور مداوم اجرا کنید:
    watch ps aux
    
  2. تنظیم زمان بین اجراهای مکرر:
    • با استفاده از گزینه -n، می‌توانید زمان بین اجرای دستورات را مشخص کنید. برای مثال، اگر بخواهید دستور را هر 1 ثانیه اجرا کنید، از دستور زیر استفاده کنید:
    watch -n 1 ps aux
    

    این دستور باعث می‌شود که ps aux هر 1 ثانیه اجرا شده و وضعیت پردازش‌ها به‌روز شود.

  3. خروجی رنگی:
    • دستور watch به‌طور پیش‌فرض خروجی را در قالب رنگی نمایش می‌دهد تا تشخیص تغییرات راحت‌تر باشد.
  4. اجرای دستور با هر بار اجرا:
    • شما می‌توانید از گزینه -d استفاده کنید تا تغییرات در خروجی دستور برجسته شود. به عنوان مثال، برای نمایش تفاوت‌ها در خروجی دستور ps aux در هر بار اجرا، می‌توانید از دستور زیر استفاده کنید:
    watch -d -n 1 ps aux
    

    این دستور تغییرات بین هر بار اجرای دستور را به صورت هایلایت نشان می‌دهد.

  5. مشاهده دستور با وضوح بیشتر:
    • اگر می‌خواهید از یک دستور پیچیده یا طولانی به وضوح بیشتر استفاده کنید، می‌توانید از watch برای مشاهده آن در محیط ترمینال بهره ببرید.

مثال‌های کاربردی:

  1. مشاهده وضعیت مصرف منابع سیستم: اگر می‌خواهید وضعیت مصرف CPU، RAM و پردازش‌های سیستم را به‌طور زنده مشاهده کنید، می‌توانید از دستور top به همراه watch استفاده کنید:
    watch -n 2 top
    

    این دستور باعث می‌شود که top هر 2 ثانیه اجرا شود و مصرف منابع به‌روز گردد.

  2. مشاهده مصرف دیسک: برای مشاهده وضعیت فضای دیسک سیستم، می‌توانید دستور df را با watch ترکیب کنید:
    watch -n 5 df -h
    

    این دستور فضای دیسک را هر 5 ثانیه به‌روز خواهد کرد.

  3. مشاهده مصرف حافظه: برای مشاهده مصرف حافظه و وضعیت swap، می‌توانید از دستور free استفاده کنید:
    watch -n 3 free -h
    

    این دستور وضعیت حافظه سیستم را هر 3 ثانیه نمایش می‌دهد.

جمع‌بندی

ابزار watch ابزاری ساده ولی بسیار قدرتمند برای اجرای دستورات در فواصل زمانی مشخص است. این ابزار به‌ویژه در نظارت بر عملکرد سیستم و بررسی پیوسته وضعیت منابع مختلف مانند CPU، RAM، دیسک و حافظه کاربرد فراوانی دارد. با استفاده از گزینه‌های مختلف watch، می‌توانید فواصل زمانی اجرای دستورات را تنظیم کرده و خروجی‌ها را به‌طور مداوم مشاهده کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”ثبت گزارش‌ها با nohup و cron: مانیتور کردن پردازش‌ها در پس‌زمینه و ذخیره لاگ‌ها” subtitle=”توضیحات کامل”]در مدیریت سیستم‌های لینوکسی، برای نظارت و ذخیره گزارش‌های عملکرد سیستم به‌طور پیوسته، استفاده از ابزارهایی مانند nohup و cron بسیار مفید است. این ابزارها به شما امکان می‌دهند تا دستورات و اسکریپت‌ها را در پس‌زمینه اجرا کرده و گزارش‌ها یا لاگ‌ها را در فایل‌های خاص ذخیره کنید، حتی زمانی که شما از سیستم خارج می‌شوید.

1. استفاده از nohup برای اجرای دستورات در پس‌زمینه:

دستور nohup به شما این امکان را می‌دهد که دستورات را در پس‌زمینه اجرا کنید و حتی پس از قطع ارتباط از سرور (خروج از ترمینال)، دستورات همچنان در حال اجرا باشند. این ویژگی به‌ویژه زمانی که می‌خواهید پروسه‌های بلندمدت مانند نظارت بر پردازش‌ها یا تحلیل داده‌های سیستم را اجرا کنید، مفید است.

سینتکس اصلی nohup به شکل زیر است:

nohup <دستور> &

در اینجا، علامت & نشان می‌دهد که دستور در پس‌زمینه اجرا می‌شود و nohup خروجی دستور را به‌طور پیش‌فرض به فایل nohup.out هدایت می‌کند.

مثال: اجرای دستور top در پس‌زمینه

اگر بخواهید دستور top را در پس‌زمینه اجرا کنید و گزارش‌های آن را در فایل لاگ ذخیره کنید، می‌توانید از nohup به‌صورت زیر استفاده کنید:

nohup top > top_output.log &

در این مثال، دستور top در پس‌زمینه اجرا شده و تمام خروجی آن به فایل top_output.log هدایت می‌شود. حتی اگر شما از سیستم خارج شوید، این دستور همچنان ادامه خواهد داشت.

2. استفاده از cron برای زمان‌بندی اجرای دستورات:

ابزار cron به شما این امکان را می‌دهد که دستورات و اسکریپت‌ها را در زمان‌های مشخص اجرا کنید. این ابزار برای نظارت مداوم بر منابع سیستم یا اجرای اسکریپت‌های مانیتورینگ به‌طور منظم بسیار مفید است.

برای تنظیم یک دستور برای اجرا در بازه‌های زمانی خاص، باید یک ورودی جدید به کرون اضافه کنید. این کار با ویرایش فایل کرون کاربر انجام می‌شود.

برای ویرایش کرون، دستور زیر را وارد کنید:

crontab -e

پس از باز شدن ویرایشگر، می‌توانید دستورات خود را اضافه کنید. برای مثال، اگر بخواهید دستور ps aux هر 5 دقیقه یک‌بار اجرا شود و خروجی آن به فایل لاگ ذخیره گردد، می‌توانید از ورودی زیر استفاده کنید:

*/5 * * * * ps aux > /path/to/log/ps_log_$(date +\%Y\%m\%d\%H\%M).log

در اینجا:

  • */5 * * * * تعیین می‌کند که دستور هر 5 دقیقه یک‌بار اجرا شود.
  • ps aux برای مشاهده پردازش‌های سیستم است.
  • خروجی دستور به فایلی با نام شامل تاریخ و زمان جاری (مثلاً ps_log_202502011230.log) هدایت می‌شود.

3. ذخیره خروجی و گزارش‌ها به فایل‌های خاص:

با استفاده از nohup و cron می‌توانید خروجی دستورات را به فایل‌های لاگ خاصی هدایت کنید. این لاگ‌ها به شما کمک می‌کنند که در زمان‌های مختلف به‌طور دقیق عملکرد سیستم را بررسی کنید و مشکلات را شناسایی کنید.

مثال: استفاده از nohup و cron برای ذخیره گزارش‌ها

  1. استفاده از nohup برای ذخیره گزارش‌های دستور top: اگر بخواهید که دستور top به‌طور پیوسته در پس‌زمینه اجرا شده و گزارش‌ها در فایل خاصی ذخیره شوند، می‌توانید از دستور زیر استفاده کنید:
    nohup top -b -n 1 > /path/to/log/top_report_$(date +\%Y\%m\%d\%H\%M).log &
    

    در اینجا:

    • -b برای اجرای دستور top در حالت batch (یعنی بدون نمایش گرافیکی).
    • -n 1 تعداد دفعات اجرا را تعیین می‌کند (در این مثال یک‌بار اجرا می‌شود).
    • خروجی دستور به فایل لاگ هدایت می‌شود.
  2. زمان‌بندی اجرای دستور df برای نظارت بر فضای دیسک با cron: برای مشاهده وضعیت فضای دیسک سیستم هر 15 دقیقه، از ورودی زیر در فایل کرون استفاده کنید:
    */15 * * * * df -h > /path/to/log/disk_space_$(date +\%Y\%m\%d\%H\%M).log
    

    این دستور هر 15 دقیقه یک‌بار وضعیت فضای دیسک را ذخیره می‌کند و به شما این امکان را می‌دهد که وضعیت فضای دیسک را به‌طور منظم بررسی کنید.

جمع‌بندی

با استفاده از ابزارهای nohup و cron، شما می‌توانید دستورات را در پس‌زمینه اجرا کرده و گزارش‌ها را به‌طور منظم ذخیره کنید. این ابزارها برای نظارت بر سیستم و مانیتورینگ منابع مختلف مانند پردازش‌ها، حافظه، دیسک و شبکه بسیار مفید هستند. nohup به شما این امکان را می‌دهد که دستورات را در پس‌زمینه اجرا کنید، در حالی که cron به شما اجازه می‌دهد تا اجرای دستورات را به‌صورت زمان‌بندی‌شده و خودکار انجام دهید. این ترکیب ابزارها به شما کمک می‌کند تا گزارش‌ها و لاگ‌های مفیدی برای تحلیل و عیب‌یابی سیستم در دسترس داشته باشید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 7. شناسایی پردازش‌های مشکل‌زا”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از lsof: مشاهده فایل‌های باز مرتبط با یک پردازش و شناسایی پردازش‌هایی که از منابع زیاد یا نامناسب استفاده می‌کنند” subtitle=”توضیحات کامل”]ابزار lsof (که مخفف “List Open Files” است) یکی از ابزارهای مفید در لینوکس است که به شما امکان می‌دهد تا لیست فایل‌های باز در سیستم را مشاهده کنید. این ابزار برای شناسایی پردازش‌هایی که منابع زیادی از سیستم را مصرف می‌کنند یا فایل‌های خاصی را در حال استفاده دارند، بسیار کارآمد است.

1. مشاهده فایل‌های باز مرتبط با یک پردازش:

هر پردازش در لینوکس می‌تواند فایل‌ها، سوکت‌ها، و پایپ‌هایی را برای ارتباط با سایر پردازش‌ها باز کرده باشد. با استفاده از دستور lsof می‌توانید لیستی از این فایل‌های باز را مشاهده کنید.

برای مشاهده فایل‌های باز توسط یک پردازش خاص، کافیست از دستور زیر استفاده کنید:

lsof -p <PID>

در اینجا:

  • <PID> شناسه پردازش (Process ID) است که می‌خواهید فایل‌های باز آن را مشاهده کنید.

مثال: مشاهده فایل‌های باز برای یک پردازش خاص

اگر شناسه پردازش (PID) یک پردازش را می‌دانید و می‌خواهید فایل‌های باز آن را ببینید، به‌طور مثال:

lsof -p 1234

این دستور، تمام فایل‌های باز مرتبط با پردازش با PID 1234 را نمایش می‌دهد.

2. شناسایی پردازش‌هایی که از منابع زیاد یا نامناسب استفاده می‌کنند:

گاهی اوقات ممکن است پردازش‌هایی وجود داشته باشند که از منابع سیستم به‌طور غیرعادی استفاده می‌کنند. برای شناسایی این پردازش‌ها، می‌توانید از lsof به همراه گزینه‌هایی برای فیلتر کردن استفاده کنید.

به‌طور مثال، برای شناسایی پردازش‌هایی که بیشترین تعداد فایل‌های باز را دارند، می‌توانید از دستور زیر استفاده کنید:

lsof | awk '{print $2}' | sort | uniq -c | sort -n

این دستور به ترتیب تعداد فایل‌های باز برای هر پردازش را نشان می‌دهد. پردازش‌هایی که بیشترین فایل باز را دارند، ممکن است نشانه‌ای از مصرف بیش از حد منابع سیستم یا مشکلات احتمالی در آن‌ها باشند.

3. شناسایی فایل‌های باز در یک دایرکتوری خاص:

اگر بخواهید بدانید که کدام پردازش‌ها فایل‌های باز در یک دایرکتوری خاص دارند، می‌توانید از دستور lsof به‌صورت زیر استفاده کنید:

lsof +D /path/to/directory

این دستور تمام پردازش‌هایی را که فایل‌هایی در دایرکتوری مشخص شده باز کرده‌اند، نمایش می‌دهد.

4. شناسایی پردازش‌هایی که به منابع شبکه متصل هستند:

یکی از کاربردهای مهم lsof، شناسایی پردازش‌هایی است که به منابع شبکه (مثل پورت‌ها) متصل هستند. برای این کار می‌توانید از گزینه -i استفاده کنید:

lsof -i

این دستور تمام ارتباطات شبکه باز را نشان می‌دهد. برای مشاهده اطلاعات دقیق‌تر می‌توانید از پارامترهای مختلف استفاده کنید، مانند:

  • مشاهده پردازش‌هایی که به پورت خاصی متصل هستند:
    lsof -i :80
    

    این دستور تمام پردازش‌هایی را که به پورت 80 (که معمولاً برای HTTP استفاده می‌شود) متصل هستند، نشان می‌دهد.

5. شناسایی پردازش‌هایی که از دیسک‌های خاصی استفاده می‌کنند:

اگر می‌خواهید پردازش‌هایی که از دیسک خاصی استفاده می‌کنند را شناسایی کنید، می‌توانید از دستور زیر استفاده کنید:

lsof /dev/sda1

این دستور نشان می‌دهد که کدام پردازش‌ها به دیسک /dev/sda1 دسترسی دارند.

جمع‌بندی

دستور lsof یکی از ابزارهای قدرتمند در لینوکس است که به شما امکان می‌دهد تا فایل‌های باز مرتبط با پردازش‌ها را مشاهده کرده و پردازش‌هایی که منابع زیادی مصرف می‌کنند را شناسایی کنید. این ابزار به‌ویژه برای مانیتورینگ سیستم و تحلیل رفتار پردازش‌ها در سیستم‌های پیچیده و در حال اجرا بسیار مفید است. همچنین، این ابزار می‌تواند برای شناسایی مشکلات عملکردی مانند فایل‌های باز نامناسب یا پردازش‌های متصل به منابع شبکه یا دیسک استفاده شود.

[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از strace: بررسی رفتار سیستم کال‌ها برای یک پردازش خاص” subtitle=”توضیحات کامل”]ابزار strace یکی از ابزارهای قدرتمند برای اشکال‌زدایی و تحلیل رفتار پردازش‌ها در سیستم‌های لینوکسی است. این ابزار به شما امکان می‌دهد تا سیستم کال‌ها (System Calls) و سیگنال‌های پردازش‌ها را در زمان اجرا مشاهده کنید. سیستم کال‌ها رابط‌هایی هستند که پردازش‌ها برای درخواست خدمات از هسته (kernel) سیستم‌عامل از آن‌ها استفاده می‌کنند.

با استفاده از strace می‌توانید مشاهده کنید که یک پردازش خاص از چه سیستم کال‌هایی استفاده می‌کند و چه نوع عملیات‌هایی (مانند خواندن یا نوشتن فایل، ایجاد ارتباطات شبکه، تخصیص حافظه و …) در حال انجام است. این ابزار برای شناسایی مشکلات عملکردی و همچنین تحلیل رفتار پردازش‌ها بسیار مفید است.

1. نحوه استفاده از strace برای یک پردازش خاص:

برای مشاهده سیستم کال‌ها و سیگنال‌های یک پردازش در حال اجرا، می‌توانید از دستور زیر استفاده کنید:

strace -p <PID>

در اینجا:

  • <PID> شناسه پردازش (Process ID) است که می‌خواهید رفتار سیستم کال‌ها و سیگنال‌های آن را بررسی کنید.

مثال:

فرض کنید شناسه پردازش (PID) شما 1234 است. برای مشاهده سیستم کال‌ها و سیگنال‌های مربوط به این پردازش، دستور زیر را اجرا می‌کنید:

strace -p 1234

این دستور سیستم کال‌های پردازش با PID 1234 را در کنسول نمایش می‌دهد.

2. مشاهده سیستم کال‌های مربوط به یک دستور خاص:

اگر بخواهید سیستم کال‌های مربوط به یک دستور خاص را مشاهده کنید، می‌توانید از strace برای اجرای آن دستور استفاده کنید. به‌عنوان مثال، اگر بخواهید رفتار سیستم کال‌ها هنگام اجرای دستور ls را مشاهده کنید، دستور زیر را اجرا کنید:

strace ls

این دستور تمام سیستم کال‌هایی را که دستور ls هنگام اجرای خود استفاده می‌کند، نمایش می‌دهد.

3. فیلتر کردن سیستم کال‌های خاص:

اگر تنها به سیستم کال‌های خاصی علاقه دارید، می‌توانید از گزینه -e برای فیلتر کردن سیستم کال‌ها استفاده کنید. برای مثال، اگر فقط می‌خواهید سیستم کال‌های مربوط به فایل‌ها (مانند open, read, write) را مشاهده کنید، دستور زیر را اجرا کنید:

strace -e trace=file ls

در اینجا:

  • گزینه -e trace=file تنها سیستم کال‌های مربوط به عملیات فایل را نمایش می‌دهد.

4. ذخیره خروجی strace به فایل:

در بسیاری از موارد، خروجی strace ممکن است بسیار طولانی و پیچیده باشد، بنابراین می‌توانید آن را به یک فایل متنی ذخیره کنید تا بتوانید بعداً آن را بررسی کنید. برای ذخیره خروجی strace در یک فایل، از دستور زیر استفاده کنید:

strace -p <PID> -o output.txt

این دستور خروجی را در فایل output.txt ذخیره می‌کند. به‌این‌ترتیب می‌توانید بعداً فایل را بررسی کنید.

5. مشاهده سیستم کال‌ها به همراه زمان مصرف شده:

اگر بخواهید مشاهده کنید که هر سیستم کال چقدر زمان مصرف کرده است، می‌توانید از گزینه -T استفاده کنید:

strace -T -p <PID>

این دستور زمان مصرف هر سیستم کال را به همراه خروجی نمایش می‌دهد.

6. تجزیه و تحلیل عمیق‌تر با strace:

ابزار strace به‌ویژه برای تجزیه و تحلیل مشکلاتی که به سیستم کال‌ها و تعاملات پردازش با سیستم‌عامل مربوط هستند، بسیار مفید است. برای مثال، ممکن است یک پردازش با مشکلات مربوط به حافظه، فایل‌ها، یا شبکه روبه‌رو باشد. با استفاده از strace می‌توانید متوجه شوید که پردازش در هنگام تلاش برای انجام عملیات خاصی (مانند باز کردن فایل‌ها یا ایجاد اتصال شبکه) دچار مشکل می‌شود.

جمع‌بندی

ابزار strace ابزاری قدرتمند و مؤثر برای بررسی رفتار پردازش‌ها و تجزیه و تحلیل سیستم کال‌ها در لینوکس است. با استفاده از strace می‌توانید سیستم کال‌ها، سیگنال‌ها، و عملیات‌های مختلف پردازش‌ها را مشاهده کرده و مشکلات عملکردی را شناسایی کنید. این ابزار به‌ویژه در اشکال‌زدایی، بهینه‌سازی عملکرد، و تشخیص مشکلات مربوط به تعامل پردازش‌ها با سیستم‌عامل مفید است.

[/cdb_course_lesson][cdb_course_lesson title=”فصل 8. نظارت بر پردازش‌ها از راه دور”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”نظارت بر پردازش‌ها در سرورهای از راه دور با استفاده از SSH و اجرای دستورات مانیتورینگ” subtitle=”توضیحات کامل”]نظارت بر پردازش‌ها در سرورهای از راه دور یکی از مهم‌ترین جنبه‌های مدیریت سیستم‌های سروری است، به‌ویژه در محیط‌های تولیدی و زمانی که سرورهای شما در محل‌های مختلف یا در دیتاسنترهای مختلف قرار دارند. برای نظارت بر پردازش‌ها و عملکرد سیستم در این سرورها، استفاده از پروتکل SSH (Secure Shell) یک روش استاندارد و امن است.

1. استفاده از SSH برای دسترسی به سرور از راه دور:

SSH پروتکلی است که امکان ارتباط امن و رمزگذاری‌شده بین سیستم‌ها را فراهم می‌کند. برای اتصال به سرور از راه دور و اجرای دستورات نظارتی، ابتدا باید به سرور متصل شوید. دستور اصلی برای اتصال به یک سرور از طریق SSH به شکل زیر است:

ssh username@server_ip_address

در اینجا:

  • username نام کاربری شما در سرور مقصد است.
  • server_ip_address آدرس IP یا دامنه سرور مقصد است.

برای مثال:

ssh root@192.168.1.100

این دستور شما را به سرور با آدرس IP 192.168.1.100 و کاربر root متصل می‌کند. پس از اتصال به سرور، می‌توانید دستورات مختلف مانیتورینگ را اجرا کنید.

2. اجرای دستورات مانیتورینگ از راه دور:

پس از اتصال به سرور از طریق SSH، می‌توانید دستورات مانیتورینگ مختلفی را برای نظارت بر پردازش‌ها و منابع سیستم اجرا کنید. برخی از این دستورات عبارتند از:

  • htop: نمایش فرآیندها و منابع به‌صورت گرافیکی و تعاملی.
    htop
    
  • top: نظارت بر پردازش‌ها و منابع به‌صورت زنده.
    top
    
  • ps: نمایش اطلاعات پردازش‌ها به‌صورت ایستا و بدون نیاز به نمایش گرافیکی.
    ps aux
    
  • dstat: ارائه یک نمای کلی از وضعیت منابع سیستم به‌صورت زنده.
    dstat
    
  • uptime: نمایش زمان فعالیت سیستم و متوسط بار پردازشی.
    uptime
    

این دستورات به شما کمک می‌کنند تا وضعیت پردازش‌ها، مصرف منابع، بار پردازشی و وضعیت کلی سیستم را بررسی کنید.

3. اجرای دستورات مانیتورینگ به‌صورت خودکار و زمان‌بندی‌شده با SSH:

اگر بخواهید دستورات مانیتورینگ را به‌صورت خودکار یا زمان‌بندی‌شده اجرا کنید، می‌توانید از ابزارهایی مانند cron یا at برای زمان‌بندی دستورات استفاده کنید.

برای مثال، برای اجرای یک دستور نظارتی خاص در فواصل زمانی معین، ابتدا باید یک اسکریپت بنویسید که دستورات را اجرا کند. سپس می‌توانید آن را به‌صورت خودکار با استفاده از cron اجرا کنید.

  1. ساخت اسکریپت نظارتی:

ابتدا یک اسکریپت بسازید که دستورات نظارتی را اجرا کند. به‌عنوان مثال، یک اسکریپت به نام monitor.sh که دستور ps aux را اجرا می‌کند.

#!/bin/bash
ps aux >> /path/to/logfile.txt

این اسکریپت خروجی دستور ps aux را در فایل logfile.txt ذخیره می‌کند.

  1. زمان‌بندی اسکریپت با cron:

برای اجرای خودکار اسکریپت، وارد ویرایشگر cron شوید:

crontab -e

سپس یک خط جدید اضافه کنید که اسکریپت را در فواصل زمانی معین اجرا کند. به‌عنوان مثال، برای اجرای این اسکریپت هر 5 دقیقه یک‌بار:

*/5 * * * * /path/to/monitor.sh

این دستور اسکریپت monitor.sh را هر 5 دقیقه یک‌بار اجرا خواهد کرد.

4. استفاده از ابزارهای مانیتورینگ پیشرفته برای دسترسی از راه دور:

ابزارهای مانیتورینگ مانند Glances و Cockpit همچنین قابلیت‌های ویژه‌ای برای نظارت بر سیستم از راه دور دارند.

  • Glances: ابزاری است که می‌تواند به‌صورت تعاملی و در محیط ترمینال نظارت بر پردازش‌ها، منابع سیستم، شبکه و دیسک را انجام دهد. با استفاده از SSH می‌توانید از راه دور آن را اجرا کنید:
    glances
    
  • Cockpit: ابزاری با رابط گرافیکی تحت وب است که به شما این امکان را می‌دهد تا سیستم‌های لینوکسی را از راه دور مدیریت و نظارت کنید. برای استفاده از Cockpit، باید آن را بر روی سرور نصب کرده و سپس از طریق مرورگر وب به آن متصل شوید.

5. ارسال گزارش‌های وضعیت پردازش‌ها از راه دور:

اگر بخواهید وضعیت پردازش‌ها را به‌صورت منظم دریافت کنید، می‌توانید از mail یا ابزارهای مشابه برای ارسال گزارش‌ها از سرور به ایمیل خود استفاده کنید. به‌عنوان مثال، می‌توانید دستور ps aux را به ایمیل ارسال کنید:

ps aux | mail -s "Process Report" user@example.com

این دستور خروجی دستور ps aux را به آدرس ایمیل مشخص‌شده ارسال می‌کند.

جمع‌بندی

نظارت بر پردازش‌ها و منابع سیستم در سرورهای از راه دور از طریق SSH یک روش مؤثر و کارآمد برای مدیریت و بهینه‌سازی سیستم‌های لینوکسی است. با استفاده از ابزارهای مختلف مانیتورینگ مانند htop, top, ps, dstat و همچنین ابزارهایی برای زمان‌بندی دستورات مانند cron, می‌توانید نظارت مستمر و دقیق‌تری بر پردازش‌ها داشته باشید. این روش‌ها علاوه بر نظارت در لحظه، به شما این امکان را می‌دهند که از وضعیت سیستم گزارش‌های منظمی دریافت کنید و به مشکلات عملکردی پاسخ دهید.

[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”ابزارهایی مانند Glances برای مشاهده زنده اطلاعات از چندین سرور” subtitle=”توضیحات کامل”]در محیط‌های عملیاتی که تعداد زیادی سرور لینوکسی وجود دارد، نظارت بر همه سرورها به‌طور هم‌زمان و به‌صورت متمرکز می‌تواند چالش‌برانگیز باشد. استفاده از ابزارهایی مانند Glances این امکان را می‌دهد تا به‌صورت زنده و از یک نقطه، اطلاعات سیستم‌های مختلف را نظارت کنید. Glances یک ابزار نظارت سیستم چندمنظوره و مبتنی بر ترمینال است که می‌تواند اطلاعاتی از قبیل بار پردازشی، مصرف CPU، حافظه، دیسک، شبکه، پردازش‌ها و وضعیت سیستم را به‌صورت زنده نمایش دهد.

1. معرفی Glances

Glances یک ابزار نظارتی برای سیستم‌های لینوکسی است که به‌طور پیش‌فرض اطلاعات کلی و مهم سیستم را در یک رابط کاربری ترمینالی ارائه می‌دهد. این ابزار می‌تواند به‌صورت تعاملی، وضعیت پردازش‌ها، منابع سیستم (CPU، حافظه، دیسک، شبکه) و دیگر شاخص‌های مهم را در اختیار مدیران سیستم قرار دهد.

یکی از ویژگی‌های جذاب Glances این است که می‌تواند اطلاعات را از چندین سرور به‌صورت هم‌زمان جمع‌آوری کند و آنها را در یک رابط واحد نمایش دهد. این ویژگی به‌ویژه در محیط‌هایی با چندین سرور یا زیرساخت ابری مفید است.

2. نصب و راه‌اندازی Glances

برای نصب Glances در یک سیستم لینوکس، می‌توانید از بسته‌های نرم‌افزاری مختلف استفاده کنید. در اینجا نحوه نصب آن با استفاده از apt برای توزیع‌های مبتنی بر دبیان (مثل اوبونتو) آورده شده است:

sudo apt update
sudo apt install glances

در سیستم‌های مبتنی بر RedHat، مانند CentOS یا Fedora، می‌توانید از دستور زیر استفاده کنید:

sudo yum install glances

پس از نصب، برای اجرای Glances کافی است دستور زیر را وارد کنید:

glances

این دستور نمایی از وضعیت منابع سیستم را در ترمینال شما نمایش می‌دهد.

3. مشاهده اطلاعات چندین سرور با Glances

یکی از ویژگی‌های برجسته Glances این است که از حالت client-server پشتیبانی می‌کند، که به شما این امکان را می‌دهد تا از یک سیستم، وضعیت چندین سرور را به‌طور هم‌زمان مشاهده کنید. این ویژگی به‌ویژه برای مدیریت سرورهای متعدد و داشتن نظارتی متمرکز بسیار مفید است.

برای استفاده از قابلیت client-server در Glances، ابتدا باید آن را در حالت سرور راه‌اندازی کنید و سپس از یک دستگاه دیگر به آن متصل شوید.

3.1. راه‌اندازی Glances به‌عنوان سرور

در سرورهای لینوکسی که می‌خواهید از آنها نظارت کنید، Glances را در حالت سرور اجرا کنید:

glances -w

با اجرای این دستور، Glances به‌طور خودکار یک وب‌سرور داخلی راه‌اندازی می‌کند و اطلاعات سیستم را از طریق یک رابط وب در دسترس قرار می‌دهد. به‌طور پیش‌فرض، وب‌سرور Glances روی پورت 61208 قرار دارد.

3.2. اتصال به سرور از طریق وب

پس از راه‌اندازی Glances به‌عنوان سرور، می‌توانید از هر دستگاه دیگری که به همان شبکه یا اینترنت متصل است، از طریق مرورگر وب به آدرس سرور و پورت 61208 دسترسی پیدا کنید:

http://<server-ip>:61208

برای مثال، اگر آدرس IP سرور 192.168.1.100 باشد، شما باید وارد لینک زیر شوید:

http://192.168.1.100:61208

این رابط کاربری وب، وضعیت سیستم را به‌صورت زنده نمایش می‌دهد و شما می‌توانید به‌طور متمرکز اطلاعات چندین سرور را مشاهده کنید.

3.3. استفاده از Glances در حالت Client

در دستگاه‌هایی که قصد دارید از آنها به سرورها متصل شوید، می‌توانید از Glances در حالت client استفاده کنید. برای این کار، از دستور زیر استفاده کنید تا به سرورهای مختلف متصل شوید:

glances -c <server-ip>

در اینجا server-ip آدرس IP یا دامنه سرور مقصد است که می‌خواهید وضعیت آن را مشاهده کنید.

برای مثال:

glances -c 192.168.1.100

با این دستور، Glances اطلاعات سیستم سرور با آدرس IP 192.168.1.100 را نمایش می‌دهد.

4. مزایای استفاده از Glances برای مشاهده زنده اطلاعات از چندین سرور

  • نظارت متمرکز: Glances این امکان را می‌دهد تا به‌راحتی از یک نقطه، وضعیت چندین سرور را مشاهده کنید و از این طریق مدیریت منابع بهتری انجام دهید.
  • رابط کاربری ساده و کاربرپسند: استفاده از Glances از طریق ترمینال یا وب‌سرور، نیاز به ابزارهای پیچیده گرافیکی ندارد و می‌تواند در محیط‌های مختلف و حتی سرورهای بدون رابط گرافیکی (headless) استفاده شود.
  • پشتیبانی از چندین پروتکل: Glances می‌تواند از پروتکل‌های مختلفی مانند SSH و WebSocket برای اتصال به سرورها استفاده کند.
  • مقیاس‌پذیری: برای محیط‌هایی با تعداد زیادی سرور، استفاده از Glances به‌عنوان یک ابزار نظارتی متمرکز، مقیاس‌پذیری بالایی دارد.
  • آگاهی فوری از مشکلات سیستم: با استفاده از Glances، شما می‌توانید به‌سرعت مشکلات مربوط به منابع سیستم (مثل استفاده بیش از حد از CPU یا حافظه) را شناسایی کنید و اقدامات اصلاحی سریع انجام دهید.

5. سایر قابلیت‌ها و گزینه‌ها

  • نمایش گرافیکی مصرف منابع: Glances علاوه بر نمایش اطلاعات به‌صورت متنی، از گراف‌های ساده برای نمایش مصرف منابع سیستم مانند CPU، حافظه، و دیسک استفاده می‌کند.
  • پشتیبانی از پلاگین‌ها: Glances از پلاگین‌ها پشتیبانی می‌کند که به شما امکان می‌دهد برای نظارت بر سرویس‌های خاص یا سیستم‌های دیگر از پلاگین‌های اضافی استفاده کنید.
  • پشتیبانی از هشدارها: شما می‌توانید هشدارهایی تنظیم کنید که زمانی که مصرف منابع از حد معینی فراتر رفت، به شما اطلاع دهند.

جمع‌بندی

Glances ابزاری قدرتمند برای نظارت بر سیستم‌های لینوکسی است که از طریق رابط ترمینالی و وب می‌توان آن را به‌راحتی اجرا و استفاده کرد. این ابزار از قابلیت‌های جالبی مانند مشاهده زنده وضعیت چندین سرور به‌صورت هم‌زمان و پشتیبانی از سیستم‌های متعدد برخوردار است. با استفاده از Glances، مدیران سیستم می‌توانند به‌طور مؤثر و با سرعت بالا منابع سیستم را نظارت کرده و از بروز مشکلات قبل از وقوع جلوگیری کنند.[/cdb_course_lesson][cdb_course_lesson title=”فصل 9. نکات بهینه‌سازی و مدیریت پردازش‌ها”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”شناسایی و توقف پردازش‌های Zombie و Orphan” subtitle=”توضیحات کامل”]در سیستم‌عامل‌های لینوکس، پردازش‌ها ممکن است پس از اتمام کار خود همچنان در فهرست پردازش‌های سیستم باقی بمانند، که می‌تواند به مصرف منابع و کاهش عملکرد سیستم منجر شود. دو نوع پردازش رایج که ممکن است به این وضعیت دچار شوند عبارتند از پردازش‌های Zombie و Orphan. در این بخش، روش‌های شناسایی و توقف این پردازش‌ها توضیح داده خواهد شد.

1. پردازش‌های Zombie

یک پردازش Zombie به پردازشی اطلاق می‌شود که کار خود را تمام کرده است، اما هنوز اطلاعاتی در مورد آن در جدول پردازش‌ها (Process Table) باقی مانده است. این پردازش‌ها در واقع دیگر در حال اجرا نیستند، اما به دلیل عدم دریافت سیگنال خاتمه از سوی پردازنده یا والد، همچنان در وضعیت “Z” یا “Zombie” باقی می‌مانند.

پردازش‌های Zombie معمولاً زمانی ایجاد می‌شوند که یک پردازش والد منتظر دریافت وضعیت خروج پردازش فرزند خود است. وقتی که پردازش فرزند تمام می‌شود، پردازش والد باید با استفاده از دستور wait() اطلاعات مربوط به آن را دریافت کند. اگر پردازش والد نتواند این اطلاعات را دریافت کند، پردازش فرزند به‌عنوان Zombie باقی می‌ماند.

شناسایی پردازش‌های Zombie

برای شناسایی پردازش‌های Zombie می‌توان از دستور ps استفاده کرد. در واقع، در خروجی این دستور، پردازش‌های Zombie با وضعیت Z نمایش داده می‌شوند.

برای مثال:

ps aux | grep Z

این دستور تمام پردازش‌هایی که در وضعیت Zombie هستند را نمایش می‌دهد. در خروجی این دستور، ستون‌های مختلفی وجود دارند که می‌توانید در آن‌ها وضعیت پردازش‌ها را بررسی کنید. در اینجا، وضعیت پردازش‌های Zombie به‌صورت “Z” در ستون وضعیت (Stat) ظاهر می‌شود.

توقف پردازش‌های Zombie

پردازش‌های Zombie معمولاً قابل توقف نیستند زیرا آن‌ها دیگر در حال اجرا نیستند. مشکل در اینجا به پردازش والد باز می‌گردد که باید اطلاعات وضعیت پردازش فرزند را دریافت کند. در صورتی که پردازش والد قادر به انجام این کار نباشد، سیستم به‌طور خودکار این پردازش‌های Zombie را از جدول پردازش‌ها حذف می‌کند.

با این حال، اگر پردازش Zombie همچنان در سیستم باقی ماند، یک راه حل ممکن این است که پردازش والد را کشته و آن را از سیستم حذف کنید. این کار باعث می‌شود که پردازش‌های Zombie توسط سیستم به‌طور خودکار پاک شوند. برای انجام این کار، ابتدا باید پردازش والد را شناسایی کنید. برای این منظور می‌توانید از دستور pstree برای مشاهده درخت پردازش‌ها استفاده کنید:

pstree -p

این دستور درخت پردازش‌های والد و فرزند را به نمایش می‌گذارد. با شناسایی PID پردازش والد، می‌توانید آن را با استفاده از دستور kill متوقف کنید.

kill -9 <PID_of_parent>

2. پردازش‌های Orphan

یک پردازش Orphan به پردازشی اطلاق می‌شود که والد خود را از دست داده است. این اتفاق معمولاً زمانی می‌افتد که والد پردازش به‌طور غیرمنتظره‌ای خاتمه می‌یابد و پردازش فرزند بدون نظارت باقی می‌ماند. به‌طور پیش‌فرض، پردازش‌های Orphan توسط پردازش init (PID 1) نگهداری و مدیریت می‌شوند.

پردازش‌های Orphan معمولاً مشکل‌ساز نیستند، چرا که پردازش init به‌عنوان والد جدید آن‌ها عمل می‌کند و منابع آن‌ها را به‌درستی مدیریت می‌کند.

شناسایی پردازش‌های Orphan

برای شناسایی پردازش‌های Orphan، باید پردازش‌هایی را که والد آن‌ها همچنان در حال اجرا نیست، پیدا کنید. از آنجایی که والد یک پردازش Orphan باید PID 1 (پردازش init) باشد، می‌توانید از دستور ps برای فیلتر کردن پردازش‌هایی که والدشان init است استفاده کنید:

ps -eo pid,ppid,stat,cmd | grep ' 1 '

در این دستور، ستون ppid باید برابر با 1 باشد، که نشان‌دهنده پردازش‌هایی است که توسط init نگهداری می‌شوند.

توقف پردازش‌های Orphan

پردازش‌های Orphan نیازی به توقف ندارند، زیرا آن‌ها به‌طور خودکار توسط پردازش init مدیریت می‌شوند. این پردازش‌ها از منابع سیستم استفاده نمی‌کنند و به‌طور معمول مشکل‌ساز نمی‌شوند. با این حال، اگر به هر دلیلی پردازش Orphan به مشکل برخورد، می‌توانید آن را با استفاده از دستور kill خاتمه دهید:

kill -9 <PID_of_orphan>

جمع‌بندی

پردازش‌های Zombie و Orphan ممکن است باعث اشغال منابع سیستم و کاهش عملکرد آن شوند. پردازش‌های Zombie پس از اتمام کار خود در سیستم باقی می‌مانند و باید توسط پردازش والد یا سیستم حذف شوند. پردازش‌های Orphan معمولاً توسط پردازش init مدیریت می‌شوند و مشکلی برای سیستم ایجاد نمی‌کنند. شناسایی و مدیریت این پردازش‌ها از طریق ابزارهای مانند ps, pstree, و kill می‌تواند به حفظ کارایی سیستم کمک کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”جلوگیری از استفاده بیش از حد منابع توسط پردازش‌های خاص” subtitle=”توضیحات کامل”]گاهی اوقات ممکن است برخی پردازش‌ها به دلیل مصرف بیش از حد منابع سیستم، مانند CPU، حافظه یا I/O، عملکرد کلی سیستم را تحت تأثیر قرار دهند. برای مدیریت این مشکل، می‌توان از ابزارهایی مانند cgroups (Control Groups) استفاده کرد تا منابع را محدود و کنترل کنیم و از مشکلاتی مانند کاهش کارایی یا عدم پاسخ‌گویی سیستم جلوگیری کنیم.

1. مفهوم cgroups

cgroups (Control Groups) یک ویژگی در هسته لینوکس است که به مدیران سیستم این امکان را می‌دهد تا منابع سیستم را بین پردازش‌ها تقسیم کنند. این ابزار اجازه می‌دهد که CPU، حافظه، دیسک و دیگر منابع سیستم را برای پردازش‌ها یا گروه‌های خاصی محدود کنید. به عبارت دیگر، با استفاده از cgroups، می‌توانید مصرف منابع یک پردازش یا گروهی از پردازش‌ها را به حد معینی محدود کرده و از مصرف بی‌رویه منابع جلوگیری کنید.

با استفاده از cgroups، می‌توانید:

  • مصرف CPU پردازش‌ها را محدود کنید.
  • محدودیت‌هایی برای استفاده از حافظه و Swap اعمال کنید.
  • کنترل مصرف I/O دیسک را انجام دهید.
  • محدودیت‌های شبکه (Bandwidth) را تنظیم کنید.

2. ایجاد و استفاده از cgroups

برای استفاده از cgroups، ابتدا باید بررسی کنید که آیا بسته‌های مربوط به cgroups بر روی سیستم شما نصب هستند یا خیر. در اکثر توزیع‌های لینوکس مانند Ubuntu و CentOS، این ابزارها به‌طور پیش‌فرض نصب شده‌اند.

2.1. نصب ابزارهای cgroups

برای نصب ابزارهای cgroups می‌توانید از دستورهای زیر استفاده کنید:

در Ubuntu:

sudo apt-get install cgroup-tools

در CentOS:

sudo yum install libcgroup
2.2. ساخت یک گروه کنترل جدید

برای محدود کردن منابع یک پردازش خاص، ابتدا باید یک گروه کنترل (cgroup) ایجاد کنید. در اینجا نحوه ایجاد یک cgroup برای محدود کردن مصرف CPU را توضیح می‌دهیم.

sudo cgcreate -g cpu,memory:/mygroup

در این دستور، -g cpu,memory نشان‌دهنده این است که می‌خواهید محدودیت‌ها را برای CPU و حافظه اعمال کنید و /mygroup نام گروه کنترل جدید است.

2.3. محدود کردن منابع در cgroup

بعد از ایجاد گروه کنترل، می‌توانید محدودیت‌هایی را برای منابع مختلف اعمال کنید. به‌طور مثال:

  • محدودیت مصرف CPU: می‌توانید مصرف CPU یک گروه را محدود کنید. برای مثال، اگر بخواهید گروه شما فقط 50% از CPU را استفاده کند، دستور زیر را وارد کنید:
sudo cgset -r cpu.shares=512 /mygroup

مقدار cpu.shares معیاری است که به گروه کنترل شما تخصیص داده می‌شود. مقدار پیش‌فرض 1024 است، که نشان‌دهنده استفاده 100% از CPU است. در اینجا مقدار 512 به معنای 50% از CPU است.

  • محدودیت حافظه: برای محدود کردن مصرف حافظه، می‌توانید از دستور زیر استفاده کنید:
sudo cgset -r memory.limit_in_bytes=1G /mygroup

این دستور مصرف حافظه گروه کنترل را به 1 گیگابایت محدود می‌کند.

  • محدودیت Swap: برای محدود کردن استفاده از Swap، می‌توانید از دستور زیر استفاده کنید:
sudo cgset -r memory.memsw.limit_in_bytes=2G /mygroup

این دستور اجازه می‌دهد که گروه کنترل فقط 2 گیگابایت از Swap را استفاده کند.

2.4. افزودن پردازش‌ها به cgroup

برای اضافه کردن پردازش‌ها به یک گروه کنترل، می‌توانید از دستور زیر استفاده کنید. ابتدا باید PID پردازش مورد نظر را بدست آورید، سپس آن را به گروه کنترل خود اضافه کنید.

برای پیدا کردن PID پردازش، از دستور ps یا top استفاده کنید:

ps aux | grep <process_name>

سپس با استفاده از دستور زیر پردازش را به گروه کنترل اضافه کنید:

sudo cgclassify -g cpu,memory:/mygroup <PID>

این دستور باعث می‌شود پردازش با PID مشخص شده، به گروه کنترل /mygroup اضافه شود و محدودیت‌های منابع که قبلاً تنظیم کرده‌اید، بر آن اعمال شود.

3. مدیریت گروه‌های کنترل

علاوه بر محدود کردن منابع، شما می‌توانید وضعیت و منابع استفاده‌شده توسط گروه‌های کنترل را بررسی کنید. برای این منظور از دستور cgexec می‌توان استفاده کرد.

برای اجرای یک دستور در گروه کنترل خاص:

sudo cgexec -g cpu,memory:/mygroup <command>

این دستور، دستور <command> را در گروه کنترل /mygroup اجرا می‌کند و منابع محدود شده اعمال می‌شود.

4. استفاده از ابزارهای دیگر برای محدودسازی منابع

علاوه بر cgroups، ابزارهای دیگری مانند ulimit برای محدود کردن منابع پردازش‌ها در سطح سیستم و nice برای مدیریت اولویت پردازش‌ها در دسترس هستند.

  • ulimit: با استفاده از این ابزار می‌توان محدودیت‌هایی برای منابع مختلف سیستم نظیر حافظه، فایل‌های باز، تعداد پردازش‌ها و … اعمال کرد.به‌عنوان مثال برای محدود کردن تعداد فایل‌های باز یک پردازش:
    ulimit -n 1000
    
  • nice: این ابزار برای تنظیم اولویت پردازش‌ها مورد استفاده قرار می‌گیرد و به شما امکان می‌دهد پردازش‌هایی که مصرف منابع بیشتری دارند را با اولویت پایین‌تری اجرا کنید.

جمع‌بندی

استفاده از ابزارهایی مانند cgroups برای محدودسازی منابع پردازش‌ها یکی از راه‌های مؤثر برای جلوگیری از مصرف بی‌رویه منابع سیستم و بهبود عملکرد کلی سیستم است. با ایجاد گروه‌های کنترل و اعمال محدودیت‌های خاص بر منابع CPU، حافظه، Swap و I/O، می‌توان از مشکلاتی مانند کاهش سرعت سیستم، کرش شدن اپلیکیشن‌ها و کاهش پاسخ‌گویی جلوگیری کرد. ابزارهای دیگر مانند ulimit و nice نیز می‌توانند در مدیریت منابع به شما کمک کنند، اما استفاده از cgroups به‌عنوان یک راه‌حل جامع‌تر برای محدودسازی منابع پردازش‌ها توصیه می‌شود.[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 3. نظارت بر حافظه”][cdb_course_lesson title=”فصل 1. معرفی ساختار حافظه در لینوکس”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”مبانی حافظه در لینوکس” subtitle=”توضیحات کامل”]سیستم‌عامل لینوکس دارای یک ساختار پیچیده و بهینه برای مدیریت حافظه است که عملکرد کلی سیستم را بهبود می‌بخشد. درک این ساختار برای مدیریت بهتر سرورها و سیستم‌های لینوکسی ضروری است. در این راهنما، به بررسی مفاهیم اصلی حافظه در لینوکس می‌پردازیم.


حافظه فیزیکی (RAM) و حافظه مجازی

حافظه فیزیکی (RAM) حافظه‌ای است که پردازنده برای اجرای برنامه‌ها و پردازش داده‌ها از آن استفاده می‌کند. این حافظه دارای سرعت بالایی است اما محدودیت فضا دارد. برای مدیریت بهتر حافظه، لینوکس از حافظه مجازی استفاده می‌کند.

حافظه مجازی (Virtual Memory) شامل ترکیبی از RAM و فضای Swap است که امکان اجرای برنامه‌هایی را فراهم می‌کند که نیاز به حافظه‌ای بیشتر از ظرفیت RAM دارند. هنگامی که فضای RAM پر شود، سیستم از فضای Swap برای ذخیره موقت داده‌های غیرفعال استفاده می‌کند.

بررسی میزان حافظه فیزیکی و مجازی

برای مشاهده وضعیت حافظه فیزیکی و مجازی در لینوکس از دستور زیر استفاده کنید:

free -h

این دستور مقدار کل حافظه، میزان استفاده‌شده و مقدار آزاد را نمایش می‌دهد.

تنظیم فضای Swap

برای بررسی فضای Swap می‌توانید از دستور زیر استفاده کنید:

swapon --show

اگر Swap فعال نباشد، می‌توان یک فایل Swap ایجاد و فعال کرد:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

برای دائمی کردن این تنظیمات، باید خط زیر را به فایل /etc/fstab اضافه کنید:

/swapfile none swap sw 0 0

Cache و Buffer در لینوکس

Cache و Buffer دو مکانیزم مدیریت حافظه در لینوکس هستند که به بهینه‌سازی عملکرد سیستم کمک می‌کنند.

  • Cache: شامل داده‌های پرکاربردی است که از دیسک خوانده شده‌اند تا در دسترس پردازنده باشند و نیازی به خواندن مجدد از دیسک نباشد.
  • Buffer: شامل داده‌هایی است که در حال نوشتن روی دیسک هستند و برای بهینه‌سازی عملیات نوشتن مورد استفاده قرار می‌گیرند.
مشاهده Cache و Buffer در سیستم

برای مشاهده مقدار حافظه اشغال‌شده توسط Cache و Buffer می‌توان از دستور زیر استفاده کرد:

cat /proc/meminfo | grep -E "^Buffers|^Cached"

یا به‌صورت خلاصه با دستور free:

free -h
آزادسازی Cache و Buffer

گاهی نیاز است که حافظه Cache یا Buffer را آزاد کنیم. برای این کار می‌توان از دستور زیر استفاده کرد:

sudo sync; echo 3 | sudo tee /proc/sys/vm/drop_caches

گزینه‌های مقدار drop_caches:

  • مقدار 1: آزادسازی page cache
  • مقدار 2: آزادسازی dentry و inode cache
  • مقدار 3: آزادسازی کامل Cache

جمع‌بندی

مدیریت حافظه در لینوکس یکی از مهم‌ترین بخش‌های عملکردی این سیستم‌عامل است. در این راهنما، مفاهیم حافظه فیزیکی، حافظه مجازی، Swap، Cache و Buffer بررسی شد. با استفاده از دستورات معرفی‌شده، می‌توان بهینه‌سازی مدیریت حافظه در لینوکس را بهبود بخشید و عملکرد کلی سیستم را افزایش داد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”انواع حافظه” subtitle=”توضیحات کامل”]سیستم‌عامل لینوکس از یک ساختار پیچیده برای مدیریت حافظه استفاده می‌کند تا از منابع سخت‌افزاری به‌طور مؤثری استفاده کند و به فرآیندها و برنامه‌ها امکان دسترسی سریع و کارآمد به داده‌ها را بدهد. در این مقاله، به بررسی انواع حافظه در لینوکس می‌پردازیم که شامل حافظه فعال (Active Memory)، حافظه غیرفعال (Inactive Memory) و حافظه سواپ (Swap Memory) است. این مفاهیم به مدیران سیستم کمک می‌کند تا نحوه استفاده از منابع حافظه را به‌طور مؤثری درک کرده و مدیریت کنند.

حافظه فعال (Active Memory)

حافظه فعال به بخش‌هایی از حافظه فیزیکی (RAM) اشاره دارد که در حال حاضر توسط فرآیندها استفاده می‌شوند. این حافظه شامل داده‌ها و دستورالعمل‌هایی است که به‌طور مداوم توسط برنامه‌ها و فرآیندهای در حال اجرا خوانده و نوشته می‌شود.

وقتی یک برنامه یا فرآیند به حافظه نیاز دارد، سیستم‌عامل ابتدا تلاش می‌کند که داده‌های مورد نیاز آن را از حافظه فعال استخراج کند. اگر این داده‌ها در حافظه فعال وجود نداشته باشند، سیستم‌عامل باید به بخش‌های دیگر حافظه مانند حافظه مجازی یا سواپ مراجعه کند.

حافظه فعال معمولاً شامل داده‌هایی است که:

  • در حال حاضر به‌طور فعال توسط پردازنده یا سایر فرآیندها در حال استفاده هستند.
  • به‌طور مداوم دسترسی به آن‌ها صورت می‌گیرد.

حافظه غیرفعال (Inactive Memory)

حافظه غیرفعال به بخش‌هایی از حافظه فیزیکی اشاره دارد که در حال حاضر توسط هیچ فرآیند فعال استفاده نمی‌شوند، اما به‌دلیل اینکه قبلاً توسط یک یا چند فرآیند مورد استفاده قرار گرفته‌اند، هنوز در حافظه باقی مانده‌اند. این حافظه به‌طور موقت در حافظه باقی می‌ماند تا در صورت نیاز مجدد، سریع‌تر در دسترس قرار گیرد.

لینوکس از تکنیک‌هایی به‌نام Page Swapping برای جابه‌جایی این بخش‌ها بین حافظه و فضای ذخیره‌سازی استفاده می‌کند. در واقع، زمانی که حافظه فعال کافی نباشد، داده‌های موجود در حافظه غیرفعال ممکن است به دیسک منتقل شوند.

در لینوکس، برای مشاهده وضعیت حافظه غیرفعال از ابزارهایی مانند free یا vmstat می‌توان استفاده کرد.

برای مشاهده وضعیت حافظه فعال و غیرفعال، دستور زیر را در ترمینال وارد کنید:

free -h

در خروجی این دستور، بخش‌هایی به نام buffers/cache و inactive نشان‌دهنده حافظه غیرفعال هستند.

حافظه سواپ (Swap Memory)

حافظه سواپ فضایی است که در دیسک یا پارتیشن ذخیره‌سازی قرار دارد و به سیستم‌عامل کمک می‌کند تا زمانی که حافظه فیزیکی (RAM) پر شود، به‌طور موقت داده‌های برخی از فرآیندها را به دیسک منتقل کند. این عمل به‌ویژه زمانی که سیستم با کمبود حافظه مواجه می‌شود، اهمیت پیدا می‌کند.

سیستم‌عامل لینوکس از حافظه سواپ برای ذخیره داده‌ها و صفحات حافظه استفاده می‌کند که در حال حاضر نیاز به استفاده فوری ندارند. زمانی که حافظه فیزیکی به‌طور کامل پر شود و هیچ حافظه آزاد دیگری وجود نداشته باشد، داده‌ها از حافظه فعال به فضای سواپ منتقل می‌شوند.

برای بررسی وضعیت فضای سواپ و استفاده از آن در لینوکس، می‌توان از دستور زیر استفاده کرد:

swapon --show

این دستور لیستی از پارتیشن‌ها یا فایل‌های سواپ در سیستم را نشان می‌دهد و میزان استفاده از حافظه سواپ را نمایش می‌دهد.

پیکربندی حافظه سواپ

  1. ایجاد فایل سواپ: برای ایجاد یک فایل سواپ جدید، ابتدا باید اندازه فایل سواپ را مشخص کنید. به‌عنوان مثال، برای ایجاد یک فایل سواپ 1 گیگابایتی، از دستورات زیر استفاده کنید:

    ابتدا فایل سواپ را بسازید:

    sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
    

    سپس مجوزهای لازم را تنظیم کنید:

    sudo chmod 600 /swapfile
    

    فایل سواپ را فرمت کنید:

    sudo mkswap /swapfile
    

    فایل سواپ را فعال کنید:

    sudo swapon /swapfile
    
  2. اضافه کردن به فایل fstab برای راه‌اندازی خودکار: برای اینکه فایل سواپ در هنگام راه‌اندازی سیستم به‌طور خودکار فعال شود، باید آن را به فایل /etc/fstab اضافه کنید. برای این کار، دستور زیر را وارد کنید:
    sudo nano /etc/fstab
    

    سپس در انتهای فایل، خط زیر را اضافه کنید:

    /swapfile none swap sw 0 0
    
  3. تنظیمات swappiness: پارامتر swappiness تعیین می‌کند که سیستم چه زمانی از فضای سواپ استفاده کند. مقدار swappiness از 0 تا 100 متغیر است. مقدار پایین به این معنی است که سیستم کمتر از سواپ استفاده می‌کند، در حالی که مقدار بالا نشان‌دهنده استفاده بیشتر از سواپ است.

    برای مشاهده مقدار فعلی swappiness:

    cat /proc/sys/vm/swappiness
    

    برای تغییر مقدار swappiness به 10 (یعنی استفاده کمتر از سواپ)، از دستور زیر استفاده کنید:

    sudo sysctl vm.swappiness=10
    

    برای اعمال تغییرات به‌صورت دائمی، باید این مقدار را به فایل /etc/sysctl.conf اضافه کنید:

    sudo nano /etc/sysctl.conf
    

    سپس خط زیر را به این فایل اضافه کنید:

    vm.swappiness=10
    

جمع بندی

در این بخش، ساختار حافظه در لینوکس را از جنبه‌های مختلف بررسی کردیم. حافظه فعال، حافظه غیرفعال و حافظه سواپ هرکدام نقش‌های خاص خود را در مدیریت حافظه سیستم ایفا می‌کنند. حافظه فعال مربوط به داده‌هایی است که در حال حاضر در حال استفاده هستند، حافظه غیرفعال به داده‌هایی اطلاق می‌شود که به‌طور موقت در حافظه باقی مانده‌اند، و حافظه سواپ به‌عنوان فضایی برای ذخیره‌سازی موقت داده‌ها هنگام کمبود حافظه فیزیکی عمل می‌کند. با استفاده از ابزارها و دستورات لینوکس می‌توانید وضعیت حافظه را مانیتور کرده و تنظیمات مربوط به سواپ را به‌طور مؤثر پیکربندی کنید تا عملکرد سیستم بهینه شود.[/cdb_course_lesson][cdb_course_lesson title=”فصل 2. بررسی دستورات پایه نظارت بر حافظه”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی دستور free” subtitle=”توضیحات کامل”]یکی از مهم‌ترین جنبه‌های مدیریت سیستم‌عامل، نظارت بر استفاده از حافظه است. در سیستم‌عامل لینوکس، چندین دستور وجود دارد که به مدیران سیستم این امکان را می‌دهد تا وضعیت حافظه سیستم را بررسی کنند. در این بخش، به بررسی دستور free می‌پردازیم که یکی از ابزارهای اصلی برای نمایش وضعیت حافظه است.

دستور free

دستور free یکی از ساده‌ترین و کاربردی‌ترین دستورات برای مشاهده وضعیت کلی حافظه در لینوکس است. این دستور به‌طور خلاصه اطلاعات مربوط به حافظه فیزیکی (RAM) و حافظه مجازی (Swap) را نمایش می‌دهد. به‌طور ویژه، این دستور اطلاعاتی در مورد حافظه استفاده‌شده، آزاد، و کش‌شده در اختیار شما قرار می‌دهد.

برای استفاده از دستور free، کافی است آن را به‌صورت ساده در ترمینال وارد کنید:

free

خروجی دستور free به‌طور معمول به‌صورت زیر نمایش داده می‌شود:

              total        used        free      shared  buff/cache   available
Mem:            15Gi        5.1Gi        2.0Gi       452Mi       7.9Gi        9.8Gi
Swap:           2.0Gi       0B          2.0Gi

فیلدهای مختلف دستور free

در خروجی دستور free چندین فیلد مختلف وجود دارد که اطلاعات مفیدی را در مورد وضعیت حافظه سیستم ارائه می‌دهد. این فیلدها به شرح زیر هستند:

  1. total: این فیلد نمایش‌دهنده کل حافظه موجود در سیستم است که شامل حافظه فیزیکی (RAM) و حافظه سواپ می‌شود. این مقدار معمولاً همان مقداری است که در سیستم شما نصب شده است.
  2. used: این فیلد میزان حافظه‌ای را که توسط فرآیندها و سیستم‌عامل در حال استفاده است، نشان می‌دهد. این شامل حافظه‌ای می‌شود که به‌طور مستقیم توسط برنامه‌ها یا فرآیندها اشغال شده است.
  3. free: این فیلد میزان حافظه‌ای را که به‌طور کامل آزاد است و در حال حاضر توسط هیچ فرآیندی استفاده نمی‌شود، نمایش می‌دهد.
  4. shared: این فیلد میزان حافظه‌ای را نشان می‌دهد که به‌طور مشترک توسط چندین فرآیند استفاده می‌شود. این حافظه معمولاً به‌وسیله سیستم‌عامل برای فرآیندهای مشترک، مانند حافظه اشتراکی برای ارتباطات بین‌فرآیندی، تخصیص می‌یابد.
  5. buff/cache: این فیلد میزان حافظه‌ای را که برای ذخیره‌سازی داده‌های کش‌شده و بافرها (Cache and Buffers) استفاده می‌شود، نمایش می‌دهد. در واقع، این حافظه برای ذخیره‌سازی اطلاعاتی که ممکن است به‌زودی مورد استفاده قرار بگیرند، تخصیص می‌یابد. به‌طور خاص:
    • Buffer: برای ذخیره‌سازی داده‌های ورودی/خروجی (I/O) استفاده می‌شود.
    • Cache: برای ذخیره‌سازی داده‌هایی که به‌طور مکرر در دسترس هستند، استفاده می‌شود.
  6. available: این فیلد به میزان حافظه‌ای اشاره دارد که هنوز برای استفاده فرآیندهای جدید در دسترس است، حتی اگر برخی از حافظه به‌عنوان کش یا بافر استفاده شده باشد. این مقدار دقیق‌تر از فیلد free است، زیرا حافظه کش‌شده و بافر شده ممکن است در صورت نیاز به راحتی آزاد شود.

استفاده از دستور free با پارامترهای اضافی

دستور free می‌تواند با پارامترهای مختلفی همراه شود تا جزئیات بیشتری از وضعیت حافظه را نشان دهد:

  1. خروجی با واحدهای مناسب (حافظه به گیگابایت یا مگابایت): برای نمایش خروجی به‌صورت قابل‌فهم‌تر با واحدهایی مانند گیگابایت (GB) یا مگابایت (MB)، می‌توانید از پارامتر -h استفاده کنید:
    free -h
    

    این دستور خروجی را به‌صورت انسان‌پسند نمایش می‌دهد و مقادیر به‌صورت مگابایت (MB)، گیگابایت (GB) یا سایر واحدهای مناسب نمایش داده می‌شوند.

  2. خروجی در زمان واقعی با پارامتر -s: اگر بخواهید وضعیت حافظه را در فواصل زمانی خاصی مشاهده کنید، می‌توانید از پارامتر -s برای تعیین فاصله زمانی بین به‌روزرسانی‌ها استفاده کنید. به‌عنوان مثال، برای مشاهده وضعیت حافظه هر 5 ثانیه یک‌بار:
    free -s 5
    

    این دستور وضعیت حافظه را هر 5 ثانیه یک‌بار به‌روزرسانی می‌کند.

  3. خروجی کامل همراه با جزئیات سواپ: برای مشاهده جزئیات کامل در مورد حافظه و سواپ به‌صورت جداگانه، می‌توانید از پارامتر -t استفاده کنید:
    free -t
    

    این دستور اطلاعات اضافی در مورد حافظه سواپ را نیز به خروجی اضافه می‌کند.


جمع بندی

دستور free در لینوکس ابزاری ساده و قدرتمند برای نظارت بر وضعیت حافظه است. این دستور اطلاعاتی درباره حافظه فیزیکی و سواپ سیستم، مقدار حافظه آزاد و استفاده‌شده، و حافظه کش‌شده و بافر شده فراهم می‌آورد. با استفاده از پارامترهای مختلف این دستور می‌توان به جزئیات بیشتری دست یافت و نظارت دقیقی بر منابع حافظه سیستم داشت. این اطلاعات به مدیران سیستم کمک می‌کند تا عملکرد سیستم را بهینه کرده و در صورت نیاز، اقداماتی برای آزادسازی حافظه انجام دهند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی دستور vmstat در لینوکس” subtitle=”توضیحات کامل”]دستور vmstat یکی از ابزارهای کاربردی و قدرتمند در لینوکس است که برای نظارت بر وضعیت سیستم در زمینه‌های مختلف از جمله حافظه، پردازنده (CPU)، ورودی/خروجی (I/O) و اطلاعات سیستم استفاده می‌شود. این ابزار به‌ویژه برای تحلیل و مشاهده رفتار حافظه در لحظه مفید است و اطلاعاتی را در مورد نحوه استفاده از منابع سیستم در اختیار مدیران سیستم قرار می‌دهد.

دستور vmstat

دستور vmstat اطلاعات مختلفی از جمله وضعیت حافظه، فعالیت‌های پردازنده، و آمار ورودی/خروجی سیستم را نمایش می‌دهد. این دستور معمولاً برای شبیه‌سازی و بررسی عملکرد سیستم در زمان واقعی استفاده می‌شود.

برای استفاده از دستور vmstat، کافی است آن را به‌صورت زیر در ترمینال وارد کنید:

vmstat

خروجی این دستور معمولاً به‌صورت جدولی با چندین ستون مختلف نمایش داده می‌شود که هر کدام نشان‌دهنده یک جنبه از عملکرد سیستم است.

فیلدهای مختلف دستور vmstat

خروجی استاندارد دستور vmstat به‌طور پیش‌فرض به شکل زیر است:

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----
 r  b   swpd   free   buff  cache   si  so   bi   bo   in   cs us sy id wa st
 1  0      0  123456  9876  54321    0   0    34    12   567   234  5  2  93  0  0

در اینجا هر کدام از فیلدها نمایانگر اطلاعات مختلف سیستم هستند:

  1. procs (فرآیندها):
    • r: تعداد فرآیندهایی که در حال اجرا هستند (ready to run).
    • b: تعداد فرآیندهایی که در حالت خواب (blocked) هستند و منتظر منابع (مانند I/O) می‌باشند.
  2. memory (حافظه):
    • swpd: مقدار حافظه سواپ (swap) در حال استفاده به کیلوبایت.
    • free: مقدار حافظه آزاد (free memory) به کیلوبایت.
    • buff: مقدار حافظه‌ای که برای بافرها (buffers) استفاده می‌شود به کیلوبایت.
    • cache: مقدار حافظه‌ای که برای کش (cache) استفاده می‌شود به کیلوبایت.
  3. swap (حافظه سواپ):
    • si: مقدار حافظه‌ای که از دیسک به حافظه فیزیکی منتقل می‌شود (swap in) به کیلوبایت در ثانیه.
    • so: مقدار حافظه‌ای که از حافظه فیزیکی به دیسک منتقل می‌شود (swap out) به کیلوبایت در ثانیه.
  4. I/O (ورودی/خروجی):
    • bi: تعداد بلوک‌های خوانده‌شده از دیسک (block input) در ثانیه.
    • bo: تعداد بلوک‌های نوشته‌شده به دیسک (block output) در ثانیه.
  5. system (سیستم):
    • in: تعداد وقایع (interrupts) در ثانیه.
    • cs: تعداد تغییرات در حالت پردازنده (context switches) در ثانیه.
  6. CPU (پردازنده):
    • us: درصد استفاده از پردازنده توسط فرآیندهای کاربر (user space) در ثانیه.
    • sy: درصد استفاده از پردازنده توسط سیستم (kernel) در ثانیه.
    • id: درصد زمانی که پردازنده بی‌کار است (idle).
    • wa: درصد زمانی که پردازنده در حال انتظار برای عملیات ورودی/خروجی (I/O wait) است.
    • st: درصد زمانی که پردازنده در اثر ماشین مجازی (virtualization) در حال استفاده است (stolen time).

کاربردهای دستور vmstat

دستور vmstat به دلیل نمایش اطلاعات لحظه‌ای از وضعیت سیستم، به‌ویژه در تشخیص مشکلات عملکردی مفید است. در اینجا به برخی از کاربردهای اصلی این دستور اشاره می‌کنیم:

  1. مشاهده وضعیت کلی حافظه: با استفاده از vmstat می‌توانیم ببینیم که چه مقدار از حافظه در حال استفاده است و چه مقدار به‌طور آزاد باقی مانده است. همچنین، می‌توانیم میزان استفاده از حافظه سواپ را بررسی کنیم.

    برای مثال، اگر مقدار swpd (حافظه سواپ) زیاد باشد، نشان‌دهنده این است که سیستم در حال استفاده زیاد از حافظه سواپ است که می‌تواند به معنای کمبود حافظه فیزیکی باشد.

  2. شناسایی مشکلات I/O: از آنجایی که vmstat اطلاعات مربوط به ورودی/خروجی (bi, bo) را نمایش می‌دهد، می‌توانید بررسی کنید که آیا سیستم دچار مشکلات مربوط به دیسک است یا خیر. اگر مقادیر bi و bo بالا باشند، این می‌تواند نشان‌دهنده فشار بالای I/O بر سیستم باشد.
  3. تحلیل رفتار پردازنده: اطلاعات موجود در فیلدهای CPU (us, sy, id, wa) کمک می‌کند تا متوجه شوید که پردازنده در چه وضعیتی قرار دارد. برای مثال:
    • اگر مقدار us بالا باشد، به این معنا است که پردازنده بیشتر درگیر پردازش‌های کاربر است.
    • اگر مقدار sy بالا باشد، پردازنده بیشتر درگیر انجام کارهای سیستم است.
    • مقدار wa بالا نشان‌دهنده انتظار پردازنده برای عملیات ورودی/خروجی است که می‌تواند باعث کندی سیستم شود.
  4. نظارت بر فرآیندهای سیستم: فیلدهای r و b به شما کمک می‌کنند تا وضعیت فرآیندها را بررسی کنید. اگر مقدار r زیاد باشد، به این معنا است که تعداد فرآیندهای آماده به اجرا زیاد است. در حالی که مقدار بالای b می‌تواند نشان‌دهنده مشکلاتی در منابع ورودی/خروجی باشد.

استفاده از دستور vmstat با پارامترهای اضافی

  1. مشاهده خروجی در فواصل زمانی خاص: برای مشاهده اطلاعات وضعیت سیستم به‌طور مداوم و در فواصل زمانی خاص، می‌توانید از پارامتر -s استفاده کنید و تعیین کنید که وضعیت سیستم هر چند ثانیه به‌روزرسانی شود:
    vmstat 5
    

    این دستور وضعیت سیستم را هر 5 ثانیه به‌روزرسانی می‌کند.

  2. مشاهده اطلاعات کامل‌تر: برای نمایش اطلاعات بیشتر در مورد سیستم، از گزینه -a می‌توانید استفاده کنید که جزئیات بیشتری در مورد استفاده از حافظه و تخصیصات سیستم نمایش می‌دهد:
    vmstat -a
    

جمع بندی

دستور vmstat ابزاری مفید برای نظارت بر وضعیت کلی سیستم در زمینه‌های مختلف از جمله حافظه، پردازنده، ورودی/خروجی و رفتار کلی سیستم است. این دستور به‌ویژه در شبیه‌سازی عملکرد سیستم در زمان واقعی و تحلیل مشکلات مرتبط با منابع سیستم کمک می‌کند. با استفاده از اطلاعات به‌دست‌آمده از vmstat، مدیران سیستم می‌توانند به بهینه‌سازی عملکرد سیستم و شناسایی مشکلات کمک کنند.[/cdb_course_lesson][cdb_course_lesson title=”فصل 3. تحلیل جزئی‌تر حافظه با ابزارهای پیشرفته”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”دستور smem” subtitle=”توضیحات کامل”]در صورتی که نیاز به تحلیل دقیق‌تر و جزئی‌تر مصرف حافظه سیستم و فرآیندها داشته باشید، ابزارهای پیشرفته‌تری از جمله smem می‌توانند کمک کنند. این ابزار اطلاعات دقیقی از مصرف حافظه توسط فرآیندها ارائه می‌دهد و مقادیر مختلفی همچون RSS، PSS، و USS را برای تحلیل دقیق‌تر وضعیت حافظه به نمایش می‌گذارد. در این بخش، به توضیح و استفاده از دستور smem خواهیم پرداخت.

دستور smem

دستور smem یکی از ابزارهای پیشرفته برای نمایش مصرف حافظه توسط فرآیندها در لینوکس است. برخلاف دستورات ساده‌تری مانند free و vmstat، smem امکان تفکیک مصرف حافظه فرآیندها را به‌صورت دقیق فراهم می‌آورد. این دستور با نمایش جزئیاتی در مورد حافظه واقعی (RSS)، حافظه اشتراکی (PSS) و حافظه اختصاصی (USS)، کمک می‌کند تا تصویری شفاف از نحوه استفاده حافظه در سیستم به دست آورید.

برای استفاده از دستور smem به‌سادگی می‌توانید آن را در ترمینال وارد کنید:

smem

خروجی این دستور به‌طور معمول به‌صورت جدول نمایش داده می‌شود که شامل اطلاعات مهمی در خصوص مصرف حافظه هر فرآیند است. برای نمونه، خروجی مشابه به زیر خواهد بود:

  PID User     Command            Swap      USS    PSS    RSS
  123 root     /usr/lib/firefox   0         1024M  1100M  1200M
  456 user     /usr/bin/python3    0         512M   600M   640M
  789 root     /usr/bin/mysql      0         256M   300M   320M

فیلدهای مختلف دستور smem

در خروجی دستور smem چندین ستون مختلف نمایش داده می‌شود که هرکدام اطلاعات خاصی در مورد مصرف حافظه فرآیندها دارند. این فیلدها عبارتند از:

  1. PID:
    • شناسه فرآیند (Process ID) است که هر فرآیند در سیستم دارد.
  2. User:
    • کاربری که فرآیند مربوطه را اجرا کرده است.
  3. Command:
    • نام فرمان یا برنامه‌ای است که فرآیند به‌وسیله آن اجرا شده است.
  4. Swap:
    • میزان حافظه‌ای است که فرآیند در حال استفاده از فضای سواپ (swap) است.
  5. USS (Unique Set Size):
    • میزان حافظه اختصاصی فرآیند است که به هیچ فرآیند دیگری تعلق ندارد. به‌عبارت دیگر، این حافظه تنها توسط فرآیند مورد نظر استفاده می‌شود و هیچ‌گونه اشتراکی با فرآیندهای دیگر ندارد.
  6. PSS (Proportional Set Size):
    • اندازه حافظه پروپورسیونی است که نشان‌دهنده میزان حافظه‌ای است که یک فرآیند به‌طور اشتراکی با دیگر فرآیندها استفاده می‌کند، اما به‌طور متناسب به آن فرآیند اختصاص داده می‌شود. در واقع، PSS به هر فرآیند نسبت به میزان اشتراکی که دارد حافظه تخصیص می‌دهد. برای مثال، اگر دو فرآیند از یک بخش حافظه مشترک استفاده کنند، PSS به هرکدام از این فرآیندها نیم‌مقدار حافظه اشتراکی را تخصیص می‌دهد.
  7. RSS (Resident Set Size):
    • اندازه حافظه فیزیکی (RAM) است که توسط یک فرآیند اشغال شده است. این مقدار شامل حافظه اختصاصی (USS) و حافظه اشتراکی است که توسط فرآیندها به اشتراک گذاشته می‌شود. به‌عبارت دیگر، این فیلد مقدار کل حافظه‌ای را که یک فرآیند در حافظه فیزیکی استفاده کرده است، نمایش می‌دهد.

کاربردهای دستور smem

دستور smem به‌طور خاص برای بررسی و تحلیل دقیق مصرف حافظه توسط فرآیندها طراحی شده است. در ادامه برخی از کاربردهای این دستور را بررسی می‌کنیم:

  1. مشاهده مصرف دقیق حافظه توسط فرآیندها: با استفاده از smem می‌توانید دقیقاً مشاهده کنید که هر فرآیند چقدر حافظه استفاده می‌کند. این اطلاعات به‌ویژه در مواقعی که با مشکلات مصرف زیاد حافظه مواجه هستید، بسیار مفید است.

    برای مثال، اگر یک فرآیند به‌طور غیرمنتظره‌ای از حافظه زیادی استفاده می‌کند، دستور smem می‌تواند کمک کند تا دلیل آن را شناسایی کنید و از میزان حافظه اشتراکی یا اختصاصی استفاده‌شده مطلع شوید.

  2. تفکیک حافظه اشتراکی و اختصاصی: یکی از مزایای اصلی استفاده از smem این است که مصرف حافظه را به‌طور دقیق‌تری تفکیک می‌کند. مقادیر USS و PSS به شما کمک می‌کنند تا بفهمید چه مقدار از حافظه توسط فرآیند به‌طور اختصاصی و چه مقدار به‌طور اشتراکی استفاده می‌شود. این اطلاعات برای شناسایی فرآیندهای مصرف‌کننده حافظه بسیار مفید است.

    به‌عنوان مثال، اگر دو یا چند فرآیند از حافظه مشترک استفاده می‌کنند، مقدار PSS هر فرآیند به‌طور نسبی محاسبه می‌شود، که کمک می‌کند میزان واقعی مصرف حافظه هر فرآیند را بهتر درک کنید.

  3. تشخیص حافظه سواپ (Swap): دستور smem همچنین نشان می‌دهد که چه مقدار حافظه سواپ توسط هر فرآیند استفاده می‌شود. در صورتی که فرآیندها به‌طور زیاد از حافظه سواپ استفاده کنند، این ممکن است نشان‌دهنده مشکلاتی در حافظه فیزیکی باشد که نیاز به توجه و رسیدگی فوری دارد.
  4. مدیریت حافظه در سرورهای با بار زیاد: اگر در محیط‌های سرور با بار زیاد کار می‌کنید، دستور smem به شما کمک می‌کند تا دقیقا ببینید که کدام فرآیندها بیشترین فشار را بر روی حافظه می‌آورند. این می‌تواند به شناسایی فرآیندهایی که نیاز به بهینه‌سازی یا تنظیمات بیشتر دارند، کمک کند.

استفاده از دستور smem با پارامترهای اضافی

  1. مشاهده اطلاعات در فرمت قابل خواندن: برای مشاهده خروجی به‌صورت قابل خواندن و با استفاده از واحدهایی مانند مگابایت یا گیگابایت، می‌توانید از پارامتر -r استفاده کنید:
    smem -r
    
  2. مشاهده فقط فرآیندهای خاص: برای مشاهده اطلاعات فقط در مورد یک فرآیند خاص، می‌توانید از گزینه -p همراه با PID فرآیند استفاده کنید:
    smem -p 12345
    

جمع بندی

ابزار smem یک ابزار قدرتمند برای تحلیل دقیق‌تر مصرف حافظه در لینوکس است. این دستور اطلاعاتی در مورد حافظه اختصاصی (USS)، پروپورسیونی (PSS) و حافظه واقعی (RSS) به‌طور جداگانه برای هر فرآیند نمایش می‌دهد که برای شناسایی دقیق‌تری از نحوه استفاده حافظه توسط فرآیندها و شناسایی مشکلات حافظه مفید است. با استفاده از این ابزار می‌توان به‌راحتی رفتار حافظه در سیستم را بررسی کرد و در صورت لزوم اقداماتی برای بهینه‌سازی یا رفع مشکلات حافظه انجام داد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تحلیل حافظه فرآیندها با ابزار pmap” subtitle=”توضیحات کامل”]ابزار pmap در لینوکس یکی از ابزارهای مفید برای تحلیل جزئیات نقشه حافظه فرآیندها است. این ابزار به‌ویژه برای شناسایی محل‌های مختلف مصرف حافظه نظیر Stack، Heap، و Shared Libraries کاربرد دارد. در این بخش، به توضیح و استفاده از دستور pmap خواهیم پرداخت و روش‌های مختلف استفاده از آن را بررسی می‌کنیم.

دستور pmap

دستور pmap به شما این امکان را می‌دهد که نقشه حافظه یک فرآیند خاص را بررسی کنید. این نقشه نشان‌دهنده نحوه تخصیص و استفاده حافظه توسط فرآیند است، از جمله جزئیات مهمی مانند حافظه مربوط به Stack، Heap، و Shared Libraries.

برای مشاهده نقشه حافظه یک فرآیند خاص، کافی است دستور pmap را به‌صورت زیر استفاده کنید:

pmap <PID>

در اینجا <PID> شناسه فرآیند است که می‌خواهید نقشه حافظه آن را مشاهده کنید.

خروجی دستور pmap

خروجی دستور pmap شامل اطلاعاتی در مورد هر بخش حافظه اختصاص‌یافته به فرآیند، اندازه آن بخش و آدرس‌های مربوط به آن است. برای نمونه، خروجی ممکن است به‌صورت زیر باشد:

000000400000-000000401000 r-xp 00000000 08:02 123456 /usr/bin/ls
000000600000-000000601000 r--p 00001000 08:02 123456 /usr/bin/ls
000000800000-000000801000 rw-p 00002000 08:02 123456 /usr/bin/ls
00007f7f4d000000-00007f7f4d021000 r-xp 00000000 08:02 789101 /lib/x86_64-linux-gnu/libc.so.6
00007f7f4d021000-00007f7f4d221000 ---p 00121000 08:02 789101 /lib/x86_64-linux-gnu/libc.so.6
00007f7f4d221000-00007f7f4d231000 r--p 00121000 08:02 789101 /lib/x86_64-linux-gnu/libc.so.6
...

این خروجی نشان‌دهنده نقشه حافظه فرآیند است که شامل چندین بخش است. در هر خط، اطلاعات مربوط به یک بخش حافظه شامل آدرس‌های شروع و پایان، نوع دسترسی به حافظه (خواندن، نوشتن، اجرا) و نام فایل (اگر مربوط به Shared Library باشد) نمایش داده می‌شود.

فیلدهای مختلف خروجی دستور pmap

در خروجی دستور pmap چندین ستون وجود دارد که اطلاعات مختلفی را نمایش می‌دهند:

  1. آدرس حافظه (Memory Address):
    • این بخش شامل آدرس‌های شروع و پایان هر بخش حافظه اختصاص‌یافته به فرآیند است.
  2. نوع دسترسی به حافظه (Access Type):
    • این بخش نوع دسترسی به حافظه را نشان می‌دهد. مقادیر ممکن عبارتند از:
      • r: فقط خواندن
      • w: فقط نوشتن
      • x: قابل اجرا
      • rw: خواندن و نوشتن
      • r-x: خواندن و قابل اجرا
      • و دیگر ترکیب‌ها
  3. اندازه حافظه (Size):
    • این ستون نشان‌دهنده اندازه بخش حافظه به‌طور معمول در کیلوبایت یا مگابایت است.
  4. نام فایل (File Name):
    • در صورتی که حافظه مربوط به یک Shared Library یا فایل اجرایی باشد، نام آن فایل در این ستون نمایش داده می‌شود.

شناسایی محل‌های مختلف مصرف حافظه

یکی از ویژگی‌های اصلی دستور pmap، این است که می‌توانید جزئیات محل‌های مختلف مصرف حافظه توسط فرآیند را شناسایی کنید. این محل‌ها معمولاً شامل موارد زیر هستند:

  1. Stack:
    • حافظه مربوط به Stack فرآیند جایی است که متغیرهای محلی، بازگشت‌ها، و داده‌های مربوط به توابع در آن قرار دارند. Stack به‌طور معمول در ابتدای آدرس‌های حافظه فرآیند قرار دارد.

    برای شناسایی بخش مربوط به Stack در خروجی pmap، به دنبال بخش‌هایی با آدرس‌های پایین و نوع دسترسی rw-p یا مشابه آن باشید.

  2. Heap:
    • Heap بخش حافظه است که برای تخصیص حافظه پویا (dynamic memory allocation) در طول اجرای برنامه استفاده می‌شود. این حافظه معمولاً برای ذخیره‌سازی داده‌های بزرگ یا متغیرهای طولانی‌مدت به کار می‌رود.

    برای شناسایی بخش مربوط به Heap در خروجی pmap، به دنبال بخش‌هایی با آدرس‌های بالاتر و نوع دسترسی rw-p باشید که معمولاً پس از Stack قرار دارند.

  3. Shared Libraries:
    • کتابخانه‌های مشترک (Shared Libraries) بخش‌هایی از حافظه هستند که به‌وسیله چندین فرآیند به اشتراک گذاشته می‌شوند. این بخش‌ها معمولاً در آدرس‌های بالاتر از Heap قرار دارند و به‌عنوان مثال می‌توانند مربوط به کتابخانه‌های سیستم مانند libc.so باشند.

    در خروجی pmap، این بخش‌ها معمولاً با آدرس‌های بالاتر و نوع دسترسی r-x همراه با نام فایل‌های مربوط به کتابخانه‌ها نمایش داده می‌شوند.

مثال عملی از دستور pmap

در این مثال، فرض کنید یک فرآیند با PID 12345 دارید که می‌خواهید نقشه حافظه آن را بررسی کنید:

pmap 12345

خروجی ممکن است مشابه زیر باشد:

12345:   /usr/bin/python3
000000400000-000000401000 r-xp 00000000 08:02 123456 /usr/bin/python3
000000600000-000000601000 r--p 00001000 08:02 123456 /usr/bin/python3
000000800000-000000801000 rw-p 00002000 08:02 123456 /usr/bin/python3
00007f7f4d000000-00007f7f4d021000 r-xp 00000000 08:02 789101 /lib/x86_64-linux-gnu/libc.so.6
00007f7f4d021000-00007f7f4d221000 ---p 00121000 08:02 789101 /lib/x86_64-linux-gnu/libc.so.6
00007f7f4d221000-00007f7f4d231000 r--p 00121000 08:02 789101 /lib/x86_64-linux-gnu/libc.so.6
...

در این مثال، شما می‌توانید نقشه حافظه فرآیند Python را مشاهده کنید. به‌طور خاص، بخش‌های مربوط به کتابخانه‌های مشترک (libc.so.6) و بخش‌های مختلف Stack و Heap قابل مشاهده است.

استفاده از گزینه‌های اضافی دستور pmap

  1. مشاهده جزئیات بیشتر: برای مشاهده جزئیات بیشتری از نقشه حافظه، می‌توانید از گزینه -x استفاده کنید که اطلاعات دقیق‌تری در مورد مصرف حافظه هر بخش نمایش می‌دهد:
    pmap -x <PID>
    
  2. مشاهده در قالب خلاصه‌شده: برای نمایش خروجی به‌صورت خلاصه و تنها با نمایش اطلاعات ضروری، می‌توانید از گزینه -d استفاده کنید:
    pmap -d <PID>
    

جمع بندی

دستور pmap یک ابزار قدرتمند برای تحلیل و بررسی دقیق نقشه حافظه فرآیندها در لینوکس است. این ابزار به شما کمک می‌کند تا نحوه تخصیص حافظه در سیستم را درک کنید و محل‌های مختلف مصرف حافظه نظیر Stack، Heap و Shared Libraries را شناسایی نمایید. با استفاده از pmap می‌توانید به‌طور دقیق‌تر از منابع حافظه استفاده کنید و مشکلات احتمالی مربوط به مصرف حافظه را شناسایی و مدیریت نمایید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 4. مدیریت Swap”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”مدیریت فضای Swap با دستورات swapoff و swapon” subtitle=”توضیحات کامل”]فضای Swap در لینوکس به‌عنوان حافظه پشتیبان برای زمانی که حافظه فیزیکی (RAM) در سیستم پر می‌شود، عمل می‌کند. این فضای ذخیره‌سازی معمولاً در دیسک سخت (HDD) یا دیسک حالت جامد (SSD) قرار دارد و در صورت نیاز برای ذخیره‌سازی داده‌های موقت که قادر به قرارگیری در حافظه فیزیکی نیستند، استفاده می‌شود.

در این بخش، به توضیح دستورات swapoff و swapon خواهیم پرداخت که برای فعال و غیرفعال‌سازی فضای Swap مورد استفاده قرار می‌گیرند.

دستور swapon

دستور swapon برای فعال‌سازی فضای Swap در لینوکس به‌کار می‌رود. این دستور فضای Swap موجود در سیستم را از طریق پارتیشن‌ها یا فایل‌های Swap فعال می‌کند.

برای فعال‌سازی فضای Swap، دستور زیر را وارد کنید:

sudo swapon <device or file>

در اینجا <device or file> باید به نام پارتیشن یا فایل Swap که قصد دارید فعال کنید، اشاره داشته باشد. به‌عنوان مثال، اگر می‌خواهید پارتیشن Swap در مسیر /dev/sda2 را فعال کنید، دستور به‌صورت زیر خواهد بود:

sudo swapon /dev/sda2

یا اگر از فایل Swap استفاده می‌کنید، به‌عنوان مثال فایل /swapfile:

sudo swapon /swapfile

دستور swapoff

دستور swapoff برای غیرفعال‌سازی فضای Swap به‌کار می‌رود. با استفاده از این دستور، فضای Swap به‌طور موقت غیر فعال می‌شود و سیستم نمی‌تواند از آن برای ذخیره‌سازی داده‌ها استفاده کند.

برای غیرفعال‌سازی فضای Swap، دستور زیر را وارد کنید:

sudo swapoff <device or file>

به‌عنوان مثال، برای غیرفعال کردن پارتیشن Swap در /dev/sda2، دستور به‌صورت زیر خواهد بود:

sudo swapoff /dev/sda2

و برای غیرفعال کردن فایل Swap در /swapfile، دستور به‌صورت زیر است:

sudo swapoff /swapfile

نمایش وضعیت فضای Swap

قبل از فعال یا غیرفعال کردن فضای Swap، ممکن است بخواهید وضعیت فعلی آن را بررسی کنید. برای این کار می‌توانید از دستور swapon -s یا free استفاده کنید.

  1. دستور swapon -s: این دستور لیستی از پارتیشن‌ها و فایل‌های Swap فعال را نمایش می‌دهد.
    swapon -s
    

    خروجی نمونه:

    Filename                                Type            Size    Used    Priority
    /dev/sda2                               partition       2048M   0M      -1
    /swapfile                               file            1024M   512M    0
    
  2. دستور free: دستور free به‌طور کلی اطلاعاتی در مورد حافظه فیزیکی و فضای Swap به شما می‌دهد. برای مشاهده استفاده از Swap با این دستور، می‌توانید از فرمان زیر استفاده کنید:
    free -h
    

    خروجی نمونه:

                  total        used        free      shared  buff/cache   available
    Mem:            16G         8.0G         3.5G         200M        4.5G         7.2G
    Swap:           3.0G         1.5G         1.5G
    

استفاده از swapon و swapoff در مدیریت سیستم

  1. فعال‌سازی Swap پس از راه‌اندازی سیستم: اگر می‌خواهید پس از راه‌اندازی مجدد سیستم، فضای Swap به‌طور خودکار فعال شود، باید پیکربندی آن را در فایل /etc/fstab انجام دهید. به‌عنوان مثال، اگر از پارتیشن یا فایل Swap استفاده می‌کنید، باید خط مناسبی را در این فایل اضافه کنید.

    برای مثال، اگر از فایل Swap در /swapfile استفاده می‌کنید، باید در فایل /etc/fstab خط زیر را اضافه کنید:

    /swapfile none swap sw 0 0
    

    سپس پس از راه‌اندازی سیستم، Swap به‌طور خودکار فعال خواهد شد.

  2. غیرفعال کردن Swap در مواقع اضطراری: در برخی مواقع ممکن است بخواهید فضای Swap را به‌طور موقت غیرفعال کنید. برای مثال، اگر فضای Swap شما پر شده است یا برای انجام تغییرات خاص در سیستم به‌غیرفعال‌سازی آن نیاز دارید، دستور swapoff مفید خواهد بود. به‌ویژه زمانی که قصد دارید فضای Swap را دوباره پیکربندی یا تغییر دهید.
  3. تنظیمات و افزایش عملکرد: در سیستم‌هایی که دارای حافظه فیزیکی زیادی هستند، ممکن است نیاز باشد میزان استفاده از فضای Swap را مدیریت کنید. این کار می‌تواند به‌کمک تنظیم پارامتر vm.swappiness انجام شود که نحوه تصمیم‌گیری کرنل لینوکس را در مورد استفاده از Swap کنترل می‌کند.

    برای مشاهده مقدار فعلی vm.swappiness، دستور زیر را اجرا کنید:

    cat /proc/sys/vm/swappiness
    

    این عدد بین ۰ تا ۱۰۰ قرار دارد. مقدار پایین‌تر به این معنی است که سیستم تمایل کمتری به استفاده از Swap دارد، در حالی که مقدار بالاتر به معنی استفاده بیشتر از Swap است. برای تغییر آن، دستور زیر را وارد کنید:

    sudo sysctl vm.swappiness=10
    

    این تغییر به‌طور موقت انجام می‌شود. برای تغییر دائمی باید مقدار آن را در فایل /etc/sysctl.conf اضافه کنید:

    vm.swappiness=10
    

جمع بندی

دستورات swapon و swapoff ابزارهای حیاتی برای مدیریت فضای Swap در سیستم‌های لینوکسی هستند. با استفاده از این دستورات می‌توانید فضای Swap را فعال و غیرفعال کنید و وضعیت مصرف حافظه مجازی سیستم خود را مدیریت نمایید. برای استفاده بهینه از منابع سیستم، تنظیمات صحیح فضای Swap و میزان استفاده از آن، خصوصاً در سرورها یا سیستم‌هایی با بار زیاد، ضروری است.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”نمایش اطلاعات مربوط به Swap با دستور swapon -s” subtitle=”توضیحات کامل”]دستور swapon -s در لینوکس برای نمایش اطلاعات مفصل درباره فضای Swap فعال در سیستم استفاده می‌شود. این دستور اطلاعاتی مانند نام پارتیشن‌ها یا فایل‌های Swap، اندازه کل و مقدار استفاده‌شده از هر کدام را به‌طور خلاصه نمایش می‌دهد.

نحوه استفاده از دستور swapon -s

برای مشاهده وضعیت فضای Swap فعال در سیستم، تنها کافی است دستور زیر را در ترمینال وارد کنید:

swapon -s

این دستور فهرستی از پارتیشن‌ها یا فایل‌های Swap فعال را همراه با جزئیات مربوط به هرکدام نمایش می‌دهد.

ساختار خروجی دستور swapon -s

خروجی دستور swapon -s به‌صورت یک جدول نمایش داده می‌شود که شامل چندین ستون است:

  1. Filename:
    • این ستون نشان‌دهنده نام پارتیشن یا فایل Swap است که در حال استفاده است.
  2. Type:
    • نوع فضای Swap را مشخص می‌کند، معمولاً file یا partition خواهد بود.
  3. Size:
    • اندازه کل فضای Swap که برای پارتیشن یا فایل اختصاص داده‌شده است.
  4. Used:
    • میزان فضای استفاده‌شده در فضای Swap.
  5. Priority:
    • اولویت فضای Swap. در صورتی که چندین پارتیشن یا فایل Swap در سیستم داشته باشید، این اولویت تعیین می‌کند که کدامیک از آنها برای استفاده انتخاب شود. اولویت‌های بالاتر ترجیح داده می‌شوند.

مثال خروجی دستور swapon -s

فرض کنید در سیستم شما یک پارتیشن Swap و یک فایل Swap فعال است. خروجی دستور swapon -s به‌صورت زیر خواهد بود:

Filename                                Type            Size    Used    Priority
/dev/sda2                               partition       2048M   0M      -1
/swapfile                               file            1024M   512M    0

در اینجا:

  • Filename:
    • /dev/sda2: پارتیشن Swap.
    • /swapfile: فایل Swap.
  • Type:
    • نوع فضای Swap برای /dev/sda2 پارتیشن است و برای /swapfile یک فایل است.
  • Size:
    • اندازه کل پارتیشن Swap /dev/sda2 2048MB است و اندازه فایل Swap /swapfile 1024MB است.
  • Used:
    • پارتیشن /dev/sda2 هیچ فضای Swap استفاده‌شده ندارد، اما فایل /swapfile 512MB فضای Swap استفاده کرده است.
  • Priority:
    • پارتیشن Swap /dev/sda2 اولویت -1 دارد، در حالی که فایل /swapfile اولویت 0 دارد.

استفاده از swapon -s برای تحلیل مصرف Swap

با استفاده از دستور swapon -s می‌توانید به‌راحتی مشاهده کنید که کدام پارتیشن‌ها یا فایل‌های Swap فعال هستند و چه مقدار از آنها استفاده شده است. این اطلاعات می‌تواند برای نظارت بر مصرف حافظه مجازی و تخصیص بهینه منابع در سیستم‌های با بار زیاد مفید باشد.

برای مثال، اگر مشاهده کردید که فضای Swap بیش از حد پر شده است، ممکن است بخواهید فضای Swap بیشتری اضافه کنید یا برنامه‌های مصرف‌کننده حافظه بالا را بررسی و مدیریت کنید.

نمایش جزئیات بیشتر با swapon -v

اگر بخواهید اطلاعات بیشتری از فضای Swap خود دریافت کنید، می‌توانید از گزینه -v (verbose) همراه با دستور swapon استفاده کنید:

swapon -sv

این دستور اطلاعات بیشتری مانند نوع دقیق فضای Swap و آدرس‌های خاص مربوط به آن را نمایش خواهد داد.


جمع بندی

دستور swapon -s یک ابزار ساده و مفید برای مشاهده وضعیت فضای Swap فعال در سیستم است. این دستور به شما کمک می‌کند تا اطلاعاتی نظیر نام پارتیشن‌ها یا فایل‌های Swap، اندازه‌ها، میزان فضای استفاده‌شده، و اولویت‌های Swap را بررسی کنید. این اطلاعات برای نظارت بر مصرف حافظه مجازی و مدیریت منابع سیستم بسیار حیاتی است.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”مشکلات Swap و تأثیر آن بر عملکرد سیستم” subtitle=”توضیحات کامل”]فضای Swap به‌عنوان یک راه‌حل موقتی برای زمانی که حافظه فیزیکی (RAM) تمام می‌شود، مورد استفاده قرار می‌گیرد. زمانی که سیستم با کمبود حافظه مواجه می‌شود، داده‌های مورد استفاده کمتر را به Swap منتقل می‌کند تا حافظه فیزیکی آزاد شود. با این حال، استفاده بیش از حد از فضای Swap می‌تواند به مشکلات جدی در عملکرد سیستم منجر شود. در این بخش، به بررسی زمان‌هایی که مصرف Swap بسیار بالا است و تأثیرات آن بر عملکرد سیستم خواهیم پرداخت.

زمانی که مصرف Swap بسیار بالا است

  1. کمبود حافظه فیزیکی (RAM) در سیستم: اگر سیستم حافظه فیزیکی کافی برای پردازش درخواست‌های مختلف نداشته باشد، به‌طور خودکار به Swap روی خواهد آورد. این موضوع زمانی پیش می‌آید که تعداد زیادی از برنامه‌ها یا فرآیندها به‌طور همزمان در حال اجرا هستند و حافظه فیزیکی به اندازه کافی برای نگه‌داری داده‌ها و کدهای آنها ندارد. وقتی فضای Swap به طور مرتب پر می‌شود، عملکرد سیستم به شدت کاهش می‌یابد.
  2. برنامه‌های مصرف‌کننده حافظه بالا: اگر برنامه‌ها یا فرآیندهای خاصی در حال استفاده از حافظه زیاد باشند، می‌توانند موجب پر شدن فضای Swap شوند. این برنامه‌ها ممکن است به دلیل باگ‌ها، نشت حافظه (memory leak) یا عملکرد غیر بهینه باعث استفاده زیاد از حافظه شوند.
  3. عدم تخصیص صحیح حافظه Swap: در صورتی که مقدار حافظه Swap به‌درستی تنظیم نشده باشد (کمتر از حد نیاز)، سیستم مجبور می‌شود فضای بیشتری از حافظه فیزیکی را به Swap منتقل کند. در این صورت، با کمبود حافظه فیزیکی مواجه خواهید شد که ممکن است به افزایش استفاده از Swap منجر شود.
  4. محدودیت در فضای Swap: اگر فضای Swap محدود باشد، و سیستم به دلیل کمبود حافظه فیزیکی به‌طور مداوم نیاز به استفاده از Swap پیدا کند، سرعت سیستم به‌شدت کاهش می‌یابد. به‌ویژه در سیستم‌هایی با منابع ذخیره‌سازی کندتر (HDD) که سرعت نوشتن و خواندن داده‌ها پایین است، این موضوع می‌تواند باعث کاهش شدید عملکرد سیستم شود.

تأثیرات مصرف بالای Swap بر عملکرد سیستم

  1. کندی شدید عملکرد سیستم: یکی از بزرگ‌ترین تأثیرات استفاده زیاد از Swap، کندی عملکرد سیستم است. چون فضای Swap معمولاً بر روی دیسک‌های سخت (HDD) یا حتی دیسک‌های حالت جامد (SSD) قرار دارد، سرعت خواندن و نوشتن به‌مراتب پایین‌تر از حافظه RAM است. این تفاوت سرعت می‌تواند به‌طور قابل‌ملاحظه‌ای زمان پاسخ‌گویی سیستم را افزایش دهد و تجربه کاربری را کاهش دهد.
  2. افزایش تأخیر (Latency): زمانی که سیستم برای دسترسی به داده‌ها باید از فضای Swap استفاده کند، تأخیر در پاسخ‌دهی افزایش می‌یابد. برای مثال، در هنگام بارگذاری برنامه‌ها یا دسترسی به داده‌های حافظه، زمان مورد نیاز برای خواندن یا نوشتن به فضای Swap ممکن است چندین برابر بیشتر از حافظه RAM باشد.
  3. کاهش عمر SSD ها: در صورتی که سیستم از SSD برای ذخیره‌سازی فضای Swap استفاده می‌کند، بار زیاد بر روی این دستگاه می‌تواند به‌طور غیرمستقیم به کاهش عمر آن منجر شود. این مسئله به دلیل تعداد بالای عملیات نوشتن و خواندن به فضای Swap است که می‌تواند به مرور زمان بر روی عمر SSD تأثیر بگذارد.
  4. استفاده بیشتر از پردازنده (CPU): استفاده زیاد از Swap نه تنها به پردازش‌های حافظه نیاز دارد، بلکه باعث استفاده بیشتر از پردازنده برای مدیریت داده‌های موجود در Swap می‌شود. این موضوع می‌تواند به بار اضافی بر روی پردازنده و کاهش کلی عملکرد سیستم منجر شود.
  5. خالی شدن حافظه کش (Cache): در صورتی که حافظه فیزیکی به طور کامل اشغال شود و فضای Swap استفاده گردد، داده‌های کش (Cache) که معمولاً برای بهبود سرعت پردازش و دسترسی به داده‌ها ذخیره می‌شوند، حذف می‌شوند. این امر باعث می‌شود که سیستم مجبور شود برای هر درخواست داده، دوباره به فضای Swap یا دیسک سخت مراجعه کند که موجب کاهش سرعت کلی سیستم می‌شود.

راهکارهایی برای مدیریت مصرف Swap

  1. افزایش حافظه فیزیکی (RAM): ساده‌ترین و مؤثرترین راه برای کاهش استفاده از Swap، افزایش میزان حافظه فیزیکی در سیستم است. با داشتن حافظه RAM بیشتر، سیستم به‌ندرت به فضای Swap نیاز خواهد داشت و در نتیجه از کندی عملکرد جلوگیری می‌شود.
  2. تنظیم درست پارامتر vm.swappiness: لینوکس دارای پارامتر vm.swappiness است که نحوه استفاده از فضای Swap را کنترل می‌کند. این پارامتر به سیستم می‌گوید که چه زمانی باید از Swap استفاده کند. مقدار پیش‌فرض معمولاً 60 است، که ممکن است در برخی موارد زیاد باشد. با کاهش این مقدار می‌توان جلوگیری کرد از اینکه سیستم به سرعت به Swap روی آورد.

    برای تغییر مقدار vm.swappiness به 10، به‌صورت زیر عمل کنید:

    sudo sysctl vm.swappiness=10
    

    برای تغییر دائمی، باید آن را در فایل /etc/sysctl.conf اضافه کنید:

    vm.swappiness=10
    
  3. استفاده از ابزارهای نظارتی برای بررسی مصرف حافظه: ابزارهایی مانند top، htop و smem می‌توانند به شما کمک کنند تا برنامه‌ها و فرآیندهایی که بیشترین مصرف حافظه را دارند شناسایی کنید. با شناسایی این فرآیندها می‌توانید آنها را مدیریت کرده یا میزان مصرف حافظه آنها را کاهش دهید.
  4. استفاده از فضای Swap بزرگ‌تر یا SSD برای Swap: اگر فضای Swap به‌طور مکرر پر می‌شود، می‌توانید حجم Swap را افزایش دهید یا از SSD برای ذخیره‌سازی فضای Swap استفاده کنید تا سرعت دسترسی به آن سریع‌تر شود.
  5. کنترل میزان استفاده از حافظه توسط برنامه‌ها: در برخی موارد، برنامه‌هایی که نشت حافظه دارند یا به‌طور غیر بهینه استفاده می‌کنند از حافظه زیاد استفاده می‌کنند. با شناسایی و اصلاح این برنامه‌ها می‌توانید به میزان قابل‌توجهی مصرف حافظه را کاهش دهید.

جمع بندی

استفاده مفرط از فضای Swap می‌تواند مشکلات جدی برای عملکرد سیستم ایجاد کند. کندی عملکرد، افزایش تأخیر، و بار اضافی بر روی دیسک و پردازنده از جمله مشکلاتی است که با مصرف زیاد Swap مواجه خواهید شد. با اعمال راهکارهایی مانند افزایش حافظه فیزیکی، تنظیم درست پارامتر vm.swappiness، و شناسایی فرآیندهای مصرف‌کننده حافظه، می‌توان به بهینه‌سازی مصرف Swap و بهبود عملکرد سیستم کمک کرد.[/cdb_course_lesson][cdb_course_lesson title=”فصل 5. نظارت بر حافظه با ابزارهای گرافیکی”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”مشاهده حافظه فیزیکی و Swap با دستور htop” subtitle=”توضیحات کامل”]دستور htop یک ابزار نظارت بر سیستم است که اطلاعات مربوط به پردازنده، حافظه، Swap و سایر منابع سیستم را به‌صورت گرافیکی و تعاملی نمایش می‌دهد. این ابزار به‌طور ویژه برای شناسایی مصرف حافظه و پردازنده توسط فرآیندهای مختلف مفید است و می‌تواند به شما کمک کند تا فرآیندهایی که بیشترین حافظه را مصرف می‌کنند شناسایی کنید.

نصب htop

اگر ابزار htop در سیستم شما نصب نیست، می‌توانید آن را به‌راحتی با استفاده از مدیر بسته لینوکس خود نصب کنید. به‌عنوان مثال:

برای توزیع‌های مبتنی بر Debian/Ubuntu:

sudo apt install htop

برای توزیع‌های مبتنی بر RedHat/CentOS:

sudo yum install htop

برای توزیع‌های مبتنی بر Arch:

sudo pacman -S htop

راه‌اندازی htop

برای اجرای htop کافی است در ترمینال دستور زیر را وارد کنید:

htop

پس از اجرای دستور، شما وارد محیط تعاملی htop خواهید شد که اطلاعات گرافیکی و مفصلی را به نمایش می‌گذارد.

مشاهده حافظه فیزیکی و Swap به‌صورت گرافیکی

در بخش بالایی خروجی htop، شما می‌توانید گراف‌های مصرف حافظه و Swap را مشاهده کنید. این گراف‌ها به‌طور زنده وضعیت حافظه فیزیکی و Swap را نشان می‌دهند:

  • گراف حافظه فیزیکی: نشان‌دهنده میزان حافظه RAM استفاده‌شده در سیستم است. معمولاً رنگ‌های مختلفی برای نمایان‌سازی حافظه‌های آزاد، استفاده‌شده و کش‌شده وجود دارد.
  • گراف Swap: میزان استفاده از فضای Swap را نشان می‌دهد. اگر فضای Swap استفاده زیادی داشته باشد، این گراف به وضوح تغییر خواهد کرد.

به‌طور کلی، رنگ‌ها و نوارهای گرافیکی به شما کمک می‌کنند تا به‌سرعت میزان استفاده از منابع سیستم را ارزیابی کنید.

شناسایی فرآیندهایی که بیشترین حافظه را مصرف می‌کنند

یکی از ویژگی‌های اصلی htop این است که شما می‌توانید فرآیندهایی که بیشترین حافظه را مصرف می‌کنند مشاهده و مدیریت کنید. برای این کار:

  1. پس از اجرای htop، در قسمت اصلی صفحه، فرآیندها به‌صورت لیستی از بالاترین مصرف‌کننده حافظه تا پایین‌ترین نمایش داده می‌شوند.
  2. در ستون “MEM%” درصد استفاده از حافظه توسط هر فرآیند نشان داده شده است.
  3. برای مرتب‌سازی فرآیندها بر اساس مصرف حافظه، می‌توانید روی هدر ستون “MEM%” کلیک کنید تا ترتیب از بالاترین به پایین‌ترین مصرف حافظه تغییر کند.

همچنین در ستون “SWAP” می‌توانید مشاهده کنید که هر فرآیند چه مقدار از فضای Swap را مصرف می‌کند. اگر مقدار این ستون زیاد باشد، به این معناست که آن فرآیند ممکن است در حال استفاده زیاد از حافظه مجازی باشد و باعث فشار به فضای Swap شده است.

فیلتر کردن و جستجوی فرآیندها

برای فیلتر کردن و جستجوی فرآیندها بر اساس نام یا ویژگی خاص، می‌توانید از قابلیت جستجو در htop استفاده کنید:

  1. کلید F3 را برای جستجو فشار دهید.
  2. نام فرآیند یا ویژگی مورد نظر خود را وارد کنید.
  3. htop به‌طور خودکار فرآیندهایی که با عبارت واردشده مطابقت دارند را نمایش می‌دهد.

خاتمه دادن به فرآیندها

در صورتی که فرآیندهایی را پیدا کردید که به‌طور غیرعادی منابع زیادی از حافظه را مصرف می‌کنند، می‌توانید آنها را خاتمه دهید. برای این کار:

  1. از کلید F9 برای انتخاب گزینه “Kill” استفاده کنید.
  2. فرآیندی که می‌خواهید خاتمه دهید را انتخاب کنید.
  3. سپس سیگنال مناسب (مثل SIGTERM یا SIGKILL) را برای پایان دادن به فرآیند ارسال کنید.

مشاهده جزئیات بیشتر برای یک فرآیند خاص

برای مشاهده جزئیات بیشتر درباره یک فرآیند خاص، کافی است با استفاده از کلید جهت‌دار به پایین یا بالا روی فرآیند مورد نظر حرکت کنید و سپس F5 را فشار دهید تا درخت فرآیندها نمایش داده شود. این کار به شما کمک می‌کند تا رابطه والد و فرزند بین فرآیندها را مشاهده کنید.

خروج از htop

برای خروج از محیط htop کافی است از کلید F10 استفاده کنید یا دستور زیر را وارد کنید:

q

جمع بندی

ابزار htop به شما این امکان را می‌دهد که به‌طور گرافیکی و تعاملی مصرف حافظه فیزیکی و Swap را در سیستم مشاهده کرده و فرآیندهایی که بیشترین مصرف حافظه را دارند شناسایی کنید. این ابزار با نمایش اطلاعات زنده و قابل تنظیم، به شما کمک می‌کند تا به‌سرعت مشکلات عملکرد سیستم را شناسایی و مدیریت کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی منابع سیستم با ابزار گرافیکی gnome-system-monitor” subtitle=”توضیحات کامل”]ابزار gnome-system-monitor یک برنامه گرافیکی برای نظارت و مدیریت منابع سیستم در محیط دسکتاپ GNOME است. این ابزار امکان مشاهده اطلاعات کاملی از پردازنده، حافظه، فضای ذخیره‌سازی و فرآیندهای در حال اجرا را به‌صورت گرافیکی فراهم می‌کند. در این بخش، به بررسی نحوه استفاده از این ابزار برای نظارت بر حافظه فیزیکی و Swap خواهیم پرداخت.

نصب gnome-system-monitor

در صورتی که این ابزار در سیستم شما نصب نیست، می‌توانید آن را از طریق مدیر بسته توزیع لینوکس خود نصب کنید. برای توزیع‌های مبتنی بر Debian/Ubuntu، از دستور زیر استفاده کنید:

sudo apt install gnome-system-monitor

برای توزیع‌های مبتنی بر RedHat/CentOS:

sudo yum install gnome-system-monitor

برای توزیع‌های مبتنی بر Arch:

sudo pacman -S gnome-system-monitor

اجرای gnome-system-monitor

برای اجرای gnome-system-monitor، کافی است در منوی برنامه‌ها یا با استفاده از دستور زیر در ترمینال آن را فراخوانی کنید:

gnome-system-monitor

پس از اجرای دستور، پنجره گرافیکی ابزار gnome-system-monitor باز خواهد شد که شامل چندین تب مختلف است.

بررسی منابع سیستم در تب‌های مختلف

در gnome-system-monitor، شما می‌توانید از چندین تب برای نظارت بر منابع مختلف سیستم استفاده کنید:

  1. Tab “Processes”: در این تب، تمام فرآیندهای در حال اجرا نمایش داده می‌شوند. شما می‌توانید فرآیندها را بر اساس مصرف پردازنده، حافظه، و دیگر منابع مرتب کنید. اطلاعات دقیق در مورد هر فرآیند مانند میزان مصرف حافظه فیزیکی (RAM) و Swap، نام فرآیند، و مصرف CPU به نمایش درمی‌آید.
    • برای مشاهده فرآیندهایی که بیشترین مصرف حافظه را دارند، کافی است ستون Memory را کلیک کنید تا فرآیندها بر اساس مصرف حافظه مرتب شوند.
  2. Tab “Resources”: این تب به‌طور گرافیکی مصرف منابع مختلف سیستم شامل پردازنده (CPU)، حافظه (RAM)، Swap و استفاده از دیسک (Disk) را نمایش می‌دهد. در این بخش، شما می‌توانید روند مصرف منابع سیستم را به‌صورت نمودارهای زنده مشاهده کنید.
    • CPU: میزان استفاده از پردازنده در یک بازه زمانی مشخص.
    • Memory: میزان مصرف حافظه فیزیکی در مقایسه با حافظه آزاد.
    • Swap: مصرف فضای Swap و میزان استفاده از آن.

    این نمودارها به شما امکان می‌دهند تا به‌سرعت متوجه شوید که آیا سیستم تحت فشار منابع است و کدام بخش‌ها نیاز به توجه بیشتری دارند.

  3. Tab “File Systems”: در این تب، اطلاعاتی در مورد فضای ذخیره‌سازی در سیستم از جمله حجم‌های مختلف دیسک و میزان استفاده از آنها نمایش داده می‌شود. این بخش برای نظارت بر فضای دیسک و پارتیشن‌های مختلف مناسب است.
  4. Tab “System”: در این تب اطلاعاتی کلی درباره وضعیت سیستم از جمله نسخه سیستم‌عامل، میزان بارگذاری CPU، مدت زمان روشن بودن سیستم و دیگر جزئیات سخت‌افزاری نمایش داده می‌شود.

مشاهده مصرف حافظه فیزیکی و Swap

برای مشاهده وضعیت حافظه فیزیکی و فضای Swap در gnome-system-monitor:

  1. در تب “Resources”:
    • گراف حافظه فیزیکی نمایش داده می‌شود که میزان مصرف RAM و فضای آزاد آن را نشان می‌دهد.
    • گراف دیگر مربوط به مصرف فضای Swap است که میزان استفاده از Swap را به‌طور مجزا نشان می‌دهد.

    با استفاده از این گراف‌ها، می‌توانید به‌صورت گرافیکی و در زمان واقعی مصرف حافظه و Swap را بررسی کنید.

  2. در تب “Processes”:
    • اگر بخواهید فرآیندهایی را که بیشترین حافظه را مصرف می‌کنند مشاهده کنید، می‌توانید ستون Memory را مرتب کنید.
    • در این ستون، شما میزان حافظه فیزیکی (RSS) و فضای Swap (Swap) که توسط هر فرآیند مصرف می‌شود را مشاهده خواهید کرد.

خاتمه دادن به فرآیندها

اگر فرآیندی را پیدا کردید که مصرف بالای حافظه دارد، می‌توانید با کلیک راست روی آن و انتخاب گزینه “Kill” (خاتمه دادن)، فرآیند را متوقف کنید.

مزایای gnome-system-monitor

  1. رابط کاربری گرافیکی: به کاربران این امکان را می‌دهد که منابع سیستم را به‌راحتی بررسی و مدیریت کنند.
  2. گراف‌های زنده: نمایش اطلاعات به‌صورت گرافیکی، نظارت بر مصرف منابع سیستم را بسیار آسان می‌کند.
  3. دسترسی آسان به اطلاعات سیستم: تمامی جزئیات مهم مانند مصرف حافظه، پردازنده، و فضای دیسک در یک پنجره نمایش داده می‌شود.
  4. مدیریت فرآیندها: به شما این امکان را می‌دهد که به‌راحتی فرآیندهای مصرف‌کننده منابع را شناسایی و خاتمه دهید.

نکات

  • در صورتی که فضای Swap در حال پر شدن است، ممکن است نیاز به افزایش فضای Swap یا حافظه فیزیکی (RAM) داشته باشید.
  • در gnome-system-monitor، برای مشاهده تغییرات در مصرف منابع، نیازی به رفرش کردن دستی نیست، زیرا نمودارها و اطلاعات به‌طور خودکار به‌روزرسانی می‌شوند.

جمع بندی

ابزار gnome-system-monitor یک ابزار گرافیکی قدرتمند برای نظارت بر منابع سیستم است که اطلاعات کاملی در مورد مصرف پردازنده، حافظه، Swap و دیسک را به نمایش می‌گذارد. این ابزار به شما کمک می‌کند تا به‌راحتی فرآیندهایی که بیشترین حافظه را مصرف می‌کنند شناسایی کرده و مشکلات عملکرد سیستم را شناسایی و رفع کنید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 6. شناسایی نشت حافظه (Memory Leak)”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”شناسایی و تحلیل Memory Leak با ابزار valgrind” subtitle=”توضیحات کامل”]ابزار valgrind یک مجموعه ابزارهای تحلیل و اشکال‌زدایی است که به‌ویژه برای شناسایی مشکلات حافظه در برنامه‌های C و C++ استفاده می‌شود. یکی از قابلیت‌های اصلی آن شناسایی و تحلیل Memory Leak است. Memory Leak زمانی رخ می‌دهد که برنامه حافظه‌ای را درخواست می‌کند ولی آن را به‌درستی آزاد نمی‌کند و در نتیجه، حافظه استفاده‌شده هرگز به سیستم بازنمی‌گردد. این موضوع می‌تواند منجر به کاهش عملکرد و در نهایت کرش سیستم یا برنامه شود.

در این بخش، به نحوه استفاده از valgrind برای شناسایی و تحلیل Memory Leak خواهیم پرداخت.

نصب valgrind

اگر ابزار valgrind در سیستم شما نصب نیست، می‌توانید آن را با استفاده از دستورهای زیر نصب کنید.

برای توزیع‌های مبتنی بر Debian/Ubuntu:

sudo apt install valgrind

برای توزیع‌های مبتنی بر RedHat/CentOS:

sudo yum install valgrind

برای توزیع‌های مبتنی بر Arch:

sudo pacman -S valgrind

نحوه استفاده از valgrind برای شناسایی Memory Leak

برای شناسایی Memory Leak، کافی است برنامه خود را با استفاده از valgrind اجرا کنید. دستور اصلی به این صورت خواهد بود:

valgrind --leak-check=full ./your_program

در اینجا، your_program نام برنامه یا اسکریپتی است که می‌خواهید آن را بررسی کنید. گزینه --leak-check=full به valgrind دستور می‌دهد که به‌طور کامل حافظه‌ای که آزاد نشده را جستجو کند و گزارش دقیقی ارائه دهد.

توضیح پارامترهای اصلی

  • --leak-check=full: این گزینه به valgrind می‌گوید که تمامی حافظه‌هایی که به درستی آزاد نشده‌اند را شناسایی و گزارش کند. این گزارش شامل محل‌هایی است که حافظه تخصیص داده شده و آزاد نشده است.
  • --show-leak-kinds=all: این گزینه جزئیات بیشتری در مورد نوع‌های مختلف نشت حافظه را نمایش می‌دهد (مثلاً نشت حافظه در پشته یا هرم).
  • --track-origins=yes: این گزینه برای ردیابی و شناسایی دقیق‌تری از مکان‌هایی که حافظه نشت کرده مفید است. این مورد به‌ویژه در کدهای پیچیده که حافظه به‌طور غیرمستقیم تخصیص داده شده باشد، مفید است.

خروجی valgrind

پس از اجرای دستور valgrind، گزارشی شامل اطلاعات مربوط به وضعیت نشت حافظه نمایش داده می‌شود. این گزارش می‌تواند شامل اطلاعات زیر باشد:

  • Memcheck: گزارش مربوط به هرگونه نشت حافظه و اطلاعات مربوط به آدرس‌های حافظه‌ای که آزاد نشده‌اند.
  • LEAK SUMMARY: خلاصه‌ای از میزان حافظه‌ای که به درستی آزاد نشده است.
  • definitely lost: حافظه‌ای که به‌طور قطع آزاد نشده است.
  • possibly lost: حافظه‌ای که به‌طور احتمالی آزاد نشده است.
  • still reachable: حافظه‌ای که هنوز توسط برنامه در دسترس است ولی به‌طور صحیح آزاد نشده است.

یک مثال از خروجی valgrind:

==12345== 1 bytes in 1 blocks are definitely lost in loss record 1 of 1
==12345==    at 0x4005B2: main (test.c:10)
==12345==
==12345== LEAK SUMMARY:
==12345==    definitely lost: 1 byte in 1 block
==12345==    indirectly lost: 0 bytes in 0 blocks
==12345==    possibly lost: 0 bytes in 0 blocks
==12345==    still reachable: 10,000 bytes in 10 blocks
==12345==    suppressed: 0 bytes in 0 blocks

در اینجا، گزارش نشان می‌دهد که یک بلوک حافظه از دست رفته است که به‌طور قطعی (definitely lost) آزاد نشده است و محل آن در کد (در خط 10 از test.c) نمایش داده می‌شود.

مثال‌های کاربردی

  1. بررسی برنامه‌ای با نشت حافظه:

اگر برنامه‌ای دارید که به‌طور احتمالی نشت حافظه دارد، می‌توانید به‌راحتی آن را با استفاده از valgrind آزمایش کنید. به عنوان مثال:

valgrind --leak-check=full ./example_program

این دستور به شما گزارش دقیقی در مورد نشت حافظه برنامه خواهد داد.

  1. اضافه کردن پارامترهای بیشتر برای جزئیات بیشتر:

اگر نیاز به جزئیات بیشتر دارید و می‌خواهید نوع‌های مختلف نشت حافظه را مشاهده کنید، از این دستور استفاده کنید:

valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes ./example_program

این دستور به شما کمک می‌کند تا نه تنها نشت‌های حافظه را شناسایی کنید، بلکه مکان دقیق و نوع نشت را نیز تحلیل نمایید.

بررسی Memory Leak در برنامه‌های چندنخی

در صورتی که برنامه شما از چندین نخ استفاده می‌کند (multi-threaded program)، می‌توانید با استفاده از دستور زیر نشت‌های حافظه را بررسی کنید:

valgrind --leak-check=full --num-callers=20 --track-origins=yes --threads=yes ./multi_threaded_program

این دستور به‌ویژه برای شناسایی نشت‌های حافظه در برنامه‌های چندنخی مفید است.

نکات و پیشنهادات

  • valgrind می‌تواند زمان زیادی برای بررسی برنامه‌های بزرگ یا پیچیده نیاز داشته باشد. لذا پیشنهاد می‌شود که ابتدا روی بخش‌های کوچکتر کد آزمایش کنید.
  • valgrind به‌طور مؤثری برای شناسایی مشکلات حافظه در برنامه‌های C و C++ مفید است، اما در صورت استفاده از زبان‌های دیگر مانند Python یا Java، ابزارهای دیگری مانند memory_profiler برای Python یا VisualVM برای Java توصیه می‌شوند.
  • هنگام استفاده از valgrind برای پروژه‌های تولیدی، معمولاً از این ابزار در محیط‌های توسعه یا تست استفاده می‌شود.

جمع بندی

ابزار valgrind یک ابزار قدرتمند برای شناسایی و تحلیل Memory Leak در برنامه‌های در حال اجرا است. با استفاده از valgrind، می‌توانید به‌راحتی نشت‌های حافظه را شناسایی کرده و موقعیت دقیق آنها را در کد پیدا کنید. این ابزار با استفاده از پارامترهای مختلف مانند --leak-check=full، --track-origins=yes و دیگر گزینه‌ها به شما کمک می‌کند تا مشکلات حافظه در برنامه‌های C و C++ را به دقت شبیه‌سازی و اصلاح کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تست حافظه سیستم با ابزار memtester” subtitle=”توضیحات کامل”]ابزار memtester یکی از ابزارهای مفید و کارآمد در لینوکس است که برای تست و شبیه‌سازی خطاهای حافظه سیستم طراحی شده است. این ابزار به‌ویژه برای شناسایی مشکلات در حافظه RAM استفاده می‌شود. با استفاده از memtester می‌توانید مطمئن شوید که حافظه فیزیکی سیستم شما به‌درستی عمل می‌کند و هیچ خطای سخت‌افزاری در آن وجود ندارد.

در این بخش، به معرفی و نحوه استفاده از ابزار memtester برای تست حافظه سیستم خواهیم پرداخت.

نصب memtester

اگر ابزار memtester در سیستم شما نصب نیست، می‌توانید آن را به راحتی از طریق مدیر بسته توزیع لینوکس خود نصب کنید. برای توزیع‌های مبتنی بر Debian/Ubuntu، از دستور زیر استفاده کنید:

sudo apt install memtester

برای توزیع‌های مبتنی بر RedHat/CentOS:

sudo yum install memtester

برای توزیع‌های مبتنی بر Arch:

sudo pacman -S memtester

نحوه استفاده از memtester

ابزار memtester به‌طور مستقیم با استفاده از دستورات زیر برای تست حافظه قابل استفاده است. برای شروع، ابتدا باید مقدار حافظه‌ای که می‌خواهید تست کنید را مشخص کنید. مثلاً اگر می‌خواهید 1 گیگابایت از حافظه سیستم خود را تست کنید، از دستور زیر استفاده کنید:

sudo memtester 1G

در اینجا، 1G مقدار حافظه‌ای است که می‌خواهید تست کنید. می‌توانید این مقدار را به هر واحدی که نیاز دارید (KB، MB، GB) تنظیم کنید. به‌عنوان مثال:

  • 512M برای 512 مگابایت
  • 2G برای 2 گیگابایت

پارامترهای اصلی memtester

در زیر، برخی از پارامترهای مفید memtester را معرفی خواهیم کرد:

  • تعداد دورهای تست: به‌طور پیش‌فرض، memtester تست حافظه را یک بار انجام می‌دهد. شما می‌توانید تعداد دفعات تست را با استفاده از گزینه -p تعیین کنید:
    sudo memtester 1G 5
    

    این دستور حافظه 1 گیگابایتی را 5 بار تست می‌کند.

  • تست بدون استفاده از کش: برای انجام تست بدون دخالت کش CPU، می‌توانید از گزینه -n استفاده کنید:
    sudo memtester -n 1G
    
  • تست حافظه به‌صورت کامل: اگر می‌خواهید تمام حافظه سیستم را تست کنید، می‌توانید از اندازه max استفاده کنید:
    sudo memtester max
    

    این دستور تمامی حافظه فیزیکی موجود در سیستم شما را برای بررسی خطاهای احتمالی تست خواهد کرد.

انواع تست‌های memtester

memtester از چندین روش مختلف برای تست حافظه استفاده می‌کند. برخی از تست‌های رایج عبارتند از:

  1. Test 1: Random value test: این تست تصادفی مقادیر مختلفی را در حافظه قرار می‌دهد و بررسی می‌کند که آیا داده‌ها به‌درستی ذخیره شده‌اند یا خیر.
  2. Test 2: Address line test: در این تست، آدرس‌های مختلف حافظه برای شبیه‌سازی و شناسایی مشکلات حافظه بررسی می‌شود.
  3. Test 3: Walking bit test: در این تست، بیت‌های مختلف حافظه به‌طور مداوم تغییر می‌کنند تا خطاهای احتمالی شناسایی شوند.
  4. Test 4: Stride test: این تست داده‌ها را با الگوهای خاصی در حافظه قرار می‌دهد و به دنبال خطاهای مشابه می‌گردد.

هنگام اجرای memtester، این تست‌ها به‌طور خودکار انجام می‌شوند و اگر خطای حافظه‌ای وجود داشته باشد، به شما گزارش داده می‌شود.

خروجی memtester

خروجی memtester به شما اطلاعاتی در مورد وضعیت حافظه ارائه می‌دهد. در صورتی که خطای حافظه‌ای وجود داشته باشد، گزارشی مشابه زیر خواهید دید:

memtester version 4.3.0 (64-bit)
Copyright (C) 2004-2013 Charles Cazabon.  All rights reserved.
Press Ctrl-C to abort.

Testing 1G (1048576 kB):

Test 1: [random]  100% 1G  0 errors.
Test 2: [address]  100% 1G  0 errors.
Test 3: [stride]   100% 1G  0 errors.
Test 4: [walking]  100% 1G  0 errors.
Test 5: [memory]   100% 1G  0 errors.

Passed all tests.  No errors detected.

در این گزارش، مشاهده می‌کنید که در هیچ‌کدام از تست‌ها خطا وجود نداشته است. اگر خطایی شبیه به این مشاهده کنید:

Test 1: [random]  100% 1G  1 error (1 block)

این نشان‌دهنده وجود یک مشکل در حافظه است و شما باید مشکل را بررسی کنید.

نکات مهم

  1. مقدار حافظه تست‌شده: هنگام اجرای memtester، مطمئن شوید که حافظه‌ای که می‌خواهید تست کنید، در دسترس باشد. اگر مقدار تستی بیشتر از حافظه موجود باشد، ابزار نمی‌تواند حافظه را تخصیص دهد.
  2. نیاز به دسترسی ریشه (root): برای اجرای memtester نیاز به دسترسی‌های مدیریتی دارید، زیرا این ابزار نیاز دارد که از حافظه فیزیکی سیستم به‌طور مستقیم استفاده کند.
  3. زمان تست: مدت زمانی که برای تست حافظه صرف می‌شود بستگی به اندازه حافظه و تعداد دفعات تست دارد. برای تست حافظه‌های بزرگ، تست‌ها ممکن است زمان زیادی طول بکشند.

جمع بندی

ابزار memtester یک ابزار مفید و کارآمد برای شبیه‌سازی و شناسایی خطاهای حافظه در سیستم لینوکس است. با استفاده از این ابزار، می‌توانید مشکلات حافظه مانند نقص‌های سخت‌افزاری یا حافظه‌های خراب را شناسایی کرده و از سلامت حافظه فیزیکی سیستم خود اطمینان حاصل کنید. با دستوراتی ساده، memtester به شما این امکان را می‌دهد که حافظه سیستم را به‌طور کامل بررسی کنید و در صورت وجود مشکلات احتمالی، آنها را شناسایی کنید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 7. بهینه‌سازی استفاده از حافظه”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”پاک‌سازی حافظه Cache و Buffer در لینوکس” subtitle=”توضیحات کامل”]در سیستم‌عامل لینوکس، حافظه Cache و Buffer به‌طور خودکار توسط هسته برای بهبود عملکرد سیستم استفاده می‌شوند. حافظه‌های کش (Cache) معمولاً برای ذخیره داده‌هایی که به‌طور مکرر مورد استفاده قرار می‌گیرند، استفاده می‌شود تا دسترسی به آنها سریع‌تر شود. همچنین، Buffers برای ذخیره‌سازی داده‌هایی که به‌طور موقت در حال پردازش هستند، کاربرد دارند.

با گذشت زمان، این حافظه‌ها می‌توانند داده‌های غیرضروری را در خود نگه دارند که ممکن است باعث کاهش کارایی سیستم یا افزایش استفاده از حافظه شوند. در چنین مواقعی، ممکن است لازم باشد که حافظه‌های کش و بافر را به‌طور دستی پاک‌سازی کنید تا فضای حافظه آزاد شود.

در این بخش، به نحوه پاک‌سازی حافظه Cache و Buffer در لینوکس خواهیم پرداخت.

دستور sync; echo 3 > /proc/sys/vm/drop_caches

برای پاک‌سازی حافظه Cache و Buffer در لینوکس، دستور زیر مورد استفاده قرار می‌گیرد:

sync; echo 3 > /proc/sys/vm/drop_caches

این دستور از دو بخش تشکیل شده است:

  1. دستور sync:
    • دستور sync برای اطمینان از نوشتن تمامی داده‌ها و تغییرات به دیسک استفاده می‌شود. این دستور تمامی داده‌هایی که در حافظه کش ذخیره شده‌اند را به دیسک انتقال می‌دهد تا هیچ‌گونه داده از دست نرود. این مرحله قبل از پاک‌سازی کش و بافر اهمیت دارد تا هیچ داده‌ای که نیاز به ذخیره‌سازی دارد از دست نرود.
  2. دستور echo 3 > /proc/sys/vm/drop_caches:
    • دستور echo 3 > /proc/sys/vm/drop_caches برای پاک‌سازی حافظه‌های Cache و Buffer به‌کار می‌رود. عدد 3 در این دستور به سیستم می‌گوید که باید همه حافظه‌های کش، دایرکتوری‌ها و فایل‌های بافر را پاک‌سازی کند.

    در این دستور:

    • عدد 1: تنها کش صفحه (PageCache) را پاک می‌کند.
    • عدد 2: تنها بافرهای inode و دایرکتوری‌ها را پاک می‌کند.
    • عدد 3: هر دو حافظه کش و بافر را پاک می‌کند.

نحوه استفاده از دستور

برای پاک‌سازی حافظه Cache و Buffer، کافی است دستور زیر را در ترمینال وارد کنید:

sudo sync
sudo echo 3 > /proc/sys/vm/drop_caches

این دستور باعث می‌شود که تمامی حافظه‌های کش و بافر به‌طور کامل آزاد شوند.

مثال کاربردی

فرض کنید که سیستم شما با مشکلات عملکردی روبه‌رو شده است و احساس می‌کنید که حافظه کش و بافر در حال استفاده بیش از حد از منابع سیستم هستند. شما می‌خواهید حافظه کش و بافر را پاک‌سازی کنید تا فضای بیشتری برای برنامه‌های در حال اجرا فراهم شود.

در این صورت، می‌توانید از دستور زیر استفاده کنید:

sudo sync
sudo echo 3 > /proc/sys/vm/drop_caches

این دستور پس از اجرا، تمامی حافظه‌های کش و بافر را پاک می‌کند و فضای بیشتری برای سیستم فراهم می‌کند.

نکات و پیشنهادات

  1. توجه به اثرات جانبی: پاک‌سازی حافظه کش و بافر ممکن است باعث کاهش موقتی عملکرد سیستم شود زیرا داده‌هایی که قبلاً در حافظه کش ذخیره شده بودند، دوباره باید از دیسک بارگذاری شوند. این امر می‌تواند سرعت سیستم را به‌طور موقت کاهش دهد، اما پس از بارگذاری دوباره داده‌ها، عملکرد به حالت معمول بازمی‌گردد.
  2. استفاده در محیط‌های خاص: این دستور بیشتر در محیط‌های خاص مانند سرورها یا سیستم‌های با منابع محدود که نیاز به آزادسازی حافظه دارند، مفید است. در سیستم‌های دسکتاپ معمولاً نیازی به پاک‌سازی دستی کش و بافر نیست.
  3. اتوماتیک کردن فرآیند: اگر بخواهید این فرآیند را به‌طور خودکار در فواصل زمانی خاص انجام دهید، می‌توانید از cron job استفاده کنید تا دستور sync; echo 3 > /proc/sys/vm/drop_caches به‌طور خودکار اجرا شود.

جمع بندی

پاک‌سازی حافظه Cache و Buffer یکی از روش‌های مفید برای آزادسازی حافظه در سیستم‌های لینوکسی است. با استفاده از دستور sync; echo 3 > /proc/sys/vm/drop_caches می‌توانید حافظه کش و بافر را به‌طور کامل آزاد کنید. این دستور معمولاً در مواردی که سیستم با کمبود حافظه مواجه است یا عملکرد آن تحت تأثیر حافظه‌های کش قرار دارد، مفید است. با این حال، باید دقت کنید که پاک‌سازی کش و بافر ممکن است منجر به کاهش موقتی عملکرد سیستم شود تا داده‌ها مجدداً از دیسک بارگذاری شوند.

 [/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تنظیم پارامترهای حافظه در لینوکس: مدیریت swappiness” subtitle=”توضیحات کامل”]در سیستم‌عامل لینوکس، پارامتر swappiness یکی از پارامترهای مهم برای مدیریت فضای Swap است. این پارامتر تعیین می‌کند که سیستم تا چه اندازه از فضای Swap استفاده کند هنگامی که حافظه فیزیکی (RAM) پر می‌شود. به عبارت دیگر، این پارامتر میزان تمایل هسته لینوکس به انتقال داده‌ها از حافظه فیزیکی به فضای Swap را مشخص می‌کند.

مقدار swappiness می‌تواند از 0 تا 100 باشد:

  • مقدار 0: به این معنی است که هسته لینوکس از Swap استفاده نخواهد کرد مگر در مواقعی که مجبور به این کار باشد (یعنی هنگامی که حافظه RAM کاملاً پر شده باشد).
  • مقدار 100: به این معنی است که سیستم به‌طور پیش‌فرض بیشتر تمایل دارد از فضای Swap استفاده کند حتی زمانی که حافظه فیزیکی کافی در دسترس است.

در این بخش، به بررسی و نحوه تغییر مقدار swappiness برای مدیریت استفاده از فضای Swap می‌پردازیم.


بررسی مقدار فعلی swappiness

برای مشاهده مقدار فعلی پارامتر swappiness، می‌توانید از دستور زیر استفاده کنید:

cat /proc/sys/vm/swappiness

خروجی این دستور مقداری بین 0 تا 100 خواهد بود که نشان‌دهنده تنظیمات فعلی swappiness در سیستم است. به‌طور پیش‌فرض، معمولاً مقدار swappiness روی 60 تنظیم شده است.


تغییر موقتی مقدار swappiness

برای تغییر موقتی مقدار swappiness، می‌توانید از دستور زیر استفاده کنید. این تغییرات تنها برای جلسه فعلی سیستم معتبر خواهند بود و پس از راه‌اندازی مجدد سیستم از بین می‌روند.

برای مثال، برای تنظیم مقدار swappiness به 10:

sudo sysctl vm.swappiness=10

با این کار، هسته لینوکس بیشتر تمایل خواهد داشت از حافظه فیزیکی استفاده کند و تنها در صورت نیاز به فضای اضافی از Swap استفاده خواهد کرد.


تغییر دائمی مقدار swappiness

برای اینکه تغییرات در مقدار swappiness دائمی شوند و پس از هر بار راه‌اندازی مجدد سیستم حفظ شوند، باید این تغییرات را در فایل /etc/sysctl.conf اعمال کنید.

  1. ابتدا فایل /etc/sysctl.conf را با ویرایشگر متنی باز کنید. برای این کار از دستور nano یا هر ویرایشگر دیگری استفاده کنید:
    sudo nano /etc/sysctl.conf
    
  2. در انتهای فایل، خط زیر را اضافه کنید:
    vm.swappiness=10
    
  3. پس از اضافه کردن این خط، فایل را ذخیره کرده و خارج شوید. سپس برای اعمال تغییرات، دستور زیر را اجرا کنید:
    sudo sysctl -p
    

این دستور تنظیمات جدید را از فایل /etc/sysctl.conf بارگذاری کرده و تغییرات را در سیستم اعمال می‌کند.


بررسی اثرات تغییر swappiness

هنگامی که مقدار swappiness را تغییر می‌دهید، تأثیر آن را می‌توانید با استفاده از ابزارهایی مانند vmstat مشاهده کنید. برای مثال:

vmstat 1

این دستور اطلاعاتی از حافظه و فضای Swap سیستم را به‌صورت لحظه‌ای نمایش می‌دهد. با تغییر swappiness، می‌توانید مشاهده کنید که چه زمانی سیستم به Swap می‌رود و چقدر از حافظه فیزیکی استفاده می‌شود.


نکات و پیشنهادات

  • استفاده از مقدار پایین‌تر swappiness: تنظیم swappiness به مقدار پایین‌تر (مثلاً 10) می‌تواند در سیستم‌هایی که به حافظه فیزیکی بیشتری نیاز دارند، عملکرد را بهبود بخشد. با این تنظیم، سیستم سعی خواهد کرد از حافظه فیزیکی بیشتر استفاده کرده و تنها در صورت لزوم به Swap منتقل شود.
  • استفاده از مقدار بالاتر swappiness: در صورتی که سیستم شما به‌شدت با کمبود حافظه روبه‌رو است و می‌خواهید از Swap بیشتر استفاده کنید تا حافظه فیزیکی آزاد شود، می‌توانید مقدار swappiness را به مقدار بالاتری مانند 80 یا 90 تنظیم کنید.
  • تست تغییرات: پس از تغییر مقدار swappiness، می‌توانید اثرات آن را با استفاده از ابزارهای مختلف مانند htop، vmstat یا free بررسی کنید و رفتار سیستم را مشاهده کنید.

جمع بندی

پارامتر swappiness یکی از تنظیمات کلیدی در مدیریت فضای Swap در لینوکس است که تعیین می‌کند سیستم در چه زمانی باید از فضای Swap استفاده کند. با تنظیم این پارامتر، می‌توانید نحوه استفاده از حافظه فیزیکی و Swap را کنترل کنید تا عملکرد سیستم بهینه شود. تنظیمات موقتی یا دائمی swappiness به شما این امکان را می‌دهند که بسته به نیاز خود، رفتار حافظه و Swap را در سیستم لینوکس مدیریت کنید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 8. بررسی حافظه با دستورات پیشرفته”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از ابزار sar برای نمایش آمار تاریخی مصرف حافظه” subtitle=”توضیحات کامل”]ابزار sar (System Activity Reporter) یکی از ابزارهای مفید در لینوکس است که به شما اجازه می‌دهد تا اطلاعات مختلفی را درباره وضعیت سیستم از جمله مصرف حافظه، CPU، و I/O در طول زمان مشاهده کنید. با استفاده از sar، می‌توانید آمار تاریخی مصرف حافظه را جمع‌آوری و تحلیل کنید و رفتار سیستم را در بازه‌های زمانی مختلف مقایسه کنید.

در این بخش، به معرفی نحوه استفاده از ابزار sar برای مشاهده مصرف حافظه سیستم و مقایسه آن در بازه‌های زمانی مختلف می‌پردازیم.


نصب ابزار sysstat برای دسترسی به sar

ابزار sar بخشی از بسته نرم‌افزاری به نام sysstat است. اگر این بسته در سیستم شما نصب نیست، می‌توانید آن را از طریق مدیر بسته توزیع خود نصب کنید. برای نصب sysstat در توزیع‌های مبتنی بر Debian/Ubuntu از دستور زیر استفاده کنید:

sudo apt install sysstat

برای توزیع‌های مبتنی بر RedHat/CentOS از دستور زیر استفاده کنید:

sudo yum install sysstat

برای توزیع‌های مبتنی بر Arch:

sudo pacman -S sysstat

فعال‌سازی جمع‌آوری داده‌های sar

به‌طور پیش‌فرض، ابزار sar داده‌ها را به‌طور خودکار جمع‌آوری نمی‌کند. برای فعال‌سازی این ویژگی، باید سرویس جمع‌آوری آمار سیستم را فعال کنید. برای فعال‌سازی این سرویس در سیستم‌های مبتنی بر Debian/Ubuntu، دستور زیر را وارد کنید:

sudo systemctl enable sysstat
sudo systemctl start sysstat

برای توزیع‌های مبتنی بر RedHat/CentOS:

sudo systemctl enable sysstat
sudo systemctl start sysstat

با فعال‌سازی این سرویس، داده‌ها به‌طور خودکار هر 10 دقیقه جمع‌آوری خواهند شد و شما می‌توانید به تاریخچه‌ای از آمار سیستم دسترسی داشته باشید.


مشاهده مصرف حافظه با sar

برای مشاهده آمار مصرف حافظه از ابزار sar، می‌توانید از دستور زیر استفاده کنید:

sar -r 1 10

در اینجا:

  • -r برای نمایش آمار مصرف حافظه است.
  • 1 نشان‌دهنده فواصل زمانی (در ثانیه) برای جمع‌آوری داده‌ها است.
  • 10 تعداد دفعاتی است که داده‌ها جمع‌آوری خواهند شد.

این دستور اطلاعاتی مانند استفاده از حافظه فیزیکی، استفاده از swap، و دیگر پارامترهای حافظه را نمایش می‌دهد.

خروجی این دستور به‌طور مشابه به شکل زیر خواهد بود:

Linux 5.4.0-42-generic (ubuntu)   02/03/2025      _x86_64_        (4 CPU)

11:22:44 AM   kbmemfree   kbmemused  %memused  kbswpfree  kbswpused  %swpused  kbbuffers  kbcached
11:22:45 AM     512400     3146032     86.10      1048576       1024     0.00      1532928    204288
11:22:46 AM     512200     3146232     86.11      1048576       1024     0.00      1532928    204288
11:22:47 AM     512100     3146432     86.12      1048576       1024     0.00      1532928    204288

در این خروجی:

  • kbmemfree: مقدار حافظه آزاد به کیلوبایت.
  • kbmemused: مقدار حافظه استفاده‌شده به کیلوبایت.
  • %memused: درصد استفاده از حافظه فیزیکی.
  • kbswpfree: مقدار فضای Swap آزاد.
  • kbswpused: مقدار فضای Swap استفاده‌شده.
  • %swpused: درصد استفاده از فضای Swap.
  • kbbuffers: مقدار حافظه‌ای که برای ذخیره‌سازی داده‌ها (buffers) استفاده می‌شود.
  • kbcached: مقدار حافظه‌ای که برای کش داده‌ها استفاده می‌شود.

نمایش آمار مصرف حافظه تاریخی

اگر می‌خواهید مصرف حافظه را در یک بازه زمانی خاص مشاهده کنید، می‌توانید داده‌های قبلی را با استفاده از دستور زیر مشاهده کنید:

sar -r -f /var/log/sa/saXX

در اینجا، XX نمایان‌گر شماره روز است. به‌عنوان مثال، برای مشاهده داده‌های مربوط به روز 3 فوریه (اگر روز جاری باشد)، از دستور زیر استفاده کنید:

sar -r -f /var/log/sa/sa03

این دستور آمار مصرف حافظه را برای آن روز خاص نمایش خواهد داد.


مقایسه مصرف حافظه در بازه‌های زمانی مختلف

با استفاده از دستور sar، می‌توانید مصرف حافظه را در بازه‌های زمانی مختلف مقایسه کنید. برای مثال، اگر بخواهید مصرف حافظه در دو بازه زمانی مختلف را مقایسه کنید، می‌توانید از دستور زیر استفاده کنید:

sar -r -s 09:00:00 -e 12:00:00

در اینجا:

  • -s 09:00:00: زمان شروع برای جمع‌آوری داده‌ها.
  • -e 12:00:00: زمان پایان برای جمع‌آوری داده‌ها.

این دستور آمار مصرف حافظه را بین ساعت 9 صبح تا 12 ظهر نمایش می‌دهد.


جمع‌آوری داده‌ها در بازه‌های زمانی دلخواه

برای جمع‌آوری داده‌ها در بازه‌های زمانی دلخواه و مشاهده گزارشات در آن بازه زمانی، می‌توانید از دستور زیر استفاده کنید:

sar -r -s 09:00:00 -e 09:10:00 -f /var/log/sa/sa03

در اینجا، -f /var/log/sa/sa03 فایل آمار روزانه 3 فوریه را به‌عنوان منبع برای جمع‌آوری داده‌ها انتخاب می‌کند.


نکات و پیشنهادات

  • داده‌های جمع‌آوری‌شده: ابزار sar به‌طور پیش‌فرض داده‌ها را در فایل‌های خاصی در /var/log/sa/ ذخیره می‌کند. شما می‌توانید از این داده‌ها برای تجزیه و تحلیل عملکرد سیستم در طول زمان استفاده کنید.
  • زمان‌های جمع‌آوری داده‌ها: اگر نیاز دارید که داده‌ها به‌طور مکرر جمع‌آوری شوند، می‌توانید از کرون‌جاب استفاده کنید تا دستور sar را در فواصل زمانی خاص به‌طور خودکار اجرا کند.
  • مشاهده مصرف حافظه در هنگام افزایش فشار سیستم: با استفاده از sar، می‌توانید زمان‌هایی که سیستم با کمبود حافظه روبه‌رو می‌شود را شناسایی کرده و تنظیمات مربوط به حافظه و Swap را بهینه کنید.

جمع بندی

ابزار sar یکی از ابزارهای کاربردی برای مشاهده آمار مصرف حافظه در لینوکس است. این ابزار می‌تواند به شما کمک کند تا مصرف حافظه را در طول زمان بررسی کرده و رفتار سیستم را در بازه‌های زمانی مختلف مقایسه کنید. با استفاده از دستورات ساده مانند sar -r، می‌توانید آمار لحظه‌ای مصرف حافظه را مشاهده کرده و با استفاده از گزینه‌های مختلف، داده‌های تاریخی را تجزیه و تحلیل کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از دستور pidstat -r برای نمایش مصرف حافظه توسط فرآیندهای خاص” subtitle=”توضیحات کامل”]دستور pidstat یکی از ابزارهای مفید برای نظارت بر عملکرد سیستم و فرآیندهای در حال اجرا در لینوکس است. این دستور به‌ویژه برای مشاهده جزئیات مصرف منابع توسط فرآیندهای خاص کاربرد دارد. گزینه -r در دستور pidstat به‌طور خاص برای نمایش اطلاعات مصرف حافظه مربوط به هر فرآیند استفاده می‌شود. این اطلاعات می‌توانند به شما کمک کنند تا بفهمید کدام فرآیندها بیشتر از حافظه استفاده می‌کنند و بتوانید عملکرد سیستم را بهینه کنید.


نحوه استفاده از pidstat -r

برای نمایش مصرف حافظه توسط فرآیندهای خاص، می‌توانید دستور pidstat -r را به شکل زیر اجرا کنید:

pidstat -r 1

در اینجا:

  • -r: نشان‌دهنده گزینه‌ای است که مصرف حافظه فرآیندها را نمایش می‌دهد.
  • 1: مدت زمان (در ثانیه) بین هر بار اجرای دستور است که اطلاعات جدید را جمع‌آوری می‌کند. در این مثال، اطلاعات هر 1 ثانیه به‌روزرسانی می‌شود.

این دستور به‌طور پیوسته مصرف حافظه (از جمله حافظه واقعی و استفاده از فضای swap) برای هر فرآیند در حال اجرا را نمایش می‌دهد.


خروجی دستور pidstat -r

پس از اجرای دستور pidstat -r 1، اطلاعاتی مشابه به خروجی زیر را مشاهده خواهید کرد:

Linux 5.4.0-42-generic (ubuntu)   02/03/2025      _x86_64_        (4 CPU)

06:42:12 PM   UID   PID   %MEM  RSS   SWAP
06:42:13 PM   1001  1204  5.12  129604  2048
06:42:13 PM   1002  1305  3.56  91028   1024
06:42:13 PM   1003  1402  0.92  23048   512
06:42:13 PM   1001  1501  1.23  31204   0

در این خروجی:

  • UID: شناسه کاربری (User ID) که فرآیند تحت آن اجرا می‌شود.
  • PID: شناسه فرآیند (Process ID) که نشان‌دهنده فرآیند در حال اجرا است.
  • %MEM: درصد استفاده از حافظه فیزیکی توسط فرآیند.
  • RSS: مقدار حافظه فیزیکی استفاده‌شده توسط فرآیند به کیلوبایت (Resident Set Size).
  • SWAP: مقدار فضای Swap استفاده‌شده توسط فرآیند به کیلوبایت.

فیلتر کردن فرآیندهای خاص

اگر شما تنها به اطلاعات مصرف حافظه یک فرآیند خاص نیاز دارید، می‌توانید دستور pidstat -r را با فیلتر کردن بر اساس شناسه فرآیند (PID) استفاده کنید. برای این کار کافی است شماره PID را به دستور اضافه کنید. به عنوان مثال:

pidstat -r -p 1234 1

در اینجا:

  • -p 1234: فقط اطلاعات مصرف حافظه فرآیند با PID برابر با 1234 را نمایش می‌دهد.

این دستور به شما کمک می‌کند تا تنها مصرف حافظه فرآیند خاصی را نظارت کنید و اطلاعات به‌دست‌آمده را برای تحلیل دقیق‌تر استفاده کنید.


مشاهده مصرف حافظه در بازه‌های زمانی خاص

اگر می‌خواهید مصرف حافظه فرآیندها را در بازه زمانی خاص مشاهده کنید، می‌توانید از گزینه -u برای تنظیم فواصل زمانی استفاده کنید. به‌عنوان مثال:

pidstat -r -p 1234 -u 5

در اینجا:

  • -u 5: این دستور مصرف حافظه فرآیند با PID 1234 را هر 5 ثانیه به‌روزرسانی خواهد کرد.

نکات و پیشنهادات

  • استفاده از دستور pidstat برای شناسایی فرآیندهای با مصرف بالای حافظه: با استفاده از این ابزار، می‌توانید فرآیندهایی که بیشترین حافظه را مصرف می‌کنند شناسایی کنید و در صورت لزوم اقدام به بهینه‌سازی یا خاتمه دادن به آنها کنید.
  • ترکیب با ابزارهای دیگر: دستور pidstat -r می‌تواند با سایر ابزارهای مانیتورینگ مانند top یا htop ترکیب شود تا تصویری کامل از وضعیت مصرف منابع سیستم به‌دست آید.
  • اجرای دستور به‌طور دوره‌ای: با اجرای دستور pidstat -r در فواصل زمانی مشخص، می‌توانید تغییرات مصرف حافظه را در طول زمان بررسی کرده و روند تغییرات را تحلیل کنید.

جمع بندی

ابزار pidstat -r یک ابزار قدرتمند برای نظارت بر مصرف حافظه توسط فرآیندهای خاص در سیستم لینوکس است. با استفاده از این ابزار می‌توانید اطلاعات دقیقی درباره مصرف حافظه هر فرآیند از جمله حافظه واقعی و استفاده از فضای Swap به‌دست آورید. این اطلاعات می‌تواند به شما کمک کند تا فرآیندهایی که منابع سیستم را به طور نامناسب مصرف می‌کنند شناسایی کرده و اقدامات لازم برای بهبود عملکرد سیستم را انجام دهید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 9. مشکلات رایج حافظه در لینوکس”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی مشکل Out of Memory (OOM) در لینوکس” subtitle=”توضیحات کامل”]زمانی که سیستم شما با کمبود حافظه مواجه می‌شود، به‌ویژه در محیط‌های سرور یا پردازش‌های سنگین، ممکن است با مشکل “Out of Memory” (OOM) روبه‌رو شوید. این وضعیت به این معنی است که سیستم نتوانسته حافظه کافی برای اجرای فرآیندهای جدید یا جاری تأمین کند و به همین دلیل ممکن است برخی فرآیندها به‌طور خودکار متوقف شوند یا کرش کنند. در این بخش، به بررسی روش‌هایی برای شناسایی و مدیریت مشکلات OOM در لینوکس می‌پردازیم.


نحوه شناسایی فرآیندهایی که باعث OOM می‌شوند

یکی از روش‌های اصلی برای شناسایی فرآیندهایی که باعث ایجاد وضعیت OOM می‌شوند، استفاده از ابزار dmesg است. این ابزار، اطلاعات مربوط به پیام‌های هسته سیستم را در اختیار شما قرار می‌دهد که می‌تواند به شناسایی دلایل وقوع OOM کمک کند.


استفاده از دستور dmesg برای شناسایی دلیل OOM

دستور dmesg یکی از ابزارهای مهم در لینوکس است که برای نمایش پیام‌های مربوط به هسته سیستم (Kernel) استفاده می‌شود. این پیام‌ها اطلاعات مفیدی در مورد وقوع خطاها و مشکلات، از جمله OOM، فراهم می‌کنند. برای بررسی پیام‌های OOM از دستور dmesg استفاده می‌کنیم.

برای مشاهده پیام‌های OOM، دستور زیر را وارد کنید:

dmesg | grep -i oom

این دستور پیام‌هایی را که حاوی واژه “OOM” هستند فیلتر کرده و نمایش می‌دهد. معمولاً زمانی که سیستم با مشکل OOM روبه‌رو می‌شود، هسته سیستم پیامی مشابه به این نمایش می‌دهد:

Out of memory: Kill process 12345 (example_process) score 123 or sacrifice child
Killing process 12345 (example_process) ...

در اینجا:

  • Out of memory: پیام اصلی که نشان‌دهنده وقوع مشکل OOM است.
  • Kill process 12345: فرآیندی که به دلیل استفاده بیش از حد از حافظه متوقف شده است. در این مثال، PID فرآیند 12345 است.
  • score 123: امتیاز اولویت که به فرآیند اختصاص داده شده است (امتیاز بیشتر نشان‌دهنده اولویت بالاتر برای متوقف شدن فرآیند است).

تجزیه و تحلیل جزئیات پیام‌های OOM

در پیام‌های OOM، معمولاً اطلاعاتی شامل دلایل وقوع OOM و فرآیندهایی که باعث آن شده‌اند، درج می‌شود. به‌عنوان مثال:

Out of memory: Kill process 12345 (example_process) score 123 or sacrifice child
Killed process 12345 (example_process) total-vm:123456kB, anon-rss:12345kB, file-rss:12345kB

در اینجا:

  • total-vm: حجم کل حافظه مجازی که فرآیند اشغال کرده است.
  • anon-rss: میزان حافظه واقعی (RSS) که فرآیند استفاده کرده است (حافظه‌ای که توسط فرآیند اختصاص داده شده).
  • file-rss: میزان حافظه‌ای که فرآیند از فایل‌ها (یا بخش‌هایی از فایل‌های mmap شده) استفاده می‌کند.

با تحلیل این مقادیر، می‌توانید بفهمید که کدام فرآیند بیشترین حافظه را مصرف کرده و باعث وقوع OOM شده است.


استفاده از دستور top یا htop برای شناسایی فرآیندهای مشکل‌ساز

در هنگام وقوع OOM، استفاده از ابزارهای مانیتورینگ مانند top یا htop می‌تواند کمک کند تا فرآیندهایی که مصرف زیادی از حافظه دارند شناسایی شوند. برای استفاده از top می‌توانید دستور زیر را وارد کنید:

top

در اینجا، با فشار دادن کلید M می‌توانید فرآیندها را بر اساس مصرف حافظه مرتب کنید.

در htop هم می‌توانید به راحتی فرآیندهایی که بیشترین حافظه را مصرف می‌کنند مشاهده کنید، زیرا htop به‌طور گرافیکی اطلاعات را نمایش می‌دهد و به شما امکان می‌دهد که فرآیندهای مشکل‌ساز را شناسایی کنید.


تغییر تنظیمات برای جلوگیری از OOM

برای کاهش احتمال وقوع OOM، می‌توانید تنظیمات هسته سیستم را تغییر دهید. یکی از این تنظیمات، تغییر اولویت انتخاب فرآیندهایی است که باید متوقف شوند زمانی که حافظه سیستم پر می‌شود.

  1. تنظیم vm.overcommit_memory: این پارامتر تعیین می‌کند که چگونه سیستم باید با درخواست‌های حافظه بیشتر از مقدار فیزیکی آن برخورد کند.
    • vm.overcommit_memory=0: سیستم به‌طور خودکار حافظه را تخصیص می‌دهد و به درخواست‌های حافظه اضافی پاسخ می‌دهد.
    • vm.overcommit_memory=1: سیستم همیشه حافظه را تخصیص می‌دهد، حتی اگر بیشتر از حافظه فیزیکی باشد.
    • vm.overcommit_memory=2: سیستم فقط حافظه را تخصیص می‌دهد اگر مقدار فیزیکی موجود باشد.

برای تغییر این مقدار به صورت موقت:

echo 2 > /proc/sys/vm/overcommit_memory

برای تغییر دائم این تنظیم، مقدار آن را در فایل /etc/sysctl.conf اضافه کنید:

vm.overcommit_memory=2
  1. تنظیم vm.swappiness: این پارامتر میزان تمایل سیستم به استفاده از swap را کنترل می‌کند. مقادیر بالاتر باعث می‌شوند که سیستم زودتر از فضای swap استفاده کند.
echo 60 > /proc/sys/vm/swappiness

برای تغییر دائم این تنظیم، مقدار آن را در فایل /etc/sysctl.conf اضافه کنید:

vm.swappiness=60

جمع بندی

زمانی که سیستم با مشکل “Out of Memory” (OOM) روبه‌رو می‌شود، استفاده از ابزارهایی مانند dmesg برای شناسایی فرآیندهای مشکل‌ساز و علت وقوع OOM بسیار مفید است. همچنین، با استفاده از ابزارهای نظارتی مانند top و htop می‌توانید به‌سرعت فرآیندهایی که بیشترین حافظه را مصرف می‌کنند شناسایی کنید. علاوه بر این، تنظیمات مختلف هسته لینوکس مانند vm.overcommit_memory و vm.swappiness می‌توانند به مدیریت بهتر حافظه کمک کنند و از وقوع مشکلات OOM جلوگیری کنند.

 [/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”مشکل Thrashing در لینوکس: تحلیل وضعیت Swap و I/O برای شناسایی مشکل” subtitle=”توضیحات کامل”]”Thrashing” یک وضعیت بحرانی در سیستم‌های کامپیوتری است که زمانی رخ می‌دهد که سیستم به‌طور مداوم در حال جابجایی داده‌ها بین حافظه اصلی (RAM) و فضای Swap است. این وضعیت به شدت کاهش عملکرد سیستم را به دنبال دارد زیرا بیشتر منابع سیستم صرف عملیات I/O (ورودی/خروجی) می‌شود تا انجام محاسبات واقعی. در این بخش، به بررسی روش‌هایی برای شناسایی و تحلیل وضعیت Swap و I/O در سیستم‌های لینوکس برای شناسایی مشکل Thrashing پرداخته خواهد شد.


وضعیت Thrashing: چه زمانی رخ می‌دهد؟

Thrashing زمانی اتفاق می‌افتد که:

  1. سیستم حافظه فیزیکی (RAM) کافی برای اجرای فرآیندها ندارد.
  2. سیستم شروع به استفاده زیاد از فضای Swap می‌کند (فضای ذخیره‌سازی روی دیسک که برای ذخیره داده‌های موقت استفاده می‌شود).
  3. بارهای I/O سیستم به طور مداوم بالا می‌روند زیرا داده‌ها به طور مکرر از حافظه اصلی به فضای Swap منتقل می‌شوند و برمی‌گردند.

در این حالت، سیستم نمی‌تواند به‌طور مؤثر منابع خود را برای انجام محاسبات یا اجرای وظایف دیگر تخصیص دهد و در نهایت به صورت مداوم از حافظه به Swap و برعکس جابجا می‌شود، که منجر به کندی عملکرد سیستم می‌شود.


نحوه شناسایی Thrashing با استفاده از ابزارهای لینوکس

برای شناسایی وضعیت Thrashing و تجزیه و تحلیل آن، لازم است تا وضعیت Swap و I/O سیستم را بررسی کنیم. برای این کار می‌توان از ابزارهایی مانند vmstat, iostat, top, و sar استفاده کرد.


استفاده از دستور vmstat برای شناسایی Thrashing

دستور vmstat یک ابزار بسیار مفید است که اطلاعات مربوط به حافظه، Swap، I/O و فرآیندهای سیستم را نمایش می‌دهد. یکی از نشانه‌های اصلی Thrashing، استفاده زیاد از فضای Swap و تعداد بالای عملیات I/O است. برای تحلیل وضعیت با استفاده از vmstat، دستور زیر را وارد کنید:

vmstat 1

این دستور اطلاعات سیستم را هر ثانیه به‌روزرسانی می‌کند و شما می‌توانید مقادیر مختلف مانند مصرف حافظه، Swap و I/O را مشاهده کنید. خروجی این دستور به‌صورت زیر خواهد بود:

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa st
 1  0  20480  1024   1024   4096   10   12    30    40   123   456  15  10  70  5  0

در اینجا:

  • swpd: مقدار فضای Swap استفاده‌شده به کیلوبایت.
  • si: تعداد صفحات وارد شده از فضای Swap به حافظه اصلی (Swap In).
  • so: تعداد صفحات خارج شده از حافظه اصلی به Swap (Swap Out).
  • bi: تعداد بلوک‌های ورودی (I/O read).
  • bo: تعداد بلوک‌های خروجی (I/O write).
  • r: تعداد فرآیندهای در حال اجرا.
  • b: تعداد فرآیندهای در انتظار منابع (مثل I/O).

در حالت Thrashing، مقادیر si (Swap In) و so (Swap Out) معمولاً بالا هستند. همچنین، تعداد عملیات‌های I/O (bi و bo) هم به طور مداوم زیاد است. اگر این مقادیر به‌طور مداوم بالا بمانند، احتمالاً سیستم در حال Thrashing است.


استفاده از دستور iostat برای بررسی I/O

یکی دیگر از ابزارهای مفید برای تجزیه و تحلیل وضعیت I/O، دستور iostat است که آمار مربوط به فعالیت‌های ورودی/خروجی سیستم را نمایش می‌دهد. برای مشاهده وضعیت I/O در سیستم و شناسایی این که آیا سیستم با مشکلات I/O روبه‌رو است یا خیر، می‌توانید از دستور زیر استفاده کنید:

iostat -x 1

این دستور اطلاعات دقیقی در مورد وضعیت I/O دستگاه‌ها نمایش می‌دهد و در فواصل زمانی یک ثانیه به‌روزرسانی می‌شود. خروجی مشابه به زیر خواهد بود:

Device            r/s     w/s   rkB/s   wkB/s   avgrq-sz  avgqu-sz await r_await w_await svctm %util
sda              2.00    1.00    50.00   25.00     75.00    0.10     10.0    8.0     12.0    0.10  12.0

در اینجا:

  • r/s: تعداد درخواست‌های خواندن (Read requests per second).
  • w/s: تعداد درخواست‌های نوشتن (Write requests per second).
  • rkB/s: مقدار داده خوانده‌شده در ثانیه (KB read per second).
  • wkB/s: مقدار داده نوشته‌شده در ثانیه (KB written per second).
  • avgrq-sz: اندازه میانگین درخواست‌ها (average request size).
  • await: زمان متوسط انتظار برای عملیات I/O به میلی‌ثانیه (average wait time).

در وضعیت Thrashing، معمولاً مقادیر await (زمان انتظار I/O) و avgqu-sz (اندازه صف I/O) بالا خواهند بود. این مقادیر نشان‌دهنده تأخیر در عملیات I/O و احتمالاً نشانه‌ای از استفاده بیش از حد از فضای Swap هستند.


استفاده از دستور top برای شناسایی فرآیندهای مصرف‌کننده حافظه

برای شناسایی فرآیندهایی که باعث استفاده زیاد از حافظه و در نتیجه استفاده بیش از حد از Swap می‌شوند، می‌توانید از دستور top یا htop استفاده کنید. در دستور top، با فشردن کلید M می‌توانید فرآیندها را بر اساس مصرف حافظه مرتب کنید.

top

در خروجی top، فرآیندهایی که بیشترین حافظه را مصرف می‌کنند با بالاترین میزان مصرف در فهرست ظاهر می‌شوند. اگر یک فرآیند به طور مداوم در حال مصرف منابع زیادی باشد، ممکن است باعث شروع وضعیت Thrashing شود.


جمع بندی

Thrashing یک مشکل جدی است که زمانی رخ می‌دهد که سیستم به‌طور مداوم بین حافظه اصلی (RAM) و فضای Swap جابجا می‌شود و باعث کندی عملکرد سیستم می‌شود. برای شناسایی این مشکل، باید وضعیت استفاده از فضای Swap و I/O را بررسی کرد. ابزارهای لینوکس مانند vmstat, iostat, top و sar می‌توانند اطلاعات دقیقی در مورد مصرف منابع و وضعیت سیستم در اختیار شما قرار دهند. در صورتی که سیستم در حالت Thrashing قرار دارد، باید فرآیندهای مصرف‌کننده حافظه زیاد را شناسایی کرده و اقداماتی مانند افزایش حافظه RAM یا بهینه‌سازی فرآیندها انجام دهید.

 [/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 4. نظارت بر سیستم فایل”][cdb_course_lesson title=”فصل 1. مقدمه بر سیستم فایل لینوکس”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”مفهوم فایل سیستم و ساختار آن در لینوکس” subtitle=”توضیحات کامل”]در سیستم‌عامل‌های لینوکس، فایل سیستم یکی از اجزای اساسی است که برای ذخیره‌سازی و مدیریت داده‌ها استفاده می‌شود. به‌طور کلی، فایل سیستم به مجموعه‌ای از قوانین و ساختارها اطلاق می‌شود که نحوه ذخیره‌سازی، سازمان‌دهی و دسترسی به داده‌ها را تعیین می‌کند. در این بخش، به بررسی مفاهیم پایه‌ای فایل سیستم در لینوکس، ساختار آن و نحوه مدیریت آن پرداخته خواهد شد.


ساختار پایه‌ای فایل سیستم

در لینوکس، فایل سیستم به‌طور معمول به‌صورت درختی سازمان‌دهی می‌شود. در این ساختار درختی، ریشه (root) به‌عنوان نقطه شروع فایل سیستم شناخته می‌شود که در آن تمامی فایل‌ها و دایرکتوری‌ها قرار دارند. تمامی فایل‌ها، دایرکتوری‌ها، و دستگاه‌ها از این نقطه ریشه‌گیری می‌کنند.

ساختار اصلی فایل سیستم در لینوکس به صورت زیر است:

/
├── bin/
├── boot/
├── dev/
├── etc/
├── home/
├── lib/
├── media/
├── mnt/
├── opt/
├── proc/
├── root/
├── run/
├── sbin/
├── srv/
├── sys/
├── tmp/
├── usr/
└── var/

در این ساختار:

  • /: ریشه (Root) فایل سیستم است و همه دایرکتوری‌ها و فایل‌ها از آن منشأ می‌گیرند.
  • /bin: دایرکتوری حاوی فایل‌های باینری اجرایی سیستم پایه‌ای است.
  • /boot: حاوی فایل‌های راه‌اندازی (boot loader) و هسته سیستم (kernel) است.
  • /dev: دایرکتوری برای دستگاه‌ها و درایورها (devices) است.
  • /etc: شامل تنظیمات و پیکربندی‌های سیستم است.
  • /home: دایرکتوری که شامل داده‌های کاربران و خانه آن‌هاست.
  • /lib: شامل کتابخانه‌های سیستم و برنامه‌ها است.
  • /media: دایرکتوری که برای اتصال موقت دستگاه‌های خارجی (مانند USB) استفاده می‌شود.
  • /mnt: دایرکتوری برای متصل کردن دستی سیستم‌های فایل دیگر (mount).
  • /opt: حاوی نرم‌افزارهای اضافی نصب شده در سیستم است.
  • /proc: دایرکتوری مجازی است که اطلاعات مربوط به وضعیت سیستم را در خود نگه می‌دارد.
  • /root: دایرکتوری خانگی برای کاربر ریشه (root user) است.
  • /run: دایرکتوری برای داده‌های اجرایی سیستم در زمان اجرا.
  • /sbin: حاوی باینری‌هایی است که تنها توسط مدیر سیستم (root) برای مدیریت سیستم مورد استفاده قرار می‌گیرند.
  • /srv: دایرکتوری که اطلاعات مربوط به سرویس‌های سیستم را ذخیره می‌کند.
  • /sys: دایرکتوری مجازی دیگر برای نمایش اطلاعات دستگاه‌ها و هسته سیستم.
  • /tmp: دایرکتوری برای ذخیره‌سازی فایل‌های موقت است.
  • /usr: حاوی فایل‌ها و نرم‌افزارهای نصب شده برای کاربران است.
  • /var: دایرکتوری برای ذخیره‌سازی فایل‌های متغیر مانند لاگ‌ها، صف‌ها و داده‌های موقتی.

فایل سیستم‌های مختلف در لینوکس

لینوکس از چندین نوع فایل سیستم مختلف پشتیبانی می‌کند. در این بخش به بررسی برخی از این فایل سیستم‌ها پرداخته می‌شود.

1. ext4 (Fourth Extended File System)

ext4 یکی از محبوب‌ترین و پرکاربردترین فایل سیستم‌های لینوکس است. این فایل سیستم از ویژگی‌هایی مانند ذخیره‌سازی حجم‌های بزرگ داده، پشتیبانی از فهرست‌بندی‌های بزرگ و افزایش کارایی در هنگام نوشتن داده‌ها بهره‌برده است. این فایل سیستم به‌طور پیش‌فرض در اکثر توزیع‌های لینوکس استفاده می‌شود.

2. XFS

XFS یک فایل سیستم با کارایی بالا است که بیشتر برای سیستم‌هایی با حجم داده بزرگ و بارهای کاری سنگین طراحی شده است. این فایل سیستم به‌ویژه برای مدیریت مقادیر زیادی از داده‌ها با سرعت بالا مفید است.

3. Btrfs (B-tree file system)

Btrfs یک فایل سیستم پیشرفته است که از ویژگی‌هایی مانند snapshot‌ها (حالت‌های مختلف از سیستم فایل) و امکان مدیریت بهتر حجم‌های بزرگ داده پشتیبانی می‌کند. این فایل سیستم به‌طور خاص برای استفاده در محیط‌های ذخیره‌سازی داده‌های حجیم طراحی شده است.

4. FAT32 و NTFS

این فایل سیستم‌ها معمولاً برای سازگاری با سیستم‌عامل‌های دیگر مانند ویندوز استفاده می‌شوند. FAT32 بیشتر برای دیسک‌های قابل حمل و دستگاه‌هایی مانند فلش‌درایوها استفاده می‌شود، در حالی که NTFS برای دستگاه‌های ذخیره‌سازی داخلی استفاده می‌شود.


مدیریت فایل سیستم در لینوکس

در لینوکس، برای مدیریت و نظارت بر فایل سیستم از دستورات مختلفی استفاده می‌شود. در این بخش، به بررسی برخی از دستورات پرکاربرد برای مدیریت فایل سیستم پرداخته خواهد شد.

1. دستور df

دستور df برای نمایش فضای استفاده‌شده و فضای آزاد در سیستم فایل‌ها استفاده می‌شود. برای نمایش وضعیت تمام سیستم فایل‌ها می‌توانید دستور زیر را وارد کنید:

df -h

پارامتر -h باعث نمایش اندازه‌ها به صورت خوانا (مثلاً به کیلوبایت، مگابایت و گیگابایت) می‌شود.

2. دستور du

دستور du برای محاسبه اندازه دایرکتوری‌ها و فایل‌ها استفاده می‌شود. به عنوان مثال، برای مشاهده اندازه یک دایرکتوری خاص، می‌توانید از دستور زیر استفاده کنید:

du -sh /home/user

این دستور اندازه دایرکتوری /home/user را به‌صورت خوانا نمایش می‌دهد.

3. دستور mount

برای متصل کردن یک فایل سیستم به یک دایرکتوری خاص (mount)، از دستور mount استفاده می‌شود. برای مثال:

mount /dev/sdb1 /mnt/data

این دستور فایل سیستم موجود در دستگاه /dev/sdb1 را به دایرکتوری /mnt/data متصل می‌کند.

4. دستور umount

برای جداسازی یک فایل سیستم (unmount) از سیستم، از دستور umount استفاده می‌شود:

umount /mnt/data

این دستور فایل سیستم متصل به دایرکتوری /mnt/data را جدا می‌کند.

5. دستور fsck

دستور fsck برای بررسی و تعمیر خطاهای فایل سیستم استفاده می‌شود. برای بررسی یک فایل سیستم خاص، از دستور زیر استفاده کنید:

fsck /dev/sda1

این دستور فایل سیستم /dev/sda1 را بررسی کرده و در صورت وجود خطا، آن‌ها را اصلاح می‌کند.


جمع بندی

فایل سیستم در لینوکس برای سازمان‌دهی و مدیریت داده‌ها از ساختار درختی استفاده می‌کند. از جمله ویژگی‌های مهم فایل سیستم لینوکس می‌توان به پشتیبانی از انواع مختلف فایل سیستم‌ها مانند ext4، XFS، و Btrfs اشاره کرد که هرکدام برای اهداف خاصی طراحی شده‌اند. برای مدیریت و نظارت بر فایل سیستم، ابزارهایی مانند df, du, mount, umount و fsck به‌طور مداوم در سیستم‌های لینوکس مورد استفاده قرار می‌گیرند. با درک درست ساختار و مدیریت فایل سیستم، می‌توان از عملکرد بهینه سیستم لینوکس بهره برد و از مشکلات احتمالی جلوگیری کرد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”نقش فایل سیستم در ذخیره‌سازی داده‌ها” subtitle=”توضیحات کامل”]فایل سیستم‌ها یکی از اجزای حیاتی در سیستم‌عامل‌های مدرن هستند که نقش اصلی را در ذخیره‌سازی، سازمان‌دهی و مدیریت داده‌ها ایفا می‌کنند. بدون فایل سیستم، سیستم‌عامل قادر نخواهد بود که داده‌ها را به‌طور مؤثر ذخیره کرده و از آن‌ها استفاده کند. در این بخش به نقش فایل سیستم در ذخیره‌سازی داده‌ها پرداخته می‌شود و چگونگی تأثیر آن بر عملکرد، دسترسی و مدیریت داده‌ها بررسی می‌شود.


مفهوم فایل سیستم

فایل سیستم به مجموعه‌ای از قوانین، فرمت‌ها، و روش‌هایی گفته می‌شود که برای ذخیره و مدیریت داده‌ها در یک رسانه ذخیره‌سازی (مانند هارد دیسک، SSD یا هر دستگاه ذخیره‌سازی دیگری) استفاده می‌شود. این سیستم شامل ابزارهایی برای ذخیره‌سازی، دسترسی به داده‌ها، سازمان‌دهی داده‌ها در قالب فایل‌ها و دایرکتوری‌ها و همچنین تضمین یکپارچگی داده‌ها است.


نحوه ذخیره‌سازی داده‌ها در فایل سیستم

در لینوکس و دیگر سیستم‌عامل‌ها، داده‌ها به‌صورت بلوک‌های داده‌ای (blocks) ذخیره می‌شوند. فایل سیستم وظیفه دارد که این بلوک‌ها را در دستگاه ذخیره‌سازی (دیسک) مدیریت کند. فایل‌ها و دایرکتوری‌ها به‌صورت ساختارهای خاصی ذخیره می‌شوند که دسترسی سریع و مؤثر به داده‌ها را ممکن می‌سازد.

1. ساختار درختی فایل‌ها

فایل سیستم‌ها معمولاً داده‌ها را در قالب درختی از دایرکتوری‌ها و فایل‌ها ذخیره می‌کنند. ریشه فایل سیستم (root) در بالاترین سطح قرار دارد و تمامی داده‌ها از این نقطه به زیرشاخه‌ها (دایرکتوری‌ها و فایل‌ها) سازمان‌دهی می‌شوند. این ساختار درختی به‌راحتی امکان دسترسی سریع به فایل‌ها را فراهم می‌آورد.

2. بلوک‌های ذخیره‌سازی

داده‌ها به بلوک‌های ذخیره‌سازی تقسیم می‌شوند. هر بلوک معمولاً اندازه‌ای ثابت دارد (مثلاً 4KB یا 8KB). فایل سیستم داده‌ها را در این بلوک‌ها ذخیره می‌کند و هنگامی که فایل جدیدی ایجاد می‌شود، فضاهایی از دیسک که در آن‌ها بلوک‌ها ذخیره خواهند شد، انتخاب می‌شوند. این بلوک‌ها به‌صورت پیوسته یا غیرپیوسته می‌توانند در دیسک قرار گیرند.

3. دایرکتوری‌ها و ایندکس‌ها

برای یافتن فایل‌ها و داده‌ها در فایل سیستم، از ساختارهای ایندکس استفاده می‌شود. دایرکتوری‌ها به‌عنوان ایندکس‌هایی عمل می‌کنند که مشخص می‌کنند هر فایل در کجا قرار دارد. فایل‌ها شامل اطلاعاتی در مورد محل ذخیره‌سازی داده‌ها، تاریخچه دسترسی، دسترسی به مالک، و مجوزهای امنیتی هستند.


نقش فایل سیستم در مدیریت داده‌ها

فایل سیستم‌ها نه‌تنها در ذخیره‌سازی داده‌ها، بلکه در مدیریت و دسترسی به آن‌ها نیز نقش اساسی دارند. این مدیریت شامل چندین وظیفه مهم است که به شرح زیر هستند:

1. مدیریت فضا

فایل سیستم مسئول تخصیص فضای ذخیره‌سازی به فایل‌ها و داده‌ها است. هنگامی که یک فایل ایجاد می‌شود، فایل سیستم باید فضای مناسب را از دیسک تخصیص دهد. همچنین، در مواقعی که فایل‌ها حذف می‌شوند، فایل سیستم باید فضای آزاد شده را شناسایی کرده و برای استفاده‌های بعدی آماده کند.

2. دسترس‌پذیری داده‌ها

دسترسی به داده‌ها در یک سیستم‌عامل باید سریع و کارآمد باشد. فایل سیستم‌ها با استفاده از ساختارهای ایندکس (مانند جدول تخصیص فایل‌ها) امکان دسترسی سریع به داده‌ها را فراهم می‌آورند. این ساختارها به سیستم‌عامل این امکان را می‌دهند که با حداقل جستجو، موقعیت داده‌ها را بر روی دیسک پیدا کند.

3. حفاظت از داده‌ها

یکی از وظایف مهم فایل سیستم‌ها، تأمین امنیت و یکپارچگی داده‌ها است. فایل سیستم‌ها از مجوزهای دسترسی برای کنترل اجازه خواندن، نوشتن یا اجرای فایل‌ها استفاده می‌کنند. این مجوزها به کاربران مختلف این امکان را می‌دهند که به‌طور محدود یا نامحدود به داده‌ها دسترسی پیدا کنند.

4. مدیریت خطا و بازیابی داده‌ها

فایل سیستم‌ها همچنین باید در برابر خطاهای دیسک و خرابی‌ها مقاوم باشند. برای این منظور، فایل سیستم‌ها از روش‌هایی مانند ثبت تغییرات (journaling) استفاده می‌کنند تا در صورت وقوع مشکل، بتوانند داده‌ها را بازیابی کنند. علاوه بر این، برخی فایل سیستم‌ها مانند Btrfs از قابلیت snapshot برای ذخیره‌سازی نسخه‌های مختلف از داده‌ها در زمان‌های مختلف پشتیبانی می‌کنند.


انواع فایل سیستم‌ها و تأثیر آن‌ها بر ذخیره‌سازی داده‌ها

در لینوکس و دیگر سیستم‌عامل‌ها، انواع مختلفی از فایل سیستم‌ها وجود دارند که هرکدام برای اهداف خاصی طراحی شده‌اند. این فایل سیستم‌ها ممکن است ویژگی‌های متفاوتی از نظر عملکرد، ایمنی و مقیاس‌پذیری داشته باشند. برخی از انواع رایج فایل سیستم‌ها عبارتند از:

1. ext4 (Fourth Extended File System)

ext4 یکی از محبوب‌ترین فایل سیستم‌های لینوکس است که در بیشتر توزیع‌ها به‌عنوان فایل سیستم پیش‌فرض مورد استفاده قرار می‌گیرد. این فایل سیستم از ویژگی‌هایی مانند مقیاس‌پذیری بالا، عملکرد سریع، و پشتیبانی از فایل‌های بسیار بزرگ بهره می‌برد. در ext4، داده‌ها به‌طور مؤثر ذخیره می‌شوند و فضای دیسک به‌صورت بهینه تخصیص داده می‌شود.

2. XFS

XFS یک فایل سیستم با عملکرد بالا است که به‌ویژه برای ذخیره‌سازی داده‌های بزرگ و بارهای کاری سنگین طراحی شده است. XFS از تکنیک‌هایی مانند تخصیص فضا به‌صورت مؤثر و سرعت بالای پردازش داده‌ها برای بهبود عملکرد در سیستم‌های ذخیره‌سازی استفاده می‌کند.

3. Btrfs (B-tree File System)

Btrfs یک فایل سیستم پیشرفته است که به‌ویژه برای محیط‌های ذخیره‌سازی با داده‌های زیاد و بارهای کاری پیچیده طراحی شده است. این فایل سیستم از ویژگی‌های نوآورانه‌ای مانند snapshot و قابلیت بازیابی داده‌ها استفاده می‌کند و به کاربران این امکان را می‌دهد که نسخه‌های مختلف از داده‌ها را در زمان‌های مختلف ذخیره کنند.

4. FAT32 و NTFS

این فایل سیستم‌ها معمولاً برای سازگاری با سیستم‌عامل‌های دیگر مانند ویندوز استفاده می‌شوند. FAT32 برای ذخیره‌سازی داده‌ها در دیسک‌های قابل حمل و دستگاه‌های ذخیره‌سازی کوچک استفاده می‌شود. NTFS نیز بیشتر برای ذخیره‌سازی داده‌ها در دیسک‌های داخلی ویندوز استفاده می‌شود، اما لینوکس می‌تواند به‌طور محدود از آن پشتیبانی کند.


جمع بندی

فایل سیستم‌ها در لینوکس و دیگر سیستم‌عامل‌ها به‌عنوان چارچوبی برای ذخیره‌سازی و مدیریت داده‌ها عمل می‌کنند. نقش فایل سیستم‌ها فراتر از ذخیره‌سازی است؛ این سیستم‌ها مسئول تخصیص فضا، دسترس‌پذیری سریع داده‌ها، مدیریت امنیت و خطاهای سیستم هستند. انواع مختلفی از فایل سیستم‌ها وجود دارند که هرکدام برای کاربردهای خاص طراحی شده‌اند و انتخاب فایل سیستم مناسب می‌تواند تأثیر زیادی بر عملکرد و کارایی ذخیره‌سازی داده‌ها در سیستم داشته باشد.[/cdb_course_lesson][cdb_course_lesson title=”فصل 2. ابزارهای خط فرمان برای نظارت بر سیستم فایل”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”دستور df در لینوکس: نمایش میزان فضای استفاده‌شده و آزاد دیسک” subtitle=”توضیحات کامل”]دستور df یکی از دستورات پرکاربرد در لینوکس است که برای نمایش وضعیت فضای دیسک (فضای استفاده‌شده و فضای آزاد) در سیستم استفاده می‌شود. این دستور می‌تواند به شما کمک کند تا میزان فضای استفاده‌شده و فضای آزاد در دیسک‌های مختلف و سیستم فایل‌ها را مشاهده کنید.


نحوه استفاده از دستور df

برای استفاده از دستور df در لینوکس، تنها کافی است آن را در ترمینال وارد کنید. به‌صورت پیش‌فرض، دستور df فضای دیسک سیستم فایل‌ها را در واحدهای بلوکی (Block) نمایش می‌دهد. برای مثال:

df

خروجی معمولاً چیزی شبیه به این خواهد بود:

Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1        1024000   523456   500000  55% /
tmpfs             102400     2048   100352   2% /tmp

در این جدول:

  • Filesystem: نام سیستم فایل (مانند /dev/sda1 یا tmpfs).
  • 1K-blocks: میزان فضای کل سیستم فایل به واحد کیلوبایت.
  • Used: فضای استفاده‌شده به واحد کیلوبایت.
  • Available: فضای آزاد به واحد کیلوبایت.
  • Use%: درصد فضای استفاده‌شده.
  • Mounted on: نقطه‌ای که سیستم فایل در آن متصل شده است (مانند / یا /tmp).

استفاده از گزینه‌ها برای نمایش داده‌های دقیق‌تر

دستور df گزینه‌های مختلفی دارد که می‌توانند جزئیات بیشتری را نمایش دهند یا واحدهای مختلفی را برای فضا انتخاب کنند.

1. نمایش فضا به صورت قابل خواندن برای انسان (با واحدهای مناسب)

با استفاده از گزینه -h می‌توان میزان فضای دیسک را به صورت قابل خواندن برای انسان نمایش داد. این گزینه اندازه‌ها را به واحدهای استانداردی مانند کیلوبایت (KB)، مگابایت (MB)، گیگابایت (GB) و… تبدیل می‌کند. به این ترتیب، خروجی به شکل زیر خواهد بود:

df -h

خروجی به‌صورت زیر خواهد بود:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       1.0G  512M  512M  50% /
tmpfs            100M  2.0M   98M   2% /tmp

در این حالت، واحدهای اندازه‌گیری برای اندازه‌های فضا به صورت راحت‌تری نمایش داده می‌شود.

2. نمایش فقط سیستم فایل‌های خاص

اگر بخواهید تنها فضای دیسک یک سیستم فایل خاص را بررسی کنید، می‌توانید نام سیستم فایل یا دایرکتوری مقصد را به دستور df بدهید. به‌عنوان مثال، برای مشاهده فضای دیسک مربوط به دایرکتوری /home:

df /home

خروجی چیزی شبیه به این خواهد بود:

Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      10240000  4096000  6144000  50% /home
3. نمایش فضای دیسک در سیستم فایل‌های مجازی (مانند tmpfs)

برای مشاهده فضای سیستم فایل‌های مجازی (مانند tmpfs) که در حافظه رم استفاده می‌شوند، می‌توانید دستور df را با گزینه -t و نام نوع سیستم فایل اجرا کنید:

df -t tmpfs

این دستور فقط سیستم فایل‌هایی که نوع آنها tmpfs است را نمایش می‌دهد.

4. نمایش فضای دیسک برای تمامی سیستم فایل‌ها به‌طور کامل

برای مشاهده فضای تمامی سیستم فایل‌ها و نقاط مونت شده به‌طور کامل می‌توانید از دستور زیر استفاده کنید:

df -a

این دستور تمامی سیستم فایل‌ها را، حتی آن‌هایی که به‌طور معمول غیر فعال هستند، نمایش خواهد داد.


توضیحات بیشتر در مورد خروجی دستور df

در خروجی دستور df، به‌ویژه در زمان استفاده از گزینه -h، شما اطلاعاتی را دریافت می‌کنید که به‌طور واضح میزان فضای کل، فضای استفاده‌شده، فضای آزاد، و درصد استفاده از فضا را نشان می‌دهند.

  • Size: اندازه کل سیستم فایل.
  • Used: فضای استفاده‌شده در سیستم فایل.
  • Avail: فضای آزاد در سیستم فایل.
  • Use%: درصد فضای استفاده‌شده از کل سیستم فایل.
  • Mounted on: نقطه‌ای که سیستم فایل در آن متصل شده است.

این اطلاعات می‌توانند به شما کمک کنند تا از میزان استفاده از فضای دیسک آگاه شوید و در صورت نیاز به پاک‌سازی یا مدیریت فضای ذخیره‌سازی، اقدام کنید.


جمع بندی

دستور df ابزاری ساده و مفید برای مشاهده وضعیت فضای دیسک در سیستم‌های لینوکس است. این دستور به شما این امکان را می‌دهد که میزان فضای استفاده‌شده و آزاد در سیستم فایل‌ها را مشاهده کنید و از وضعیت کلی فضای ذخیره‌سازی مطلع شوید. با استفاده از گزینه‌های مختلف مانند -h، -t و -a، می‌توانید خروجی را به شکل‌های مختلف و به‌صورت دقیق‌تری مشاهده کنید. این ابزار به‌ویژه در مواقعی که نیاز به بررسی و مدیریت فضای دیسک دارید، بسیار کارآمد است.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”دستور پایه df -h برای نمایش فضای دیسک به‌صورت خوانا” subtitle=”توضیحات کامل”]دستور df -h یکی از دستورات پرکاربرد در لینوکس است که برای مشاهده وضعیت فضای دیسک سیستم استفاده می‌شود. با استفاده از این دستور، می‌توان میزان فضای استفاده‌شده، فضای آزاد و فضای کلی دیسک را به‌صورت خوانا و با واحدهای مناسب (کیلوبایت، مگابایت، گیگابایت و…) مشاهده کرد.


نحوه استفاده از دستور df -h

برای اجرای دستور df -h در ترمینال، کافی است آن را وارد کنید:

df -h

این دستور، فضای دیسک را به‌صورت خوانا برای انسان نمایش می‌دهد، به‌طوری‌که اندازه‌های فضای دیسک به واحدهایی مانند کیلوبایت (K), مگابایت (M), گیگابایت (G) و… نمایش داده می‌شوند. به‌طور پیش‌فرض، این دستور تمام سیستم فایل‌های متصل به سیستم شما را نشان می‌دهد.


نمونه خروجی دستور df -h

پس از اجرای دستور، خروجی مشابه زیر را مشاهده خواهید کرد:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       20G   5.5G  13G  30% /
tmpfs           1.0G  1.5M 1024M   1% /dev/shm
/dev/sdb1       50G   22G   28G  45% /data

در این خروجی:

  • Filesystem: نام سیستم فایل (مثلاً /dev/sda1 یا /dev/shm).
  • Size: اندازه کلی سیستم فایل (در واحدهای مناسب مانند GB, MB و…).
  • Used: فضای استفاده‌شده از سیستم فایل.
  • Avail: فضای آزاد در سیستم فایل.
  • Use%: درصد فضای استفاده‌شده.
  • Mounted on: نقطه‌ای که سیستم فایل در آن متصل شده است (مانند / یا /data).

توضیحات خروجی:

  • Size: حجم کل سیستم فایل است. به‌عنوان مثال، /dev/sda1 دارای 20 گیگابایت فضای ذخیره‌سازی است.
  • Used: فضایی که تاکنون توسط داده‌ها و فایل‌ها اشغال شده است. برای مثال، در /dev/sda1 حدود 5.5 گیگابایت فضا استفاده شده است.
  • Avail: فضای باقی‌مانده و آزاد که می‌توانید از آن استفاده کنید. برای مثال، در /dev/sda1، 13 گیگابایت فضای آزاد وجود دارد.
  • Use%: درصد فضای استفاده‌شده در سیستم فایل. به‌طور مثال، 30% از فضای /dev/sda1 در حال استفاده است.
  • Mounted on: این ستون نشان می‌دهد که سیستم فایل در کدام نقطه از سیستم شما متصل است. مثلاً /dev/sda1 روی / متصل است.

کاربرد دستور df -h:

دستور df -h برای موارد زیر مفید است:

  • بررسی فضای استفاده‌شده و آزاد سیستم‌عامل.
  • نظارت بر فضای ذخیره‌سازی دیسک و تعیین اینکه آیا فضای کافی برای ذخیره‌سازی داده‌های جدید وجود دارد یا خیر.
  • شناسایی سیستم فایل‌هایی که نزدیک به پر شدن هستند تا قبل از وقوع مشکلات، اقدام به پاک‌سازی یا مدیریت فضای ذخیره‌سازی کنید.

جمع بندی

دستور df -h ابزاری ساده و کارآمد برای نظارت بر فضای دیسک در لینوکس است که اطلاعات فضای دیسک را به‌صورت خوانا برای انسان نمایش می‌دهد. این دستور با واحدهای مختلف اندازه‌گیری (مثل GB, MB) اطلاعات فضای دیسک سیستم فایل‌ها را به‌طور واضح نمایش می‌دهد و به کاربران کمک می‌کند تا مدیریت بهتری بر روی فضای ذخیره‌سازی سیستم خود داشته باشند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”دستور du برای بررسی فضای استفاده‌شده توسط فایل‌ها و دایرکتوری‌ها” subtitle=”توضیحات کامل”]دستور du یکی از دستورات مفید در لینوکس است که برای بررسی میزان فضای استفاده‌شده توسط فایل‌ها و دایرکتوری‌ها در سیستم استفاده می‌شود. این دستور به شما کمک می‌کند تا میزان فضای استفاده‌شده توسط هر فایل و دایرکتوری را به‌صورت دقیق مشاهده کنید.


نحوه استفاده از دستور du

برای استفاده از دستور du به‌صورت پایه، کافی است نام دایرکتوری یا فایل مورد نظر خود را وارد کنید. به‌طور پیش‌فرض، این دستور فضای استفاده‌شده توسط دایرکتوری و تمام زیرشاخه‌های آن را به‌صورت بلوکی نمایش می‌دهد.

du [options] [directory]

اگر بدون هیچ گزینه‌ای دستور du را اجرا کنید، فضای استفاده‌شده توسط دایرکتوری جاری و تمام زیرشاخه‌های آن نمایش داده می‌شود. به‌طور مثال:

du

خروجی ممکن است چیزی مشابه این باشد:

8       ./dir1
4       ./dir2
16      ./dir3
28      .

در این خروجی:

  • اولین ستون نشان‌دهنده فضای استفاده‌شده (بر حسب بلوک‌های 1 کیلوبایتی) است.
  • دایرکتوری‌ها یا فایل‌ها در کنار فضای استفاده‌شده نمایش داده می‌شوند.

استفاده از گزینه‌های du برای نمایش دقیق‌تر اطلاعات

دستور du دارای گزینه‌های مختلفی است که می‌تواند خروجی را دقیق‌تر و کاربردی‌تر کند.

1. نمایش فضای استفاده‌شده به واحدهای قابل خواندن برای انسان (با گزینه -h)

برای نمایش فضای استفاده‌شده به واحدهایی مانند کیلوبایت (K)، مگابایت (M)، گیگابایت (G) و…، می‌توانید از گزینه -h استفاده کنید. این گزینه باعث می‌شود که خروجی به‌صورت خوانا و با واحدهای مناسب نمایش داده شود.

du -h

خروجی به‌صورت زیر خواهد بود:

8.0K    ./dir1
4.0K    ./dir2
16K     ./dir3
28K     .
2. نمایش فضای استفاده‌شده برای یک دایرکتوری خاص

اگر فقط می‌خواهید فضای استفاده‌شده برای یک دایرکتوری خاص را مشاهده کنید، نام دایرکتوری را به دستور du بدهید. به‌طور مثال:

du -h /home/user

این دستور فضای استفاده‌شده توسط دایرکتوری /home/user و تمام زیرشاخه‌های آن را نمایش می‌دهد.

3. نمایش تنها فضای استفاده‌شده توسط دایرکتوری‌ها بدون جزئیات زیرشاخه‌ها (با گزینه --max-depth)

اگر نمی‌خواهید فضای استفاده‌شده برای هر زیرشاخه به‌صورت جداگانه نمایش داده شود و فقط می‌خواهید فضای استفاده‌شده توسط دایرکتوری‌ها را در سطح بالاتر مشاهده کنید، می‌توانید از گزینه --max-depth استفاده کنید. به‌طور مثال:

du -h --max-depth=1

این دستور تنها فضای استفاده‌شده توسط دایرکتوری‌ها در سطح اول را نمایش می‌دهد و جزئیات زیرشاخه‌های آن‌ها را نشان نمی‌دهد.

خروجی مشابه زیر خواهد بود:

8.0K    ./dir1
4.0K    ./dir2
16K     ./dir3
28K     .
4. نمایش فضای استفاده‌شده برای هر فایل و دایرکتوری به‌صورت دقیق‌تر (با گزینه -a)

اگر می‌خواهید فضای استفاده‌شده توسط هر فایل و دایرکتوری (نه فقط دایرکتوری‌ها) نمایش داده شود، می‌توانید از گزینه -a استفاده کنید. این گزینه فضای هر فایل را به‌طور جداگانه نشان می‌دهد.

du -ah

خروجی ممکن است به‌صورت زیر باشد:

4.0K    ./dir1/file1
4.0K    ./dir1/file2
8.0K    ./dir1
4.0K    ./dir2/file3
4.0K    ./dir2
16K     ./dir3
28K     .
5. نمایش فقط مجموع فضای استفاده‌شده در دایرکتوری (با گزینه -s)

اگر فقط می‌خواهید مجموع فضای استفاده‌شده توسط یک دایرکتوری خاص را مشاهده کنید و نیازی به جزئیات سایر فایل‌ها و زیرشاخه‌ها ندارید، می‌توانید از گزینه -s استفاده کنید. به‌طور مثال:

du -sh /home/user

این دستور تنها مجموع فضای استفاده‌شده توسط دایرکتوری /home/user را نمایش می‌دهد.

خروجی مشابه زیر خواهد بود:

1.2G    /home/user

جمع بندی

دستور du یکی از ابزارهای مهم برای بررسی میزان فضای استفاده‌شده توسط فایل‌ها و دایرکتوری‌ها در سیستم‌های لینوکسی است. با استفاده از گزینه‌های مختلف مانند -h، -a، --max-depth و -s می‌توانید خروجی دقیق و سفارشی برای نیازهای خود دریافت کنید. این ابزار به شما کمک می‌کند تا فضای دیسک خود را مدیریت کرده و از مشکلات پر شدن فضای ذخیره‌سازی جلوگیری کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”دستور پایه du -sh /path/to/directory” subtitle=”توضیحات کامل”]دستور du -sh /path/to/directory یکی از دستورات مفید در لینوکس است که برای بررسی میزان فضای استفاده‌شده توسط یک دایرکتوری خاص و تمام زیرشاخه‌های آن به‌صورت خلاصه و خوانا برای انسان استفاده می‌شود.


نحوه استفاده از دستور du -sh

برای استفاده از این دستور، کافی است مسیر دایرکتوری مورد نظر خود را پس از دستور بنویسید. به‌طور مثال:

du -sh /path/to/directory

در اینجا:

  • -s (Summarize) فقط مجموع فضای استفاده‌شده توسط دایرکتوری مشخص‌شده را نمایش می‌دهد و جزئیات سایر فایل‌ها و زیرشاخه‌ها را نشان نمی‌دهد.
  • -h (Human-readable) باعث می‌شود که خروجی به‌صورت خوانا برای انسان و با واحدهای مناسب (کیلوبایت، مگابایت، گیگابایت و …) نمایش داده شود.

نمونه خروجی دستور du -sh

پس از اجرای دستور، خروجی مشابه زیر را مشاهده خواهید کرد:

1.2G    /path/to/directory

در این خروجی:

  • 1.2G: مجموع فضای استفاده‌شده توسط دایرکتوری /path/to/directory و تمام زیرشاخه‌های آن است.
  • /path/to/directory: مسیر دایرکتوری مورد نظر که فضا در آن محاسبه شده است.

کاربرد دستور du -sh

دستور du -sh برای مواقعی مفید است که می‌خواهید فقط فضای کلی یک دایرکتوری را بررسی کنید، بدون اینکه جزئیات فایل‌های زیرشاخه‌های آن را ببینید. این دستور برای بررسی دایرکتوری‌های بزرگ و مدیریت فضای ذخیره‌سازی به‌ویژه در صورت نیاز به پاک‌سازی یا جابجایی داده‌ها بسیار کارآمد است.


جمع بندی

دستور du -sh /path/to/directory به شما این امکان را می‌دهد که فضای استفاده‌شده توسط یک دایرکتوری خاص را به‌صورت خلاصه و خوانا مشاهده کنید. این ابزار ساده و کاربردی به شما کمک می‌کند تا فضای ذخیره‌سازی دیسک را به‌طور مؤثر مدیریت کنید و از مشکلات فضای پر شده جلوگیری نمایید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 3. نظارت بر نقاط اتصال (Mount Points)”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی وضعیت نقاط اتصال با دستور mount” subtitle=”توضیحات کامل”]دستور mount یکی از دستورات پایه و حیاتی در لینوکس است که برای اتصال سیستم فایل‌ها به دایرکتوری‌های مختلف (نقاط اتصال) استفاده می‌شود. با استفاده از این دستور می‌توان وضعیت فعلی نقاط اتصال سیستم فایل‌ها را مشاهده کرد.


نحوه استفاده از دستور mount

برای مشاهده وضعیت نقاط اتصال، کافی است دستور mount را بدون هیچ پارامتری در ترمینال وارد کنید:

mount

این دستور لیستی از تمامی نقاط اتصال سیستم فایل‌های متصل به سیستم شما را نمایش می‌دهد. به‌طور پیش‌فرض، این دستور تمام سیستم فایل‌هایی که در حال حاضر به دایرکتوری‌های مختلف متصل هستند، همراه با اطلاعاتی از قبیل نوع سیستم فایل، نقاط اتصال و تنظیمات مربوط به هر سیستم فایل نمایش می‌دهد.


نمونه خروجی دستور mount

پس از اجرای دستور، خروجی مشابه زیر را خواهید دید:

/dev/sda1 on / type ext4 (rw,relatime,data=ordered)
tmpfs on /dev/shm type tmpfs (rw,nosuid,noexec,relatime)
/dev/sdb1 on /data type ext4 (rw,relatime,data=ordered)

در این خروجی:

  • /dev/sda1: نام دستگاه یا پارتیشن سیستم فایل.
  • on /: نقطه‌ای که سیستم فایل به آن متصل شده است (در این مثال /).
  • type ext4: نوع سیستم فایل (در اینجا ext4).
  • (rw, relatime, data=ordered): تنظیمات و ویژگی‌های سیستم فایل مانند rw (دسترس‌پذیر برای خواندن و نوشتن) و relatime (تاریخ‌زمانی که برای دسترسی به فایل‌ها استفاده می‌شود).

استفاده از دستور mount برای بررسی نقاط اتصال خاص

اگر می‌خواهید وضعیت یک نقطه اتصال خاص را بررسی کنید، می‌توانید مسیر دایرکتوری را به دستور mount بدهید. به‌طور مثال:

mount | grep /data

این دستور تنها وضعیت سیستم فایل‌های متصل به دایرکتوری /data را نمایش می‌دهد.


استفاده از دستور mount -l برای مشاهده جزئیات بیشتر

با استفاده از گزینه -l می‌توانید اطلاعات دقیق‌تری را درباره نقاط اتصال مشاهده کنید. این گزینه لیست نقاط اتصال را به همراه نام سیستم فایل‌ها و UUIDهای مرتبط با آن‌ها نمایش می‌دهد:

mount -l

خروجی مشابه زیر خواهد بود:

/dev/sda1 on / type ext4 (rw,relatime,data=ordered) 
/dev/sdb1 on /data type ext4 (rw,relatime,data=ordered) 
/dev/sdc1 on /media/usb type vfat (rw,nosuid,nodev,noexec,relatime)

جمع بندی

دستور mount ابزار مفیدی برای بررسی وضعیت نقاط اتصال سیستم فایل‌ها در لینوکس است. با استفاده از این دستور می‌توانید سیستم فایل‌ها و نقاط اتصال مختلف را مشاهده کرده و از اطلاعات مفیدی مانند نوع سیستم فایل و تنظیمات آن آگاه شوید. این دستور برای مدیریت و نظارت بر دستگاه‌ها و پارتیشن‌های متصل به سیستم بسیار کارآمد است.

 [/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”نمایش وضعیت نقاط اتصال با ابزار lsblk” subtitle=”توضیحات کامل”]ابزار lsblk در لینوکس یکی از ابزارهای مفید برای نمایش اطلاعات درباره دستگاه‌ها و پارتیشن‌های ذخیره‌سازی است. این ابزار به‌ویژه برای مشاهده وضعیت نقاط اتصال سیستم فایل‌ها بسیار کاربردی است. با استفاده از lsblk، می‌توان اطلاعاتی نظیر نقاط اتصال، اندازه پارتیشن‌ها، نوع سیستم فایل و وضعیت دستگاه‌ها را به‌صورت ساختاریافته مشاهده کرد.


نحوه استفاده از دستور lsblk

برای نمایش وضعیت دستگاه‌ها و پارتیشن‌ها، به‌ویژه نقاط اتصال، دستور lsblk را در ترمینال وارد کنید:

lsblk

این دستور فهرستی از دستگاه‌ها و پارتیشن‌های سیستم شما را به‌همراه نقاط اتصال آن‌ها (اگر متصل باشند) نمایش می‌دهد.


نمونه خروجی دستور lsblk

خروجی دستور lsblk مشابه زیر خواهد بود:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   100G  0 disk 
├─sda1   8:1    0    20G  0 part /
├─sda2   8:2    0    80G  0 part /data
sdb      8:16   0    50G  0 disk 
└─sdb1   8:17   0    50G  0 part /mnt

در این خروجی:

  • NAME: نام دستگاه یا پارتیشن (مثلاً sda, sda1, sdb1).
  • MAJ:MIN: شماره‌های اصلی و فرعی دستگاه.
  • RM: نشان‌دهنده این که آیا دستگاه قابل جدا شدن است (1 برای قابل جدا شدن و 0 برای غیرقابل جدا شدن).
  • SIZE: اندازه کل پارتیشن یا دستگاه.
  • RO: آیا دستگاه فقط خواندنی است (1 برای خواندنی و 0 برای قابل نوشتن).
  • TYPE: نوع دستگاه یا پارتیشن (مثلاً disk یا part).
  • MOUNTPOINT: نقطه‌ای که سیستم فایل در آن متصل است (مثلاً /, /data, /mnt).

توضیحات مهم در خروجی lsblk

  • دستگاه‌ها: در مثال بالا، sda و sdb دستگاه‌های دیسک هستند که حاوی پارتیشن‌های مختلف هستند.
  • پارتیشن‌ها: پارتیشن‌ها با استفاده از نام‌هایی مانند sda1, sda2, sdb1 نشان داده می‌شوند.
  • نقاط اتصال: ستون MOUNTPOINT نشان‌دهنده نقطه‌ای است که سیستم فایل آن پارتیشن به آن متصل است. اگر یک پارتیشن متصل نباشد، این ستون خالی خواهد بود.
    • در این مثال، / نقطه اتصال برای پارتیشن sda1 است، /data برای sda2 و /mnt برای sdb1 است.

استفاده از گزینه‌ها برای مشاهده جزئیات بیشتر

برای نمایش اطلاعات دقیق‌تر یا برای فیلتر کردن اطلاعات خاص، می‌توانید از گزینه‌های مختلفی در دستور lsblk استفاده کنید:

1. نمایش نوع سیستم فایل

اگر می‌خواهید نوع سیستم فایل هر پارتیشن را نیز مشاهده کنید، از گزینه -f استفاده کنید:

lsblk -f

خروجی مشابه زیر خواهد بود:

NAME   FSTYPE LABEL  MOUNTPOINT
sda                        
├─sda1 ext4   root   /
├─sda2 ext4   data   /data
sdb                        
└─sdb1 ext4   usb    /mnt

در این خروجی، ستون FSTYPE نوع سیستم فایل هر پارتیشن را نمایش می‌دهد (مثلاً ext4).

2. نمایش اطلاعات با جزئیات بیشتر

برای نمایش اطلاعات بیشتر درباره دستگاه‌ها، از گزینه -o استفاده کنید و مشخص کنید که کدام ستون‌ها را نمایش دهید. به‌طور مثال:

lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE

این دستور تنها ستون‌های مربوط به نام، اندازه، نوع، نقطه اتصال و نوع سیستم فایل را نمایش می‌دهد.


جمع بندی

ابزار lsblk یک ابزار قدرتمند و ساده برای نمایش اطلاعات در مورد دستگاه‌ها و پارتیشن‌های ذخیره‌سازی سیستم لینوکس است. با استفاده از این دستور، می‌توانید وضعیت نقاط اتصال سیستم فایل‌ها، نوع سیستم فایل و دیگر اطلاعات مرتبط با پارتیشن‌ها را به‌طور ساختاریافته مشاهده کنید. این ابزار برای مدیریت و نظارت بر فضای ذخیره‌سازی و نقاط اتصال سیستم مفید و کاربردی است.

 [/cdb_course_lesson][cdb_course_lesson title=”فصل 4. شناسایی مشکلات سیستم فایل”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”خطای پر شدن دیسک: نحوه شناسایی فایل‌ها یا دایرکتوری‌هایی که بیشترین فضا را اشغال می‌کنند” subtitle=”توضیحات کامل”]وقتی دیسک سیستم پر می‌شود، باید سریعاً شناسایی کنید که کدام فایل‌ها یا دایرکتوری‌ها بیشترین فضای ذخیره‌سازی را مصرف کرده‌اند. در لینوکس ابزارهای مختلفی وجود دارند که می‌توانند برای شناسایی فایل‌ها و دایرکتوری‌های حجیم استفاده شوند. در این راهنما نحوه شناسایی این فایل‌ها با استفاده از ابزارهای مختلف را توضیح می‌دهیم.


استفاده از دستور du

ابزار du (Disk Usage) یکی از ابزارهای قدرتمند برای بررسی میزان استفاده از فضای دیسک است. با استفاده از دستور du می‌توان فایل‌ها و دایرکتوری‌هایی را که بیشترین فضا را اشغال کرده‌اند شناسایی کرد.

دستور پایه:

برای نمایش میزان استفاده از فضای دیسک در دایرکتوری‌ها، از دستور زیر استفاده کنید:

du -sh /* 2>/dev/null

در این دستور:

  • -s (Summarize): فقط فضای استفاده‌شده توسط دایرکتوری‌های اصلی را نمایش می‌دهد.
  • -h (Human-readable): نمایش اندازه به‌صورت خوانا (برای مثال: KB, MB, GB).
  • /*: نشان‌دهنده دایرکتوری‌های اصلی در ریشه سیستم است.
  • 2>/dev/null: خطاها را نادیده می‌گیرد (برای جلوگیری از نمایش خطاها در صورت نداشتن دسترسی به دایرکتوری‌ها).
نمونه خروجی:
2.3G    /home
1.5G    /var
400M    /usr
5.6G    /data

این خروجی نشان می‌دهد که دایرکتوری /data 5.6 گیگابایت فضا را اشغال کرده است.

بررسی فضای اشغال‌شده در یک دایرکتوری خاص:

برای بررسی فضای اشغال‌شده در یک دایرکتوری خاص (مثلاً /home)، از دستور زیر استفاده کنید:

du -sh /home/* 2>/dev/null

استفاده از دستور find برای شناسایی فایل‌های حجیم

دستور find به شما این امکان را می‌دهد که فایل‌هایی با اندازه مشخص را جستجو کنید. برای شناسایی فایل‌هایی که بیشترین فضای دیسک را اشغال می‌کنند، از دستور زیر استفاده کنید:

find / -type f -exec du -h {} + | sort -rh | head -n 10

در این دستور:

  • find / -type f: به‌دنبال تمام فایل‌ها در سیستم می‌گردد.
  • du -h {}: فضای اشغال‌شده هر فایل را نمایش می‌دهد.
  • sort -rh: خروجی را بر اساس اندازه فایل‌ها به ترتیب معکوس (از بزرگ‌ترین به کوچک‌ترین) مرتب می‌کند.
  • head -n 10: فقط 10 فایل بزرگ‌ترین را نمایش می‌دهد.
نمونه خروجی:
1.2G    /home/user/largefile.iso
800M    /var/log/syslog
400M    /usr/local/bin/someapp

استفاده از دستور ncdu (NCurses Disk Usage)

ابزار ncdu یک ابزار مبتنی بر رابط گرافیکی متنی است که به شما امکان می‌دهد فضای دیسک مصرفی را به‌صورت درختی و با قابلیت پیمایش مشاهده کنید. برای نصب و استفاده از این ابزار، دستورات زیر را وارد کنید:

نصب ncdu:

در اوبونتو یا دبیان:

sudo apt-get install ncdu

در فدورا یا ردهت:

sudo dnf install ncdu
اجرای دستور ncdu:

برای شروع بررسی فضای دیسک، دستور زیر را وارد کنید:

ncdu /

این دستور فضای دیسک را از ریشه سیستم اسکن کرده و نتایج را به‌صورت گرافیکی در ترمینال نمایش می‌دهد. شما می‌توانید دایرکتوری‌ها را مرور کرده و بزرگ‌ترین فایل‌ها و دایرکتوری‌ها را شناسایی کنید.

نمونه خروجی ncdu:
    10.1 GiB [##########] /home
     8.3 GiB [#######   ] /data
     3.0 GiB [###       ] /usr
    1.1 GiB [##        ] /var

استفاده از دستور ls

اگر به دنبال شناسایی بزرگ‌ترین فایل‌ها در یک دایرکتوری خاص هستید، می‌توانید از دستور ls با گزینه‌های مناسب استفاده کنید:

ls -lhS /path/to/directory | head -n 10

در این دستور:

  • -l: نمایش جزئیات فایل‌ها به‌صورت لیست.
  • -h: نمایش اندازه‌ها به‌صورت خوانا (مثلاً KB, MB, GB).
  • -S: مرتب‌سازی بر اساس اندازه فایل‌ها.
  • head -n 10: نمایش 10 فایل بزرگ‌ترین.
نمونه خروجی:
-rw-r--r-- 1 user user 1.2G Mar  1 10:00 largefile.iso
-rw-r--r-- 1 user user 800M Mar  2 12:00 syslog
-rw-r--r-- 1 user user 400M Mar  3 14:00 backup.tar

جمع بندی

در این راهنما با روش‌های مختلف شناسایی فایل‌ها و دایرکتوری‌هایی که بیشترین فضای دیسک را اشغال کرده‌اند آشنا شدید. ابزارهایی مانند du، find، ncdu و ls به شما کمک می‌کنند تا فضای دیسک خود را مدیریت کرده و فایل‌های حجیم را شناسایی کنید. این روش‌ها به‌ویژه زمانی که با مشکل پر شدن دیسک مواجه هستید، مفید و مؤثر خواهند بود.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از دستور du –max-depth=1 / | sort -hr” subtitle=”توضیحات کامل”]دستور du یکی از ابزارهای بسیار مفید برای بررسی میزان فضای مصرفی در دایرکتوری‌ها است. در این دستور می‌توان با استفاده از گزینه‌های مختلف، اطلاعات دقیق‌تری در مورد فضای اشغال‌شده دریافت کرد. ترکیب این دستور با دستور sort باعث می‌شود که بتوانید دایرکتوری‌ها و فایل‌هایی که بیشترین فضا را اشغال می‌کنند، شناسایی کنید.


توضیح دستور:

du --max-depth=1 / | sort -hr
  • du: این دستور میزان فضای مصرفی در دایرکتوری‌ها و فایل‌ها را نشان می‌دهد.
  • --max-depth=1: این گزینه به du می‌گوید که فقط عمق اول دایرکتوری‌ها را بررسی کند (یعنی فقط دایرکتوری‌های اصلی و فضای اشغال‌شده در آن‌ها را نمایش دهد، بدون بررسی محتویات داخلی دایرکتوری‌ها).
  • /: این نشان‌دهنده دایرکتوری ریشه است که در اینجا به‌عنوان نقطه شروع برای بررسی استفاده از فضای دیسک قرار می‌گیرد.
  • |: این اپراتور به شما امکان می‌دهد خروجی دستور اول را به دستور دوم ارسال کنید.
  • sort -hr: این دستور خروجی را مرتب‌سازی می‌کند.
    • -h: نمایش اندازه‌ها به‌صورت خوانا (مانند KB، MB، GB).
    • -r: مرتب‌سازی به‌صورت معکوس (از بزرگ‌ترین به کوچک‌ترین).

نحوه کار دستور

در این دستور:

  1. du --max-depth=1 / فضای اشغال‌شده در دایرکتوری‌های اصلی را (مانند /home, /var, /usr و غیره) بررسی می‌کند.
  2. سپس این خروجی به دستور sort -hr ارسال می‌شود تا خروجی به‌صورت معکوس مرتب‌سازی شود. به این ترتیب، ابتدا دایرکتوری‌هایی که بیشترین فضا را اشغال کرده‌اند نمایش داده خواهند شد.

نمونه خروجی

اگر دستور را اجرا کنید، خروجی مشابه زیر را مشاهده خواهید کرد:

5.6G    /data
4.1G    /home
1.2G    /var
800M    /usr
400M    /tmp

در این خروجی:

  • دایرکتوری /data بیشترین فضای دیسک را با 5.6 گیگابایت اشغال کرده است.
  • سپس دایرکتوری /home با 4.1 گیگابایت قرار دارد.
  • سایر دایرکتوری‌ها به ترتیب فضای کمتری مصرف کرده‌اند.

استفاده از دستور برای دایرکتوری‌های دیگر

اگر می‌خواهید فضای اشغال‌شده در دایرکتوری خاصی (غیر از ریشه) را بررسی کنید، به‌طور مثال در دایرکتوری /home، از دستور زیر استفاده کنید:

du --max-depth=1 /home | sort -hr

این دستور مشابه دستور قبلی عمل می‌کند، اما این‌بار فضای اشغال‌شده فقط در دایرکتوری /home بررسی می‌شود.


جمع بندی

دستور du --max-depth=1 / | sort -hr یک روش سریع و مؤثر برای شناسایی دایرکتوری‌هایی است که بیشترین فضای دیسک را در سیستم لینوکس اشغال کرده‌اند. با استفاده از این دستور، می‌توانید به راحتی دایرکتوری‌های حجیم را پیدا کرده و به مدیریت فضای دیسک سیستم خود بپردازید.

 [/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی فایل‌های موقتی و حذف آن‌ها با ابزارهایی مانند tmpwatch” subtitle=”توضیحات کامل”]در سیستم‌های لینوکس، برخی فایل‌ها به‌صورت موقتی ایجاد می‌شوند و پس از مدتی دیگر به آن‌ها نیازی نیست. این فایل‌ها معمولاً در دایرکتوری‌هایی مانند /tmp یا /var/tmp ذخیره می‌شوند و در صورت عدم مدیریت، می‌توانند فضای زیادی از دیسک را اشغال کنند. برای حل این مشکل، ابزارهایی مانند tmpwatch به شما کمک می‌کنند تا فایل‌های موقتی قدیمی را شناسایی کرده و حذف کنید.


ابزار tmpwatch

tmpwatch یک ابزار لینوکس است که برای پاک‌سازی خودکار فایل‌های موقتی و قدیمی در دایرکتوری‌های مشخص (مانند /tmp یا /var/tmp) استفاده می‌شود. این ابزار بر اساس زمان آخرین دسترسی به فایل‌ها، تصمیم می‌گیرد که کدام فایل‌ها باید حذف شوند.

نصب tmpwatch

اگر ابزار tmpwatch بر روی سیستم شما نصب نیست، می‌توانید آن را با استفاده از دستور زیر نصب کنید:

در اوبونتو یا دبیان:

sudo apt-get install tmpwatch

در فدورا یا ردهت:

sudo dnf install tmpwatch

نحوه استفاده از tmpwatch

برای حذف فایل‌های موقتی قدیمی از یک دایرکتوری خاص، از دستور tmpwatch به‌صورت زیر استفاده کنید:

sudo tmpwatch --mtime --all 24 /tmp

در این دستور:

  • --mtime: به tmpwatch می‌گوید که بر اساس زمان آخرین تغییر فایل‌ها تصمیم بگیرد.
  • --all: تمامی فایل‌های موقتی را بررسی می‌کند.
  • 24: به‌معنای 24 ساعت است. این مقدار به این معنی است که تمام فایل‌هایی که بیشتر از 24 ساعت از زمان تغییر یا دسترسی آن‌ها گذشته، حذف خواهند شد.
  • /tmp: دایرکتوری‌ای که فایل‌های موقتی در آن قرار دارند.
حذف فایل‌های قدیمی‌تر از یک مدت زمان خاص:

برای حذف فایل‌های موقتی که بیشتر از 7 روز از آخرین دسترسی آن‌ها گذشته است، دستور زیر را وارد کنید:

sudo tmpwatch --atime --all 168 /tmp

در این دستور:

  • --atime: به tmpwatch می‌گوید که بر اساس زمان آخرین دسترسی به فایل‌ها اقدام کند.
  • 168: به معنی 168 ساعت (که معادل 7 روز است).

بررسی وضعیت فایل‌های موقتی بدون حذف آن‌ها

اگر می‌خواهید فقط فایل‌های موقتی که حذف خواهند شد را مشاهده کنید بدون این که آن‌ها را حذف کنید، می‌توانید از گزینه -v (نمایش جزئیات) استفاده کنید:

sudo tmpwatch -v --atime --all 168 /tmp

این دستور فایل‌های قدیمی‌تر از 7 روز را شبیه‌سازی می‌کند و فایل‌هایی که حذف خواهند شد را نمایش می‌دهد بدون این که عملیاتی انجام شود.


استفاده از دستور find برای شناسایی فایل‌های قدیمی

ابزار find نیز برای جستجو و حذف فایل‌های قدیمی و موقتی بسیار مفید است. می‌توانید از آن برای شناسایی فایل‌هایی که بیش از مدت زمان خاصی تغییر نکرده‌اند، استفاده کنید. به‌عنوان مثال، برای شناسایی فایل‌هایی که بیشتر از 7 روز از آخرین تغییر آن‌ها گذشته است، از دستور زیر استفاده کنید:

find /tmp -type f -atime +7

در این دستور:

  • /tmp: دایرکتوری که می‌خواهید فایل‌ها را در آن جستجو کنید.
  • -type f: فقط فایل‌ها را جستجو می‌کند (نه دایرکتوری‌ها).
  • -atime +7: فقط فایل‌هایی که بیش از 7 روز از آخرین دسترسی به آن‌ها گذشته باشد.

اگر می‌خواهید این فایل‌ها را حذف کنید، دستور زیر را وارد کنید:

find /tmp -type f -atime +7 -exec rm -f {} \;

این دستور فایل‌هایی که بیش از 7 روز از آخرین دسترسی آن‌ها گذشته است را پیدا کرده و آن‌ها را حذف می‌کند.


جمع بندی

ابزار tmpwatch و دستور find از روش‌های قدرتمند برای مدیریت فایل‌های موقتی در سیستم‌های لینوکس هستند. با استفاده از این ابزارها می‌توانید فضای اشغال‌شده توسط فایل‌های موقتی قدیمی را پاک‌سازی کرده و از پر شدن بی‌رویه دیسک جلوگیری کنید. tmpwatch به‌طور خودکار فایل‌های قدیمی را بر اساس زمان آخرین دسترسی یا تغییر حذف می‌کند، در حالی که دستور find به شما امکان می‌دهد فایل‌ها را با دقت بیشتری بر اساس معیارهای خاص پیدا کنید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 5. تحلیل سیستم فایل با ابزارهای پیشرفته”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”ncdu: رابط کاربری تعاملی برای نمایش اندازه فایل‌ها” subtitle=”توضیحات کامل”]ncdu (NCurses Disk Usage) ابزاری است که به‌طور خاص برای تجزیه و تحلیل فضای دیسک در سیستم‌های لینوکس طراحی شده است. این ابزار به شما این امکان را می‌دهد که فضای اشغال‌شده توسط فایل‌ها و دایرکتوری‌ها را به‌صورت تعاملی و گرافیکی مشاهده کنید. یکی از مزایای ncdu نسبت به ابزارهایی مانند du، رابط کاربری ساده و قابل پیمایش آن است که امکان بررسی دقیق‌تر فضای دیسک را به شما می‌دهد.


نصب ncdu

اگر ncdu در سیستم شما نصب نیست، می‌توانید آن را با استفاده از دستور زیر نصب کنید.

در اوبونتو یا دبیان:

sudo apt-get install ncdu

در فدورا یا ردهت:

sudo dnf install ncdu

نحوه استفاده از ncdu

پس از نصب، می‌توانید از دستور ncdu برای بررسی فضای اشغال‌شده توسط دایرکتوری‌ها و فایل‌ها استفاده کنید. دستور پایه به‌صورت زیر است:

ncdu /path/to/directory

در این دستور:

  • /path/to/directory: مسیر دایرکتوری مورد نظر برای بررسی است. اگر می‌خواهید فضای دیسک از ریشه سیستم بررسی شود، به‌طور مثال از / استفاده کنید.
نمونه دستور:

برای بررسی فضای اشغال‌شده در دایرکتوری /home، دستور زیر را وارد کنید:

ncdu /home

ویژگی‌های اصلی ncdu

  1. نمایش فضای مصرفی به‌صورت درختی: ncdu به‌صورت درختی فضای اشغال‌شده توسط فایل‌ها و دایرکتوری‌ها را نمایش می‌دهد و به شما این امکان را می‌دهد که به‌راحتی دایرکتوری‌هایی که بیشترین فضا را اشغال کرده‌اند شناسایی کنید.
  2. رابط تعاملی: پس از اجرای دستور، رابط کاربری تعاملی نمایش داده می‌شود که به شما اجازه می‌دهد با استفاده از کلیدهای جهت‌دار (Arrow keys) به دایرکتوری‌ها حرکت کرده و فضای مصرفی را مشاهده کنید.

    کلیدهای اصلی در این رابط به شرح زیر هستند:

    • Up/Down: پیمایش به بالا و پایین در لیست.
    • Right: ورود به دایرکتوری انتخاب‌شده.
    • Left: برگشت به دایرکتوری قبلی.
    • q: خروج از برنامه.
  3. فیلتر کردن نتایج: اگر شما می‌خواهید فقط فایل‌ها یا دایرکتوری‌های خاصی را مشاهده کنید، می‌توانید از گزینه‌های فیلتر استفاده کنید. برای مثال، می‌توانید فیلتر کنید که فقط دایرکتوری‌هایی که بیش از مقدار مشخصی فضا مصرف کرده‌اند نمایش داده شوند.
  4. پاک‌سازی فایل‌ها: با استفاده از دستور ncdu، شما می‌توانید فایل‌ها را به‌صورت مستقیم از داخل رابط کاربری حذف کنید. کافی است فایل یا دایرکتوری مورد نظر را انتخاب کرده و از کلید d برای حذف آن استفاده کنید.

مثال‌های کاربردی

  1. بررسی فضای دیسک در دایرکتوری ریشه:

    برای مشاهده فضای مصرفی در ریشه سیستم، از دستور زیر استفاده کنید:

    ncdu /
    

    پس از وارد کردن این دستور، ncdu تمام دایرکتوری‌های ریشه را بررسی کرده و فضای اشغال‌شده در هر کدام را نمایش می‌دهد.

  2. بررسی فضای دیسک در دایرکتوری خاص (مثلاً /var):

    برای بررسی فضای مصرفی در دایرکتوری /var، دستور زیر را وارد کنید:

    ncdu /var
    

    با این دستور، فضای اشغال‌شده در دایرکتوری /var و زیرشاخه‌های آن به‌صورت گرافیکی نمایش داده می‌شود.

  3. حذف فایل‌ها از داخل ncdu:

    زمانی که شما فایل‌ها یا دایرکتوری‌هایی را شناسایی کردید که به آن‌ها نیازی ندارید، می‌توانید به راحتی آن‌ها را از طریق رابط تعاملی ncdu حذف کنید.

    کافی است فایل یا دایرکتوری مورد نظر را انتخاب کرده و کلید d را فشار دهید تا آن فایل یا دایرکتوری حذف شود.


جمع بندی

ncdu یک ابزار بسیار کارآمد و ساده برای بررسی فضای اشغال‌شده توسط فایل‌ها و دایرکتوری‌ها در لینوکس است. این ابزار به‌ویژه برای مدیران سیستم و کاربران عادی که می‌خواهند به‌سرعت دایرکتوری‌های حجیم را شناسایی و مدیریت کنند، بسیار مفید است. رابط تعاملی و نمایش گرافیکی این ابزار به شما امکان می‌دهد که به‌راحتی فضای دیسک مصرفی را مشاهده کرده و فایل‌های غیرضروری را حذف کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”iostat: نظارت بر عملکرد دیسک و سیستم فایل” subtitle=”توضیحات کامل”]iostat یکی از ابزارهای مفید در لینوکس برای نظارت بر عملکرد سیستم و دیسک است. این ابزار می‌تواند اطلاعات دقیقی در مورد استفاده از پردازنده (CPU) و عملکرد دیسک (از جمله میزان استفاده، سرعت انتقال داده‌ها و تعداد عملیات ورودی/خروجی) ارائه دهد. iostat معمولاً برای تحلیل عملکرد دیسک و شناسایی مشکلات مرتبط با دیسک و سیستم فایل مورد استفاده قرار می‌گیرد.


نصب iostat

اگر iostat روی سیستم شما نصب نیست، می‌توانید آن را از بسته sysstat نصب کنید.

در اوبونتو یا دبیان:

sudo apt-get install sysstat

در فدورا یا ردهت:

sudo dnf install sysstat

نحوه استفاده از iostat

دستور پایه برای اجرای iostat به شکل زیر است:

iostat

این دستور اطلاعات اولیه در مورد عملکرد پردازنده (CPU) و دیسک‌ها را نمایش می‌دهد.


جزئیات خروجی دستور iostat

پس از اجرای دستور iostat، شما معمولاً با اطلاعات زیر روبرو خواهید شد:

Linux 5.4.0-42-generic (hostname) 	02/04/2025 	_x86_64_	(4 CPU)

Device            tps    kB_read/s   kB_wrtn/s   kB_read   kB_wrtn
sda               20.00     1000.00     500.00    10000    5000
sdb               10.00     500.00      200.00     5000     2000

در این خروجی:

  • Device: نام دیسک یا دستگاه.
  • tps: تعداد عملیات ورودی/خروجی (I/O operations per second) که بر روی دستگاه انجام می‌شود.
  • kB_read/s: میزان داده‌هایی که به‌طور میانگین در هر ثانیه از دیسک خوانده می‌شود.
  • kB_wrtn/s: میزان داده‌هایی که به‌طور میانگین در هر ثانیه به دیسک نوشته می‌شود.
  • kB_read: مجموع داده‌هایی که تا کنون از دیسک خوانده شده است.
  • kB_wrtn: مجموع داده‌هایی که تا کنون به دیسک نوشته شده است.

استفاده از iostat برای نمایش اطلاعات بیشتر

برای مشاهده اطلاعات بیشتر و دقیق‌تر از عملکرد دیسک، می‌توانید از گزینه‌های مختلف iostat استفاده کنید.

1. نمایش اطلاعات برای دیسک‌های خاص:

اگر شما می‌خواهید اطلاعات عملکرد تنها یک یا چند دیسک خاص را مشاهده کنید، کافی است نام دستگاه را به دستور اضافه کنید. برای مثال:

iostat sda

این دستور فقط اطلاعات مربوط به دیسک sda را نمایش می‌دهد.

2. نمایش اطلاعات برای دیسک‌ها به‌طور دوره‌ای:

برای مشاهده آمار دیسک در فواصل زمانی مشخص، می‌توانید از پارامتر interval استفاده کنید. به‌عنوان مثال، برای نمایش آمار هر 5 ثانیه:

iostat 5

این دستور به‌طور پیوسته آمار را هر 5 ثانیه به‌روزرسانی می‌کند.

3. نمایش آمار بیشتر (شامل CPU):

برای نمایش اطلاعات دقیق‌تر از عملکرد CPU و دیسک، می‌توانید از گزینه -x استفاده کنید:

iostat -x

این دستور آمار اضافی از جمله avgqu-sz (میانگین اندازه صف انتظار برای I/O) و await (زمان انتظار برای عملیات I/O) را نمایش می‌دهد.

4. نمایش آمار برای تعداد خاصی از دفعات:

برای نمایش آمار فقط برای تعداد خاصی از دفعات (به‌طور مثال، 3 بار)، می‌توانید از دستور زیر استفاده کنید:

iostat -x 3 5

این دستور به‌مدت 5 ثانیه هر 3 بار آمار دیسک را نمایش می‌دهد.


تفسیر پارامترهای اضافی در خروجی iostat -x

هنگامی که از گزینه -x استفاده می‌کنید، اطلاعات بیشتری نمایش داده می‌شود. برخی از مهم‌ترین فیلدها عبارتند از:

  • r/s: تعداد عملیات خواندن در هر ثانیه.
  • w/s: تعداد عملیات نوشتن در هر ثانیه.
  • rsec/s: تعداد بخش‌های (sectors) خوانده‌شده در هر ثانیه.
  • wsec/s: تعداد بخش‌های نوشته‌شده در هر ثانیه.
  • avgrq-sz: اندازه میانگین درخواست‌های ورودی/خروجی (در بخش).
  • avgqu-sz: اندازه میانگین صف انتظار برای عملیات I/O.
  • await: میانگین زمان انتظار برای هر عملیات I/O.
  • svctm: زمان سرویس‌دهی (service time) به هر عملیات I/O.
  • %util: درصد زمانی که دستگاه در حال انجام عملیات I/O است.

جمع بندی

ابزار iostat یکی از ابزارهای بسیار مفید برای نظارت بر عملکرد دیسک و پردازنده در لینوکس است. با استفاده از این ابزار می‌توانید عملکرد دستگاه‌های دیسک را در زمان واقعی بررسی کرده و مشکلات مربوط به I/O و سرعت دیسک را شناسایی کنید. استفاده از گزینه‌های مختلف iostat به شما این امکان را می‌دهد که دقیق‌تر به مشکلات مربوط به دیسک و سیستم فایل پرداخته و عملکرد سیستم خود را بهبود دهید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”دستور پایه iostat -xd” subtitle=”توضیحات کامل”]دستور iostat -xd یکی از دستورات مفید برای نظارت بر عملکرد سیستم و دیسک است که علاوه بر اطلاعات کلی، آمار دقیق‌تری از دیسک‌ها ارائه می‌دهد. این دستور با ترکیب گزینه‌های -x و -d به شما اطلاعات جامع‌تری در مورد عملکرد دیسک‌ها و سیستم‌های ذخیره‌سازی می‌دهد.


جزئیات دستور iostat -xd

  • -x: این گزینه باعث می‌شود که iostat آمار دقیق‌تری از دیسک‌ها نمایش دهد، از جمله زمان سرویس‌دهی، اندازه صف انتظار و غیره.
  • -d: این گزینه به iostat دستور می‌دهد که فقط اطلاعات مربوط به دستگاه‌های دیسک را نمایش دهد و اطلاعات CPU را نادیده بگیرد.

نمونه خروجی دستور iostat -xd

پس از اجرای دستور iostat -xd، شما اطلاعات دقیق‌تری از عملکرد دیسک‌ها به‌صورت جدول خواهید دید. در زیر نمونه‌ای از خروجی این دستور آورده شده است:

Device            r/s    w/s    rsec/s   wsec/s   avgrq-sz   avgqu-sz   await   svctm   %util
sda               20.00  10.00   1000.00  500.00   150.00     0.02       5.00    2.00    50.00
sdb               5.00   3.00    200.00   100.00   100.00     0.01       6.00    1.50    20.00

در این خروجی:

  • r/s: تعداد عملیات خواندن در هر ثانیه.
  • w/s: تعداد عملیات نوشتن در هر ثانیه.
  • rsec/s: تعداد بخش‌های خوانده‌شده در هر ثانیه.
  • wsec/s: تعداد بخش‌های نوشته‌شده در هر ثانیه.
  • avgrq-sz: اندازه میانگین درخواست‌های ورودی/خروجی (در بخش).
  • avgqu-sz: اندازه میانگین صف انتظار برای عملیات I/O.
  • await: میانگین زمان انتظار برای هر عملیات I/O.
  • svctm: زمان سرویس‌دهی (service time) به هر عملیات I/O.
  • %util: درصد زمانی که دستگاه در حال انجام عملیات I/O است.

توضیحات بیشتر در مورد فیلدها

  • r/s و w/s: این مقادیر نشان‌دهنده تعداد عملیات خواندن و نوشتن در ثانیه برای هر دیسک است. این ارقام می‌توانند نشان‌دهنده شدت فعالیت ورودی/خروجی دیسک‌ها باشند.
  • rsec/s و wsec/s: این مقادیر بیانگر تعداد بخش‌های خوانده‌شده و نوشته‌شده در هر ثانیه هستند که می‌توانند به تحلیل میزان مصرف واقعی داده‌ها کمک کنند.
  • avgrq-sz: این فیلد اندازه میانگین درخواست‌های ورودی/خروجی در هر بخش را نشان می‌دهد. افزایش این عدد معمولاً نشان‌دهنده بزرگتر بودن اندازه داده‌های منتقل‌شده است.
  • avgqu-sz: اندازه میانگین صف انتظار I/O نشان‌دهنده مدت زمانی است که داده‌ها منتظر انجام عملیات I/O هستند. اگر این مقدار بالاتر از حد معمول باشد، ممکن است نشان‌دهنده مشکلاتی مانند ترافیک سنگین I/O یا عملکرد ضعیف دیسک باشد.
  • await: این زمان میانگین نشان‌دهنده مدت زمانی است که عملیات I/O منتظر تکمیل بوده است. زمان بالا در این بخش می‌تواند نشان‌دهنده تأخیرهای سیستم یا دستگاه‌های I/O کند باشد.
  • svctm: زمان سرویس‌دهی عملیات I/O. این مقدار به شما کمک می‌کند تا میزان کارایی دیسک در پردازش درخواست‌ها را ارزیابی کنید.
  • %util: این فیلد درصد زمانی است که دستگاه در حال انجام عملیات I/O بوده است. مقدار بالا (نزدیک به 100%) می‌تواند نشان‌دهنده استفاده زیاد از دیسک و احتمالاً نیاز به بهینه‌سازی یا ارتقاء دیسک باشد.

جمع بندی

دستور iostat -xd یکی از ابزارهای مفید برای نظارت دقیق‌تر بر عملکرد دیسک در سیستم‌های لینوکس است. این دستور به‌ویژه برای مدیران سیستم و کاربران پیشرفته‌ای که نیاز به بررسی دقیق‌تر عملکرد دیسک دارند، بسیار مفید است. اطلاعاتی مانند tps، await، svctm و %util می‌توانند به تحلیل و رفع مشکلات عملکردی دیسک کمک کنند.

 [/cdb_course_lesson][cdb_course_lesson title=”فصل 6. بررسی فایل‌های باز و قفل‌شده”]



[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از دستور lsof برای نمایش فایل‌های باز” subtitle=”توضیحات کامل”]دستور lsof (List Open Files) در لینوکس ابزاری است که برای نمایش فهرست فایل‌های باز و استفاده شده توسط فرآیندها و برنامه‌های مختلف سیستم عامل به‌کار می‌رود. این دستور می‌تواند برای شناسایی فایل‌هایی که در حال حاضر در سیستم باز هستند، نمایش فایل‌های مربوط به فرآیندهای خاص، یا حتی برای عیب‌یابی مشکلات دسترسی به فایل‌ها یا دیسک‌ها مورد استفاده قرار گیرد.


نصب lsof

در اکثر توزیع‌های لینوکس، ابزار lsof به‌طور پیش‌فرض نصب است. اما اگر این ابزار را نداشتید، می‌توانید آن را با استفاده از دستورات زیر نصب کنید:

در اوبونتو یا دبیان:

sudo apt-get install lsof

در فدورا یا ردهت:

sudo dnf install lsof

دستور پایه lsof

برای مشاهده لیست تمام فایل‌های باز در سیستم، می‌توانید دستور ساده زیر را اجرا کنید:

lsof

این دستور فهرستی از تمام فایل‌های باز سیستم را نمایش می‌دهد که شامل اطلاعاتی مانند شناسه فرآیند (PID)، نام فرآیند، نوع فایل، وضعیت و غیره است.


جزئیات خروجی دستور lsof

نمونه‌ای از خروجی lsof به‌صورت زیر است:

COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash      1234 user   cwd   DIR  8,1    4096    1234 /home/user
bash      1234 user   1u   REG  8,1    1024    2345 /home/user/file.txt

در این خروجی:

  • COMMAND: نام فرمان (فرآیندی که فایل را باز کرده).
  • PID: شناسه فرآیند.
  • USER: کاربری که فرآیند متعلق به آن است.
  • FD: نوع فایل و وضعیت آن (برای مثال، cwd برای دایرکتوری کاری، 1u برای فایل متنی باز شده در حالت نوشتن).
  • TYPE: نوع فایل (مثل REG برای فایل عادی، DIR برای دایرکتوری).
  • DEVICE: دستگاه فیزیکی که فایل روی آن قرار دارد.
  • SIZE/OFF: اندازه فایل یا موقعیت جاری فایل در صورت نوشتن/خواندن.
  • NODE: شناسه گره (inode) فایل.
  • NAME: مسیر کامل فایل.

گزینه‌های مختلف دستور lsof

  • نمایش فایل‌های باز توسط یک فرآیند خاص:

اگر می‌خواهید فایل‌های باز توسط یک فرآیند خاص را ببینید، کافی است PID آن فرآیند را به دستور اضافه کنید:

lsof -p <PID>

به‌عنوان مثال، برای نمایش فایل‌های باز توسط فرآیند با PID 1234:

lsof -p 1234
  • نمایش فایل‌های باز توسط یک کاربر خاص:

برای نمایش فایل‌های باز توسط یک کاربر خاص، از گزینه -u استفاده کنید:

lsof -u username

برای مثال:

lsof -u user

این دستور لیست فایل‌های باز متعلق به کاربر user را نمایش می‌دهد.

  • نمایش فایل‌های باز در یک دایرکتوری خاص:

برای نمایش فایل‌های باز در یک دایرکتوری خاص، می‌توانید مسیر دایرکتوری را به دستور بدهید:

lsof +D /path/to/directory

این دستور لیست تمام فایل‌های باز داخل دایرکتوری مشخص‌شده را نمایش می‌دهد. توجه داشته باشید که این دستور ممکن است زمان‌بر باشد، خصوصاً اگر دایرکتوری دارای تعداد زیادی فایل باشد.

  • نمایش فایل‌های باز توسط یک نوع فایل خاص:

با استفاده از گزینه -t می‌توانید فقط فایل‌های باز از یک نوع خاص (برای مثال فایل‌های متنی) را مشاهده کنید:

lsof -t TYPE

برای مثال برای نمایش فایل‌های باز از نوع “در حال نوشتن” (REG):

lsof -t REG
  • نمایش فایل‌های باز در یک دستگاه خاص:

اگر بخواهید فایل‌های باز روی یک دستگاه خاص را ببینید، از گزینه +D یا -d استفاده کنید.


استفاده‌های پیشرفته lsof

  • شناسایی فایل‌های باز که باعث پر شدن فضای دیسک می‌شوند:

برای شناسایی فرآیندهایی که فایل‌های زیادی را باز کرده‌اند و ممکن است باعث پر شدن فضای دیسک شوند، می‌توانید دستور زیر را اجرا کنید:

lsof | awk '{print $1, $2, $9}' | sort | uniq -c | sort -n

این دستور فایل‌های باز را از تمام فرآیندها جمع‌آوری کرده و آن‌ها را بر اساس تعداد مرتب می‌کند تا فرآیندهایی که بیشترین تعداد فایل را باز کرده‌اند مشخص شوند.

  • آگاهی از باز بودن پورت‌ها (فایل‌های شبکه):

برای شناسایی پورت‌های باز و فایل‌های مربوط به آن‌ها (مانند فایل‌های شبکه)، می‌توانید از دستور زیر استفاده کنید:

lsof -i

این دستور اطلاعات مربوط به فایل‌های باز از نوع شبکه، مانند پورت‌های TCP و UDP، را نمایش می‌دهد.


جمع بندی

دستور lsof ابزاری بسیار قدرتمند برای نظارت و شناسایی فایل‌های باز در سیستم‌های لینوکس است. این ابزار می‌تواند به مدیران سیستم کمک کند تا از نحوه استفاده از فایل‌ها توسط فرآیندها و کاربران مختلف مطلع شوند و در صورت نیاز به مدیریت دسترسی‌ها یا شناسایی مشکلات فضای دیسک یا شبکه، اقدامات لازم را انجام دهند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”مثال: lsof | grep /path/to/directory” subtitle=”توضیحات کامل”]دستور lsof به‌طور پیش‌فرض تمام فایل‌های باز توسط سیستم و فرآیندها را نمایش می‌دهد. اگر بخواهید فقط فایل‌های باز در یک دایرکتوری خاص را مشاهده کنید، می‌توانید از دستور grep برای فیلتر کردن نتایج استفاده کنید.

برای این‌کار از دستور زیر استفاده می‌کنیم:

lsof | grep /path/to/directory

این دستور تمام فایل‌های باز در سیستم را لیست کرده و سپس فقط فایل‌هایی را نمایش می‌دهد که در مسیر مشخص‌شده قرار دارند.


مثال عملی

فرض کنید که می‌خواهید تمام فایل‌های باز در دایرکتوری /var/log را ببینید. دستور زیر را اجرا کنید:

lsof | grep /var/log

این دستور تمام فایل‌های باز در دایرکتوری /var/log را که ممکن است توسط برنامه‌ها یا سیستم در حال استفاده باشند، نمایش می‌دهد. خروجی مشابه زیر خواهد بود:

syslog   1234 root   4w   REG  8,1    2048     4567 /var/log/syslog
apache2  2345 www-data  3r   REG  8,1    1024     7890 /var/log/apache2/access.log
apache2  2345 www-data  4w   REG  8,1    2048     7891 /var/log/apache2/error.log

در اینجا:

  • syslog و apache2 نام فرآیندهایی هستند که فایل‌ها را باز کرده‌اند.
  • 1234 و 2345 شناسه فرآیند (PID) هر فرآیند است.
  • 4w نشان‌دهنده اینکه فایل در حالت نوشتن (w برای write) باز است.
  • REG به معنای یک فایل عادی است.
  • /var/log/syslog و دیگر مسیرها، محل فایل‌هایی هستند که باز شده‌اند.

نکات مهم:

  • استفاده از دستور grep به شما این امکان را می‌دهد که فیلترهای خاصی را برای جستجو اعمال کنید، به‌ویژه زمانی که می‌خواهید فایل‌های باز در یک دایرکتوری خاص یا مربوط به یک برنامه خاص را شناسایی کنید.
  • اگر بخواهید فقط فایل‌هایی با پسوند خاص را جستجو کنید، می‌توانید دستور grep را به‌طور دقیق‌تری تنظیم کنید، مانند:
lsof | grep ".log"

این دستور فقط فایل‌های باز با پسوند .log را نمایش می‌دهد.


جمع بندی

با استفاده از دستور lsof | grep /path/to/directory می‌توانید به‌راحتی فایل‌های باز در یک دایرکتوری خاص را پیدا کنید و از این طریق وضعیت و دسترسی فایل‌ها را برای هر برنامه یا فرآیند بررسی کنید. این ابزار در موارد عیب‌یابی، مدیریت منابع، و تحلیل عملکرد سیستم بسیار مفید است.

 [/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی فایل‌های قفل‌شده و نحوه آزادسازی آن‌ها” subtitle=”توضیحات کامل”]فایل‌های قفل‌شده در سیستم‌های لینوکس ممکن است به دلایل مختلفی مانند دسترسی همزمان چندین فرآیند به یک فایل یا استفاده نادرست از منابع توسط برنامه‌ها ایجاد شوند. در چنین مواردی، ممکن است فرآیندها نتوانند به فایل‌ها دسترسی پیدا کنند یا فایل‌ها در حالت قفل‌شده باقی بمانند. ابزارهایی مانند lsof، fuser و flock می‌توانند به شناسایی و آزادسازی این قفل‌ها کمک کنند.


شناسایی فایل‌های قفل‌شده

برای شناسایی فایل‌های قفل‌شده و فرآیندهایی که فایل‌ها را قفل کرده‌اند، می‌توان از دستور lsof استفاده کرد. این دستور می‌تواند نشان دهد که کدام فرآیندها به فایل‌ها دسترسی دارند و آیا قفل شده‌اند یا خیر.

استفاده از lsof برای شناسایی فایل‌های قفل‌شده

برای شناسایی فایل‌های قفل‌شده، می‌توانید از دستور lsof به همراه فیلترهای خاص استفاده کنید. به‌طور مثال، برای مشاهده فایل‌هایی که توسط فرآیندها قفل شده‌اند، دستور زیر را اجرا کنید:

lsof +L1

این دستور تمامی فایل‌هایی که قفل شده‌اند را نمایش می‌دهد. در واقع، گزینه +L1 به lsof می‌گوید که فقط فایل‌هایی که توسط فرآیندها قفل شده‌اند، نشان داده شوند.


شناسایی فایل‌های قفل‌شده با fuser

ابزار fuser نیز برای شناسایی فرآیندهایی که فایل‌ها یا دایرکتوری‌ها را قفل کرده‌اند مفید است. این ابزار به‌ویژه برای شناسایی فایل‌های قفل‌شده توسط فرآیندهای مختلف مناسب است.

استفاده از fuser برای شناسایی فرآیندهای قفل‌کننده

برای شناسایی فرآیندهایی که فایل خاصی را قفل کرده‌اند، دستور زیر را می‌توان استفاده کرد:

fuser -v /path/to/file

این دستور لیستی از فرآیندهایی که فایل را در حال استفاده دارند، به همراه PID و نوع دسترسی (خواندن/نوشتن) نمایش می‌دهد.


آزادسازی فایل‌های قفل‌شده

پس از شناسایی فایل‌های قفل‌شده، در صورتی که بخواهید قفل‌ها را آزاد کنید، می‌توانید یکی از روش‌های زیر را به کار ببرید.

استفاده از دستور fuser برای آزادسازی قفل‌ها

اگر بخواهید فایل قفل‌شده‌ای را از دسترسی فرآیندها خارج کنید، از دستور fuser به همراه گزینه -k استفاده کنید تا فرآیندهایی که فایل را قفل کرده‌اند، خاتمه یابند. به‌عنوان مثال:

fuser -k /path/to/file

این دستور تمام فرآیندهایی که فایل مشخص‌شده را قفل کرده‌اند، خاتمه می‌دهد و قفل فایل آزاد می‌شود.

استفاده از دستور kill برای خاتمه دادن به فرآیند قفل‌کننده

در صورتی که بخواهید فرآیند خاصی را که فایل قفل شده را تحت کنترل دارد خاتمه دهید، می‌توانید از دستور kill استفاده کنید. ابتدا با استفاده از دستور fuser PID فرآیند قفل‌کننده را پیدا کنید و سپس با دستور kill آن را خاتمه دهید.

برای پیدا کردن PID از دستور زیر استفاده کنید:

fuser /path/to/file

پس از شناسایی PID، می‌توانید فرآیند را با استفاده از دستور kill خاتمه دهید:

kill -9 <PID>

این دستور فرآیند را به‌طور فوری خاتمه می‌دهد و فایل قفل‌شده آزاد می‌شود.


بررسی و آزادسازی قفل‌های فایل‌های دایرکتوری

گاهی ممکن است فایل‌های قفل‌شده درون یک دایرکتوری قرار داشته باشند. در چنین مواردی، می‌توانید از دستور lsof یا fuser برای بررسی قفل‌های موجود در دایرکتوری استفاده کنید.

برای مثال:

lsof +D /path/to/directory

این دستور لیست فایل‌های باز در دایرکتوری خاص را نشان می‌دهد.

در صورتی که بخواهید فرآیندهای مرتبط با یک دایرکتوری خاص را خاتمه دهید، از دستور fuser -k به‌صورت مشابه استفاده کنید:

fuser -k /path/to/directory

این دستور تمامی فرآیندهای مرتبط با دایرکتوری را خاتمه می‌دهد و دسترسی به آن دایرکتوری آزاد می‌شود.


استفاده از flock برای مدیریت قفل‌ها

ابزار flock به شما کمک می‌کند که در سطح اسکریپت، قفل‌های فایل را به‌طور کنترل‌شده ایجاد و آزاد کنید. با استفاده از flock، می‌توانید فایل‌های خاصی را قفل کرده و دسترسی به آن‌ها را کنترل کنید.

مثال استفاده از flock:
flock -x /path/to/file

این دستور یک قفل تکتولوژی (exclusive lock) روی فایل مشخص‌شده ایجاد می‌کند.


جمع بندی

بررسی فایل‌های قفل‌شده و آزادسازی آن‌ها از طریق ابزارهایی مانند lsof، fuser و flock در لینوکس امکان‌پذیر است. در مواقعی که سیستم با فایل‌های قفل‌شده مواجه می‌شود، این ابزارها می‌توانند برای شناسایی فرآیندهای قفل‌کننده و آزادسازی فایل‌های قفل‌شده استفاده شوند. استفاده از این دستورات می‌تواند به مدیران سیستم کمک کند تا منابع سیستم را به‌طور مؤثر مدیریت کنند و مشکلات قفل‌های فایل را رفع نمایند.[/cdb_course_lesson][cdb_course_lesson title=”فصل 7. بررسی خطاهای سیستم فایل”]
[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”نمایش پیام‌های خطای مرتبط با سیستم فایل در dmesg” subtitle=”توضیحات کامل”]دستور dmesg در لینوکس برای نمایش پیام‌های کرنل سیستم مورد استفاده قرار می‌گیرد. این پیام‌ها شامل اطلاعات مختلفی از جمله جزئیات راه‌اندازی سیستم، شناسایی سخت‌افزار، و خطاهای مختلفی که در حین اجرای سیستم به وجود می‌آید، می‌باشد. یکی از کاربردهای رایج dmesg، شناسایی خطاهای مرتبط با سیستم فایل است.


بررسی خطاهای سیستم فایل با استفاده از dmesg

برای نمایش پیام‌های خطا یا اخطارهای مرتبط با سیستم فایل از دستور dmesg می‌توان استفاده کرد. این پیام‌ها می‌توانند شامل مشکلاتی مانند خرابی فایل سیستم، مشکلات دسترسی به دیسک، یا حتی مشکلات در ماژول‌های فایل سیستم باشند.

دستور پایه:

برای مشاهده پیام‌های خطا در dmesg، می‌توان از دستور زیر استفاده کرد:

dmesg | grep -i error

در اینجا:

  • grep -i error به دنبال پیام‌های حاوی کلمه “error” می‌گردد. استفاده از -i باعث می‌شود که جستجو به صورت غیر حساس به حروف بزرگ و کوچک انجام شود.
دستور خاص برای خطاهای سیستم فایل:

برای محدود کردن نتایج به خطاهای مرتبط با سیستم فایل، می‌توان از فیلترهایی استفاده کرد که به پیام‌های مربوط به سیستم فایل اشاره دارند. به‌عنوان مثال:

dmesg | grep -i 'ext4\|btrfs\|xfs'

در اینجا:

  • ext4\|btrfs\|xfs به دنبال پیام‌هایی می‌گردد که مرتبط با فایل سیستم‌های محبوب مانند ext4، btrfs یا xfs باشد. شما می‌توانید این لیست را بسته به نوع سیستم فایل خود تغییر دهید.

پیام‌های خطای رایج سیستم فایل

  1. File system errors (خطاهای فایل سیستم): خطاهای مربوط به سیستم فایل معمولاً زمانی رخ می‌دهند که فایل سیستم به درستی بارگذاری نشده باشد یا به هر دلیلی قادر به دسترسی به فایل‌ها نباشد. در چنین مواردی، پیامی مشابه این مشاهده خواهید کرد:
    [  312.214567] EXT4-fs error (device sda1): ext4_find_entry:1567: inode #123456: comm process_name: reading directory lblock 0
    
  2. I/O errors (خطاهای ورودی/خروجی): اگر خطای ورودی/خروجی (I/O) رخ دهد، پیام‌هایی مشابه زیر مشاهده خواهید کرد. این خطاها ممکن است به دلیل مشکلات دیسک، خرابی در کابل‌های اتصال یا خرابی سخت‌افزاری اتفاق بیفتد:
    [  522.113957] sd 4:0:0:0: [sda] Unhandled sense code
    [  522.113958] sd 4:0:0:0: [sda] Result: hostbyte=0x01 driverbyte=0x00
    [  522.113961] sd 4:0:0:0: [sda] CDB: Read(10) 28 00 00 00 00 00 00 08 00
    
  3. File system mounting errors (خطاهای مربوط به اتصال فایل سیستم): اگر کرنل نتواند یک فایل سیستم را به درستی بارگذاری کند، ممکن است پیام‌هایی مشابه این مشاهده کنید:
    [  404.289756] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
    [  404.289758] EXT4-fs (sda1): mounting with errors, please check.
    
  4. Corruption errors (خطاهای فساد داده‌ها): اگر فایل سیستم با مشکل فساد داده‌ها مواجه شود، ممکن است خطاهایی مانند زیر نمایش داده شود:
    [  222.117010] EXT4-fs error (device sda1): ext4_check_descriptors: Checksum for group 0 failed
    

استفاده از dmesg برای رفع خطاهای سیستم فایل

پس از شناسایی پیام‌های خطا در dmesg، می‌توان اقداماتی را برای رفع این مشکلات انجام داد. یکی از رایج‌ترین کارها، بررسی و تعمیر فایل سیستم است که می‌تواند به‌وسیله ابزار fsck انجام شود.

تعمیر سیستم فایل با fsck

اگر خطاهای سیستم فایل مرتبط با خرابی فایل سیستم پیدا کردید، از دستور fsck برای بررسی و تعمیر فایل سیستم استفاده کنید. قبل از اجرای این دستور، مهم است که فایل سیستم مورد نظر به صورت unmounted باشد.

  1. ابتدا سیستم را به حالت تک‌کاربره (single-user mode) یا با استفاده از یک لایو CD/USB بوت کنید.
  2. سپس دستور زیر را برای بررسی و تعمیر فایل سیستم اجرا کنید:
    fsck /dev/sda1
    

    این دستور فایل سیستم موجود در /dev/sda1 را بررسی کرده و در صورت وجود خطا، آن‌ها را اصلاح می‌کند.


جمع بندی

استفاده از دستور dmesg برای بررسی پیام‌های خطای سیستم فایل به شما این امکان را می‌دهد که مشکلات سیستم فایل را به‌سرعت شناسایی کنید. این ابزار به‌ویژه برای تشخیص خطاهای مرتبط با سیستم فایل و ورودی/خروجی (I/O) مفید است. پس از شناسایی خطاها، ابزارهایی مانند fsck می‌توانند برای تعمیر فایل سیستم استفاده شوند. مدیریت دقیق این خطاها و پیگیری سریع مشکلات می‌تواند از بروز خرابی‌های جدی جلوگیری کرده و عملکرد سیستم را بهینه نگه دارد.

 [/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی وضعیت سلامت فایل سیستم با دستور fsck” subtitle=”توضیحات کامل”]دستور fsck (که مخفف “file system consistency check” است) در لینوکس برای بررسی و تعمیر فایل سیستم‌ها به‌کار می‌رود. این دستور می‌تواند به شما کمک کند تا مشکلات فایل سیستم، خرابی‌های احتمالی، و فساد داده‌ها را شناسایی و تعمیر کنید. در این قسمت، به‌طور مفصل نحوه استفاده از دستور fsck برای بررسی وضعیت سلامت فایل سیستم‌ها را توضیح خواهیم داد.


بررسی فایل سیستم با fsck

قبل از اینکه فایل سیستم خود را بررسی و تعمیر کنید، باید مطمئن شوید که فایل سیستم در حال حاضر به‌درستی unmounted است. در غیر این صورت، ممکن است عملیات fsck باعث آسیب به فایل سیستم شود. بنابراین، در هنگام اجرای این دستور باید از دسترسی به فایل سیستم جلوگیری کنید.

1. بررسی وضعیت سلامت فایل سیستم

برای بررسی وضعیت سلامت یک فایل سیستم و انجام چک‌های اولیه، از دستور زیر استفاده کنید:

sudo fsck /dev/sda1

در اینجا:

  • /dev/sda1 نام پارتیشن فایل سیستم مورد نظر است. شما باید این را بر اساس نام پارتیشن مورد نظر خود تغییر دهید.

پس از اجرای این دستور، fsck شروع به بررسی فایل سیستم می‌کند و در صورت یافتن خطا، آن‌ها را گزارش می‌دهد.

2. بررسی فایل سیستم به‌صورت خودکار (بدون تایید دستی)

در صورتی که بخواهید دستور fsck را به‌طور خودکار اجرا کنید و بدون نیاز به تایید دستی برای هرگونه تعمیر، دستور زیر را وارد کنید:

sudo fsck -y /dev/sda1
  • گزینه -y به fsck می‌گوید که به طور خودکار هرگونه درخواست تعمیر را تایید کند. این گزینه برای مواقعی که می‌خواهید عملیات به‌صورت غیرتعاملی انجام شود مفید است.

بررسی فایل سیستم با حالت تعاملی

اگر می‌خواهید به صورت تعاملی وضعیت سلامت فایل سیستم را بررسی کرده و در صورت نیاز تصمیم بگیرید که هر خطا یا مشکل خاصی تعمیر شود، می‌توانید از دستور بدون گزینه -y استفاده کنید. به‌طور مثال:

sudo fsck /dev/sda1

در این حالت، زمانی که fsck یک خطا یا مشکل را شناسایی می‌کند، از شما می‌خواهد که آیا می‌خواهید این مشکل را برطرف کنید یا خیر. شما می‌توانید با وارد کردن پاسخ‌های مختلف، تصمیم بگیرید که به صورت دستی خطاها را اصلاح کنید.


بررسی فایل سیستم‌های مختلف

fsck از انواع مختلف سیستم‌های فایل پشتیبانی می‌کند، مانند ext4، xfs، btrfs و دیگر سیستم‌های فایل محبوب در لینوکس. اگر سیستم فایل شما از نوع خاصی باشد، fsck به طور خودکار ابزار مناسب برای بررسی آن سیستم فایل را انتخاب می‌کند.

برای مثال:

  • برای سیستم فایل‌های ext4، از دستور fsck به همین شکل استفاده می‌شود.
  • برای سیستم فایل‌های xfs، از دستور xfs_repair برای بررسی و تعمیر استفاده می‌شود:
sudo xfs_repair /dev/sda1
  • برای فایل سیستم‌های btrfs، دستور btrfs check مورد استفاده قرار می‌گیرد:
sudo btrfs check /dev/sda1

بررسی و تعمیر فایل سیستم به‌صورت غیرقابل تغییر (Read-Only)

گاهی اوقات ممکن است بخواهید فایل سیستم را در حالت فقط خواندنی (read-only) بررسی کنید تا از تغییرات ناخواسته جلوگیری شود. برای انجام این کار، می‌توانید از گزینه -n یا --no-write در دستور fsck استفاده کنید:

sudo fsck -n /dev/sda1

این گزینه به fsck می‌گوید که فایل سیستم را فقط برای خواندن بررسی کند و هیچ تغییری در آن اعمال نکند.


استفاده از fsck در هنگام بوت

اگر نمی‌توانید فایل سیستم را از سیستم عامل به‌طور معمول unmount کنید (مثلاً سیستم در حال اجراست)، می‌توانید از fsck در حالت بوت استفاده کنید. برای این کار، نیاز به ورود به حالت تک‌کاربره یا حالت تعمیر (recovery mode) دارید.

برای انجام این کار، مراحل زیر را دنبال کنید:

  1. سیستم را به حالت تک‌کاربره (single-user mode) یا حالت بازیابی (recovery mode) وارد کنید.
  2. در هنگام بوت شدن، گزینه مناسب برای ورود به وضعیت بازیابی را انتخاب کنید.
  3. پس از ورود به حالت بازیابی، دستور fsck را برای بررسی فایل سیستم‌ها اجرا کنید.

مشاهده وضعیت فایل سیستم در حین استفاده از fsck

اگر می‌خواهید گزارش کاملی از عملکرد fsck مشاهده کنید، می‌توانید از گزینه -v (verbose) برای فعال‌سازی حالت گزارش‌گیری مفصل استفاده کنید:

sudo fsck -v /dev/sda1

در این حالت، fsck به‌طور دقیق‌تری گزارش می‌دهد که کدام بخش‌های فایل سیستم در حال بررسی یا تعمیر هستند.


جمع بندی

دستور fsck یک ابزار بسیار مهم برای بررسی و تعمیر فایل سیستم‌ها در لینوکس است. با استفاده از این دستور، می‌توانید سلامت فایل سیستم خود را بررسی کرده و در صورت نیاز، مشکلات آن را شناسایی و تعمیر کنید. در صورت بروز خرابی‌های فایل سیستم، دستور fsck می‌تواند به‌طور خودکار یا تعاملی مشکلات را رفع کند. همچنین، با استفاده از گزینه‌های مختلف این دستور، می‌توانید فایل سیستم را در حالت‌های مختلف و با گزارش‌های مفصل بررسی کنید تا اطمینان حاصل کنید که فایل سیستم شما به‌درستی کار می‌کند.

 [/cdb_course_lesson][cdb_course_lesson title=”فصل 8. مدیریت و بهینه‌سازی فضای دیسک”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”فشرده‌سازی فایل‌ها و دایرکتوری‌ها با gzip و tar” subtitle=”توضیحات کامل”]در لینوکس، فشرده‌سازی داده‌ها به‌منظور کاهش فضای مصرفی دیسک و انتقال راحت‌تر فایل‌ها بسیار رایج است. دو ابزار محبوب برای فشرده‌سازی داده‌ها عبارتند از gzip و tar. این ابزارها به‌طور جداگانه و ترکیبی برای فشرده‌سازی و آرشیو کردن فایل‌ها و دایرکتوری‌ها مورد استفاده قرار می‌گیرند.


ابزار gzip

gzip یک ابزار خط فرمان برای فشرده‌سازی فایل‌ها است که از الگوریتم فشرده‌سازی DEFLATE استفاده می‌کند. این ابزار تنها برای فشرده‌سازی یک فایل به‌کار می‌رود و برای فشرده‌سازی دایرکتوری‌ها باید ابتدا دایرکتوری‌ها را به یک فایل آرشیو (مثل .tar) تبدیل کنید.

1. فشرده‌سازی یک فایل با gzip

برای فشرده‌سازی یک فایل با استفاده از gzip، دستور زیر را وارد کنید:

gzip filename
  • filename نام فایلی است که می‌خواهید فشرده‌سازی کنید.
  • پس از اجرای این دستور، فایل فشرده شده با پسوند .gz در همان مسیر ذخیره می‌شود. به‌عنوان مثال، اگر فایل اصلی file.txt باشد، فشرده‌سازی آن فایل جدیدی به نام file.txt.gz تولید خواهد کرد.
2. فشرده‌سازی و حفظ نسخه اصلی فایل

اگر بخواهید پس از فشرده‌سازی فایل، نسخه اصلی آن حفظ شود، از گزینه -k استفاده کنید:

gzip -k filename

در این صورت، فایل فشرده‌شده با پسوند .gz ایجاد می‌شود، اما نسخه اصلی فایل بدون تغییر باقی می‌ماند.

3. فشرده‌سازی چندین فایل

اگر بخواهید چندین فایل را با استفاده از gzip فشرده کنید، باید از wildcard (علامت *) یا از لیست فایل‌ها استفاده کنید. به‌عنوان مثال:

gzip *.txt

این دستور تمام فایل‌های با پسوند .txt را در همان پوشه فشرده می‌کند.


ابزار tar

ابزار tar (که مخفف “tape archive” است) برای ایجاد فایل‌های آرشیو شده (معمولاً با پسوند .tar) استفاده می‌شود. این ابزار می‌تواند دایرکتوری‌ها و فایل‌های متعدد را در یک فایل واحد جمع‌آوری کند. tar به‌طور معمول با ابزارهایی مانند gzip یا bzip2 ترکیب می‌شود تا فایل‌ها را فشرده کند.

1. ایجاد یک آرشیو با tar

برای ایجاد یک آرشیو از یک فایل یا دایرکتوری، از دستور زیر استفاده کنید:

tar -cvf archive.tar /path/to/directory_or_file

در اینجا:

  • -c: ایجاد یک فایل آرشیو جدید.
  • -v: نمایش فایل‌هایی که در حال اضافه شدن به آرشیو هستند (حالت verbose).
  • -f: تعیین نام فایل آرشیو.

برای مثال، اگر بخواهید دایرکتوری /home/user/docs را به آرشیو docs.tar تبدیل کنید:

tar -cvf docs.tar /home/user/docs
2. فشرده‌سازی فایل آرشیو با gzip

برای فشرده‌سازی آرشیو با استفاده از gzip، از گزینه -z استفاده می‌شود. این کار باعث می‌شود که فایل آرشیو همزمان با ایجاد آن فشرده شود:

tar -czvf archive.tar.gz /path/to/directory_or_file
  • -z: فشرده‌سازی فایل آرشیو با gzip.

برای مثال، برای فشرده‌سازی دایرکتوری /home/user/docs و ایجاد فایل docs.tar.gz:

tar -czvf docs.tar.gz /home/user/docs
3. استخراج فایل‌های آرشیو شده با tar

برای استخراج محتویات یک فایل آرشیو، از دستور زیر استفاده می‌کنید:

tar -xvzf archive.tar.gz

در اینجا:

  • -x: استخراج (extract) فایل‌ها از آرشیو.
  • -v: نمایش فایل‌های استخراج شده (حالت verbose).
  • -z: فشرده‌سازی با gzip.
  • -f: تعیین نام فایل آرشیو.

این دستور فایل‌های موجود در آرشیو archive.tar.gz را استخراج می‌کند.

4. استخراج فایل‌های خاص از آرشیو

اگر بخواهید فقط برخی از فایل‌ها را از یک آرشیو استخراج کنید، می‌توانید نام فایل‌های مورد نظر را پس از آرشیو مشخص کنید. به‌عنوان مثال، برای استخراج فایل file1.txt از archive.tar.gz:

tar -xvzf archive.tar.gz file1.txt

جمع بندی

در این بخش، نحوه فشرده‌سازی فایل‌ها و دایرکتوری‌ها با استفاده از دو ابزار رایج در لینوکس یعنی gzip و tar را بررسی کردیم. دستور gzip برای فشرده‌سازی فایل‌ها به‌طور مستقل به‌کار می‌رود، در حالی که دستور tar برای ایجاد آرشیو از فایل‌ها و دایرکتوری‌ها استفاده می‌شود. ترکیب این دو ابزار (با گزینه -z در tar) به شما امکان می‌دهد تا فایل‌های فشرده‌شده‌ای با پسوند .tar.gz ایجاد کنید که هم فشرده‌سازی و هم آرشیو کردن داده‌ها را در یک مرحله انجام می‌دهد. همچنین نحوه استخراج فایل‌ها و آرشیوهای فشرده‌شده نیز توضیح داده شد تا بتوانید به‌راحتی داده‌های خود را بازگردانی کنید.

 [/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”حذف فایل‌های قدیمی یا بی‌استفاده” subtitle=”توضیحات کامل”]در هر سیستم، به‌خصوص در سرورها و سیستم‌های تولیدی، فایل‌های قدیمی یا بی‌استفاده می‌توانند حجم زیادی از فضای ذخیره‌سازی را اشغال کنند و به کاهش کارایی سیستم منجر شوند. بنابراین، پاکسازی منظم این فایل‌ها می‌تواند کمک شایانی به بهینه‌سازی منابع سیستم کند. در این قسمت، روش‌های مختلف برای شناسایی و حذف فایل‌های قدیمی یا بی‌استفاده در لینوکس بررسی خواهد شد.


1. شناسایی فایل‌های قدیمی با استفاده از دستور find

دستور find یکی از ابزارهای قدرتمند در لینوکس است که برای جستجو و فیلتر کردن فایل‌ها بر اساس معیارهای مختلف استفاده می‌شود. برای شناسایی فایل‌های قدیمی‌تر از یک تاریخ مشخص، می‌توان از گزینه‌های -mtime یا -atime استفاده کرد.

1.1. حذف فایل‌هایی که از آخرین دسترسی به آنها بیش از 30 روز گذشته است

برای پیدا کردن فایل‌هایی که بیش از 30 روز از آخرین دسترسی به آن‌ها گذشته است، می‌توانید از دستور زیر استفاده کنید:

find /path/to/directory -type f -atime +30

در اینجا:

  • /path/to/directory: مسیر دایرکتوری که می‌خواهید جستجو را در آن انجام دهید.
  • -type f: تنها فایل‌ها (نه دایرکتوری‌ها) را جستجو می‌کند.
  • -atime +30: فایل‌هایی که بیش از 30 روز از آخرین دسترسی به آن‌ها گذشته است.

برای حذف فایل‌های قدیمی‌تر از 30 روز:

find /path/to/directory -type f -atime +30 -exec rm {} \;
1.2. حذف فایل‌هایی که از آخرین ویرایش آن‌ها بیش از 60 روز گذشته است

برای شناسایی فایل‌هایی که بیش از 60 روز از آخرین ویرایش آن‌ها گذشته است، دستور زیر را اجرا کنید:

find /path/to/directory -type f -mtime +60

برای حذف این فایل‌ها:

find /path/to/directory -type f -mtime +60 -exec rm {} \;
1.3. حذف فایل‌هایی که به‌صورت خاص از تاریخ مشخصی به بعد ایجاد نشده‌اند

شما می‌توانید از گزینه -newermt برای شناسایی و حذف فایل‌هایی که تاریخ ایجاد آن‌ها قبل از یک تاریخ خاص است استفاده کنید. به‌عنوان مثال:

find /path/to/directory -type f -newermt "2023-01-01" -exec rm {} \;

این دستور فایل‌هایی که پس از تاریخ 1 ژانویه 2023 ایجاد شده‌اند را شناسایی کرده و حذف می‌کند.


2. استفاده از ابزار tmpwatch برای حذف فایل‌های قدیمی

ابزار tmpwatch به‌طور ویژه برای حذف فایل‌های قدیمی در دایرکتوری‌های موقتی طراحی شده است. این ابزار می‌تواند فایل‌های بی‌استفاده در دایرکتوری‌های tmp را شناسایی و حذف کند.

2.1. حذف فایل‌های قدیمی‌تر از 7 روز در دایرکتوری /tmp

برای حذف فایل‌های قدیمی‌تر از 7 روز در دایرکتوری /tmp:

sudo tmpwatch --mtime 168 /tmp

در اینجا:

  • --mtime 168: فایل‌هایی که بیش از 168 ساعت (7 روز) از آخرین تغییر آن‌ها گذشته است.
  • /tmp: دایرکتوری که فایل‌های قدیمی در آن قرار دارند.
2.2. حذف فایل‌های قدیمی‌تر از 30 روز در دایرکتوری خاص

برای حذف فایل‌های قدیمی‌تر از 30 روز در دایرکتوری خاص (مثلاً /var/log):

sudo tmpwatch --mtime 720 /var/log

3. استفاده از ابزار logrotate برای مدیریت فایل‌های لاگ

در سیستم‌های لینوکسی، فایل‌های لاگ می‌توانند به‌سرعت حجم زیادی را اشغال کنند. ابزار logrotate به‌طور خودکار فایل‌های لاگ را فشرده‌سازی و حذف می‌کند.

3.1. پیکربندی logrotate

فایل پیکربندی logrotate معمولاً در مسیر /etc/logrotate.conf قرار دارد. برای پیکربندی برای نگهداری فایل‌های لاگ و حذف خودکار آن‌ها بعد از تعداد مشخصی روز، می‌توانید دستور زیر را وارد کنید:

  1. باز کردن فایل پیکربندی logrotate:
sudo nano /etc/logrotate.conf
  1. اضافه کردن یا اصلاح تنظیمات برای حذف فایل‌های لاگ قدیمی‌تر از یک تعداد مشخص:
/var/log/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    create 0640 root root
}

در این مثال:

  • daily: لاگ‌ها هر روز چرخانده می‌شوند.
  • rotate 7: فقط 7 نسخه آخر نگهداری می‌شود و نسخه‌های قدیمی‌تر حذف می‌شوند.
  • compress: لاگ‌های قدیمی فشرده می‌شوند.

4. استفاده از ابزار ncdu برای شناسایی و حذف فایل‌های بزرگ

ابزار ncdu یک رابط گرافیکی برای بررسی مصرف فضای دیسک است که به‌صورت تعاملی به شما امکان می‌دهد تا فایل‌های بزرگ و قدیمی را شناسایی کرده و حذف کنید.

4.1. نصب ncdu

برای نصب ncdu، دستور زیر را وارد کنید:

sudo apt install ncdu
4.2. اجرای ncdu

برای بررسی فضای دیسک در دایرکتوری خاص:

ncdu /path/to/directory

این دستور فضای مصرفی دایرکتوری را به‌صورت گرافیکی نمایش می‌دهد و به شما این امکان را می‌دهد که فایل‌های بزرگ و بی‌استفاده را شناسایی کرده و آن‌ها را حذف کنید.


5. استفاده از du برای شناسایی فایل‌های بزرگ

دستور du برای بررسی فضای مصرفی فایل‌ها و دایرکتوری‌ها مورد استفاده قرار می‌گیرد. برای شناسایی فایل‌ها و دایرکتوری‌های بزرگ، از دستور زیر استفاده کنید:

du -ah /path/to/directory | sort -rh | head -n 20

این دستور 20 فایل و دایرکتوری بزرگ‌تر را در دایرکتوری مشخص‌شده نمایش می‌دهد.


جمع بندی

حذف فایل‌های قدیمی یا بی‌استفاده می‌تواند به‌طور قابل‌توجهی فضای دیسک شما را آزاد کند و به بهبود عملکرد سیستم کمک کند. با استفاده از ابزارهایی مانند find، tmpwatch، logrotate، ncdu و du، می‌توانید فایل‌های قدیمی را شناسایی و حذف کنید. به‌علاوه، ابزار logrotate می‌تواند به‌طور خودکار فایل‌های لاگ را مدیریت کند تا فضای دیسک همیشه به‌طور بهینه استفاده شود.

 [/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”حذف فایل‌های قدیمی با دستور find و گزینه -delete” subtitle=”توضیحات کامل”]دستور find یکی از ابزارهای پرکاربرد در لینوکس برای جستجوی فایل‌ها و دایرکتوری‌ها است. علاوه بر جستجو، می‌توان از این دستور برای انجام عملیات‌هایی مانند حذف فایل‌های قدیمی یا بی‌استفاده استفاده کرد. در اینجا، نحوه استفاده از find برای شناسایی و حذف فایل‌هایی که مدت زمان زیادی است که تغییر نکرده‌اند، توضیح داده می‌شود.


نحوه استفاده از دستور find برای حذف فایل‌های قدیمی‌تر از یک مدت زمان خاص

با استفاده از دستور find و گزینه‌های -mtime و -delete می‌توانیم فایل‌هایی که مدت زمان مشخصی از آخرین تغییر آن‌ها گذشته است را شناسایی و حذف کنیم.

1. دستور برای حذف فایل‌های قدیمی‌تر از 30 روز

برای حذف فایل‌هایی که بیش از 30 روز از آخرین تغییر آن‌ها گذشته است، می‌توانید از دستور زیر استفاده کنید:

find /path/to/directory -type f -mtime +30 -delete

در اینجا:

  • /path/to/directory: مسیر دایرکتوری که می‌خواهید فایل‌های قدیمی در آن جستجو شوند.
  • -type f: تنها فایل‌ها (نه دایرکتوری‌ها) جستجو می‌شوند.
  • -mtime +30: فایل‌هایی که بیش از 30 روز از آخرین تغییر آن‌ها گذشته است.
  • -delete: حذف فایل‌هایی که مطابق با شرایط مشخص شده هستند.

این دستور فایل‌های قدیمی‌تر از 30 روز را که در دایرکتوری مشخص‌شده قرار دارند، به‌طور خودکار حذف خواهد کرد.

2. حذف فایل‌های قدیمی‌تر از یک مدت زمان خاص (مثلاً 60 روز)

اگر بخواهید فایل‌هایی که بیش از 60 روز از آخرین تغییر آن‌ها گذشته است را حذف کنید، دستور زیر را وارد کنید:

find /path/to/directory -type f -mtime +60 -delete

این دستور مشابه دستور قبلی است، با این تفاوت که در اینجا فایل‌هایی که بیش از 60 روز از آخرین تغییر آن‌ها گذشته باشد حذف می‌شوند.

3. پیش‌نمایش فایل‌ها قبل از حذف

قبل از اینکه فایل‌ها را حذف کنید، می‌توانید ابتدا فقط لیست فایل‌ها را مشاهده کنید تا مطمئن شوید که فایل‌های درستی انتخاب شده‌اند. برای این کار می‌توانید از گزینه -print به‌جای -delete استفاده کنید:

find /path/to/directory -type f -mtime +30 -print

این دستور تنها فایل‌هایی که بیش از 30 روز از آخرین تغییر آن‌ها گذشته است را نمایش می‌دهد، بدون اینکه آن‌ها را حذف کند.


جمع بندی

با استفاده از دستور find و گزینه‌های مختلف مانند -mtime و -delete، می‌توانید به‌راحتی فایل‌های قدیمی یا بی‌استفاده را در سیستم لینوکس شناسایی و حذف کنید. این روش برای مدیریت فایل‌های سیستم بسیار مفید است و می‌تواند فضای دیسک شما را به‌طور قابل‌توجهی آزاد کند.[/cdb_course_lesson][cdb_course_lesson title=”فصل 9. نظارت بر عملکرد I/O سیستم فایل”]
[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از ابزار iotop برای نظارت بر مصرف I/O” subtitle=”توضیحات کامل”]ابزار iotop یکی از ابزارهای قدرتمند در لینوکس برای نظارت بر فعالیت‌های I/O (ورودی و خروجی) سیستم است. این ابزار به شما این امکان را می‌دهد که پردازش‌هایی که بیشترین استفاده از I/O را دارند، مشاهده کرده و بررسی کنید که کدام برنامه‌ها و فرآیندها بیشترین فشار را بر روی سیستم ذخیره‌سازی وارد می‌کنند. این می‌تواند در شناسایی مشکلات عملکردی و بهینه‌سازی سیستم بسیار مفید باشد.


نصب iotop

قبل از استفاده از iotop، ابتدا باید این ابزار را روی سیستم خود نصب کنید. برای نصب آن در توزیع‌های مختلف لینوکس می‌توانید از دستورات زیر استفاده کنید.

1. نصب در Debian/Ubuntu:
sudo apt-get install iotop
2. نصب در CentOS/RHEL:
sudo yum install iotop
3. نصب در Fedora:
sudo dnf install iotop

نحوه استفاده از iotop

پس از نصب iotop، می‌توانید آن را اجرا کرده و از اطلاعات مربوط به مصرف I/O سیستم مطلع شوید. دستور پایه برای اجرای iotop به‌صورت زیر است:

sudo iotop

چرا که این ابزار نیاز به مجوزهای مدیریتی (sudo) دارد تا بتواند اطلاعات دقیق‌تری از پردازش‌ها و مصرف I/O سیستم بدست آورد.

1. نمایش پردازش‌هایی که بیشترین مصرف I/O را دارند

با اجرای دستور بالا، صفحه‌ای مشابه صفحه زیر برای شما به نمایش درمی‌آید که اطلاعات مربوط به مصرف I/O توسط پردازش‌های مختلف را نشان می‌دهد:

Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s
TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
1234 be/4 user1    0.00 B/s   0.00 B/s   0.00 %     0.00 %  process1
5678 be/4 user2    0.00 B/s   0.00 B/s   0.00 %     0.00 %  process2
...

در این صفحه، هر خط مربوط به یک فرآیند است و اطلاعات زیر را نمایش می‌دهد:

  • TID: شناسه پردازش.
  • PRIO: اولویت پردازش.
  • USER: نام کاربری که پردازش متعلق به آن است.
  • DISK READ: میزان داده‌های خوانده‌شده از دیسک.
  • DISK WRITE: میزان داده‌های نوشته‌شده روی دیسک.
  • SWAPIN: درصد زمانی که پردازش در حال استفاده از فضای Swap است.
  • IO>: میزان استفاده از منابع I/O.
2. فیلتر کردن پردازش‌های با مصرف بالا

برای نمایش پردازش‌هایی که بیشترین مصرف I/O را دارند، می‌توانید از کلیدهای جهت‌دار برای مرتب‌سازی بر اساس ستون‌های مختلف استفاده کنید. برای مثال، با فشار دادن کلید r می‌توانید پردازش‌ها را بر اساس میزان خواندن از دیسک مرتب کنید، یا با فشار دادن کلید w پردازش‌ها را بر اساس میزان نوشتن روی دیسک مرتب کنید.

3. استفاده از فیلترهای خاص با دستور iotop

در صورتی که بخواهید فقط پردازش‌هایی که مصرف I/O بالایی دارند را مشاهده کنید، می‌توانید از گزینه -o (only) برای نمایش فقط پردازش‌های در حال استفاده از I/O استفاده کنید:

sudo iotop -o

این دستور تنها پردازش‌هایی را نمایش می‌دهد که در حال انجام عملیات I/O هستند.

4. نمایش استفاده از I/O برای یک کاربر خاص

اگر بخواهید فقط پردازش‌های متعلق به یک کاربر خاص را مشاهده کنید، می‌توانید از گزینه -u استفاده کنید. به‌عنوان مثال، برای نمایش پردازش‌های مربوط به کاربر user1:

sudo iotop -u user1

جمع بندی

ابزار iotop یک ابزار کاربردی و مفید برای نظارت بر فعالیت‌های I/O در لینوکس است. با استفاده از این ابزار می‌توانید پردازش‌هایی که بیشترین فشار را بر روی سیستم ذخیره‌سازی می‌آورند شناسایی کرده و به بهبود عملکرد سیستم کمک کنید. این ابزار به‌ویژه برای شناسایی مشکلات عملکردی مانند I/O throttling یا بار زیاد در سیستم‌های با حجم بالای داده مفید است.

 [/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از ابزار blktrace برای تحلیل عمیق فعالیت‌های I/O در دیسک” subtitle=”توضیحات کامل”]ابزار blktrace یکی از ابزارهای پیشرفته لینوکس است که برای تحلیل و نظارت دقیق بر فعالیت‌های I/O دیسک‌ها طراحی شده است. این ابزار به شما این امکان را می‌دهد که تمامی عملیات‌های I/O که بر روی دستگاه‌های ذخیره‌سازی (مثل هارد دیسک‌ها یا SSDها) انجام می‌شود را به صورت دقیق مشاهده کنید و جزئیات دقیقی از زمان‌بندی و نحوه تعامل سیستم با دیسک بدست آورید. این ابزار معمولاً برای تجزیه و تحلیل مشکلات عملکردی و بهینه‌سازی استفاده می‌شود.


نصب blktrace

برای استفاده از ابزار blktrace، ابتدا باید آن را نصب کنید. بسته blktrace معمولاً به صورت پیش‌فرض در بیشتر توزیع‌های لینوکس موجود است، اما در صورت نیاز می‌توانید آن را به صورت دستی نصب کنید.

1. نصب در Debian/Ubuntu:
sudo apt-get install blktrace
2. نصب در CentOS/RHEL:
sudo yum install blktrace
3. نصب در Fedora:
sudo dnf install blktrace

نحوه استفاده از blktrace

پس از نصب blktrace، می‌توانید آن را برای تحلیل عملیات I/O در دیسک‌های سیستم خود اجرا کنید. در اینجا نحوه استفاده از دستور blktrace آورده شده است.

1. شروع یک تراکم I/O روی یک دستگاه خاص

برای شروع بررسی فعالیت‌های I/O بر روی یک دستگاه خاص (مثل /dev/sda)، از دستور زیر استفاده می‌کنید:

sudo blktrace -d /dev/sda -o trace_output

در اینجا:

  • -d /dev/sda: مشخص می‌کند که دستگاه sda (معمولاً اولین دیسک سخت) را برای ردیابی انتخاب می‌کنید.
  • -o trace_output: نام فایل خروجی که نتایج تراکم I/O در آن ذخیره می‌شود.

پس از اجرای این دستور، blktrace تمامی عملیات‌های I/O انجام‌شده بر روی دیسک را در یک فایل ذخیره می‌کند.

2. مشاهده تراکم I/O در زمان واقعی

برای مشاهده فعالیت‌های I/O به‌صورت آنی، می‌توانید از دستور blkparse برای تجزیه و تحلیل فایل خروجی تولید شده استفاده کنید. دستور زیر به شما این امکان را می‌دهد که جزئیات تراکم I/O را در زمان واقعی مشاهده کنید:

sudo blkparse -i trace_output

این دستور تمامی اطلاعات مربوط به عملیات‌های I/O، از جمله زمان‌بندی و نوع عملیات (خواندن، نوشتن، و …) را به‌صورت تفصیلی نمایش می‌دهد.

3. مشاهده خلاصه فعالیت‌های I/O

برای مشاهده یک گزارش خلاصه از تمامی عملیات‌های I/O، می‌توانید از گزینه -i به همراه پارامتر summary استفاده کنید:

sudo blkparse -i trace_output -S

این دستور یک گزارش خلاصه از تمامی فعالیت‌های I/O را نمایش می‌دهد که شامل اطلاعاتی نظیر تعداد درخواست‌ها، زمان انتظار، و سرعت انجام عملیات‌ها است.


تجزیه و تحلیل نتایج blktrace

پس از اجرای دستور blkparse، اطلاعات دقیق و جزئیاتی در مورد هر عملیات I/O بر روی دستگاه دیسک شما در اختیار خواهید داشت. در اینجا، چند نکته برای تجزیه و تحلیل داده‌ها آورده شده است:

  1. زمان‌بندی I/O: اطلاعات مربوط به زمانی که یک عملیات I/O شروع می‌شود و زمانی که تکمیل می‌شود، به شما این امکان را می‌دهد که مدت زمان دقیق هر عملیات را بررسی کنید.
  2. نوع عملیات: شما می‌توانید مشاهده کنید که آیا عملیات I/O مربوط به خواندن (read) یا نوشتن (write) است و اینکه چه نوع داده‌هایی بر روی دیسک خوانده یا نوشته می‌شود.
  3. انتظار I/O: یکی از مهم‌ترین فاکتورها در عملکرد سیستم‌های ذخیره‌سازی، زمان انتظار عملیات I/O است. با استفاده از blktrace می‌توانید شناسایی کنید که کدام عملیات‌ها بیشترین زمان انتظار را دارند.
  4. جریان‌های I/O همزمان: این ابزار به شما این امکان را می‌دهد که ببینید چند درخواست I/O به طور همزمان پردازش می‌شوند و آیا این درخواست‌ها موجب بروز مشکلات در عملکرد سیستم می‌شوند یا خیر.

جمع بندی

ابزار blktrace ابزاری قدرتمند برای نظارت دقیق بر فعالیت‌های I/O در دیسک‌ها است که می‌تواند در تحلیل عملکرد سیستم ذخیره‌سازی، شناسایی مشکلات و بهینه‌سازی استفاده شود. با استفاده از این ابزار، می‌توانید تمامی جزئیات عملیات‌های I/O از جمله زمان‌بندی، نوع عملیات، و مدت زمان انتظار را بررسی کرده و مشکلات موجود را شناسایی کنید. این ابزار به‌ویژه برای بررسی عملکرد سیستم در شرایط بار زیاد و تجزیه و تحلیل مشکلات عملکردی پیچیده بسیار مفید است.[/cdb_course_lesson][cdb_course_lesson title=”فصل 10. تنظیم هشدارها برای مشکلات سیستم فایل”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از inotify برای نظارت بر تغییرات در فایل‌ها و دایرکتوری‌ها” subtitle=”توضیحات کامل”]ابزار inotify یکی از ابزارهای قدرتمند در لینوکس است که به شما این امکان را می‌دهد که تغییرات در فایل‌ها و دایرکتوری‌ها را در زمان واقعی نظارت کنید. با استفاده از inotify می‌توانید اطلاعات دقیقی از هرگونه تغییرات در سیستم فایل دریافت کنید، که این موضوع به‌ویژه در کاربردهای نظارتی و مدیریت سیستم بسیار مفید است.


نصب inotify-tools

برای استفاده از ابزار inotify، ابتدا باید بسته inotify-tools را نصب کنید که شامل دستورات inotifywait و inotifywatch است. این ابزار به شما این امکان را می‌دهد که تغییرات در فایل‌ها و دایرکتوری‌ها را مشاهده کرده و بر اساس آن‌ها اقداماتی انجام دهید.

1. نصب در Debian/Ubuntu:
sudo apt-get install inotify-tools
2. نصب در CentOS/RHEL:
sudo yum install inotify-tools
3. نصب در Fedora:
sudo dnf install inotify-tools

نحوه استفاده از inotifywait برای نظارت بر تغییرات

دستور inotifywait به شما این امکان را می‌دهد که به‌صورت بلادرنگ (Real-time) تغییرات در یک دایرکتوری خاص یا فایل‌ها را مشاهده کنید. این ابزار به‌ویژه برای نظارت بر دایرکتوری‌هایی که به طور مداوم در حال تغییر هستند (مانند دایرکتوری‌های لاگ یا بارگذاری فایل‌ها) مفید است.

1. نظارت بر تغییرات در دایرکتوری خاص

برای مشاهده تغییرات در یک دایرکتوری خاص، دستور زیر را وارد کنید:

inotifywait -m /path/to/directory

در اینجا:

  • -m: این گزینه برای نظارت بر تغییرات به‌صورت پیوسته (مداوم) است. به این معنی که inotifywait به طور مداوم منتظر تغییرات در دایرکتوری مورد نظر خواهد ماند.
  • /path/to/directory: مسیر دایرکتوری که می‌خواهید تغییرات آن را نظارت کنید.

پس از اجرای دستور، تمامی تغییرات (مانند ایجاد، حذف، تغییر نام فایل‌ها و …) در دایرکتوری نمایش داده می‌شود.

2. مشاهده نوع تغییرات

اگر بخواهید نوع تغییرات را به طور دقیق مشاهده کنید، می‌توانید از فیلترهای مختلف استفاده کنید. به‌عنوان مثال، برای نظارت فقط بر تغییرات فایل‌ها و دایرکتوری‌ها، دستور زیر را وارد کنید:

inotifywait -m -e create -e modify -e delete /path/to/directory

در اینجا:

  • -e: گزینه‌ای برای انتخاب رویدادهایی است که می‌خواهید نظارت کنید. در این مثال، رویدادهای ایجاد (create)، تغییر (modify) و حذف (delete) فایل‌ها و دایرکتوری‌ها مورد نظر هستند.

ارسال اعلان‌ها در صورت پر شدن دیسک یا وقوع خطا

یکی از کاربردهای مفید inotify این است که می‌توانید در صورت وقوع شرایط خاص، مانند پر شدن دیسک یا خطاهای مربوط به سیستم فایل، اعلان‌هایی ارسال کنید. این کار می‌تواند در مدیریت منابع سیستم و شناسایی مشکلات پیش‌ازهنگام بسیار مفید باشد.

1. نظارت بر فضای دیسک و ارسال اعلان در صورت پر شدن دیسک

برای شناسایی زمانی که فضای دیسک کم می‌شود و ارسال اعلان، می‌توانید از اسکریپت‌های ساده همراه با inotifywait استفاده کنید. به‌عنوان مثال، از دستور df می‌توان برای بررسی وضعیت فضای دیسک استفاده کرد:

while true; do
  df -h | grep '/dev/sda1' | awk '{if ($5 > 90) print "Warning: Disk Space is over 90%!"}' 
  sleep 60
done

این اسکریپت هر 60 ثانیه وضعیت فضای دیسک را بررسی می‌کند و اگر درصد فضای استفاده‌شده بیش از 90% باشد، پیامی را چاپ می‌کند.

2. ارسال اعلان در صورت وقوع خطاهای سیستم فایل

برای نظارت بر خطاهای سیستم فایل می‌توانید از دستور dmesg برای مشاهده پیام‌های خطا استفاده کنید و در صورت بروز خطا، اعلان ارسال کنید. به‌عنوان مثال، برای نظارت بر خطاهای مربوط به سیستم فایل از دستور زیر استفاده کنید:

dmesg -w | grep -i "error"

این دستور تمامی پیام‌های خطا مربوط به سیستم را نشان می‌دهد و به‌صورت زنده (live) به نمایش می‌گذارد. با استفاده از این اطلاعات، می‌توانید خطاهای سیستم فایل را شناسایی کرده و در صورت نیاز اقدامات لازم را انجام دهید.


جمع بندی

استفاده از inotify ابزار قدرتمندی برای نظارت بر تغییرات فایل‌ها و دایرکتوری‌ها به‌صورت بلادرنگ است. این ابزار به شما این امکان را می‌دهد که تغییرات در فایل‌ها را در زمان واقعی مشاهده کرده و بر اساس آن‌ها اقدامات مختلفی مانند ارسال اعلان در صورت پر شدن دیسک یا وقوع خطا انجام دهید. به کمک inotify می‌توان بسیاری از مشکلات عملکردی و منابع سیستم را به‌سرعت شناسایی کرد و اقداماتی پیشگیرانه انجام داد.[/cdb_course_lesson][cdb_course_lesson title=”فصل 11. گزارش‌گیری و ثبت گزارش‌ها”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”ایجاد اسکریپت‌های زمان‌بندی‌شده با cron برای اجرای دستورات df و du” subtitle=”توضیحات کامل”]در این بخش به بررسی نحوه استفاده از اسکریپت‌های زمان‌بندی‌شده با ابزار cron می‌پردازیم. هدف از این اسکریپت‌ها جمع‌آوری گزارش‌های منظم از وضعیت فضای دیسک سیستم است. برای این کار، از دستوراتی مانند df و du برای بررسی فضای دیسک و استفاده از آن‌ها در اسکریپت‌های زمان‌بندی‌شده استفاده خواهیم کرد.


استفاده از cron برای زمان‌بندی اجرای دستورات

ابزار cron در لینوکس برای زمان‌بندی اجرای خودکار دستورات و اسکریپت‌ها در زمان‌های مشخص استفاده می‌شود. شما می‌توانید از cron برای اجرای دستورات بررسی فضای دیسک در فواصل زمانی خاص استفاده کنید.

1. بررسی فضای دیسک با دستور df

دستور df اطلاعات مربوط به استفاده از فضای دیسک را نمایش می‌دهد. این دستور برای مشاهده میزان فضای استفاده‌شده و آزاد دیسک‌ها مفید است.

2. بررسی فضای استفاده‌شده توسط دایرکتوری‌ها با دستور du

دستور du فضای استفاده‌شده توسط فایل‌ها و دایرکتوری‌ها را گزارش می‌دهد. شما می‌توانید از این دستور برای مشاهده جزئیات مصرف فضای دیسک در مسیرهای خاص استفاده کنید.


1. ایجاد اسکریپت برای گزارش‌گیری از فضای دیسک

برای شروع، ابتدا باید یک اسکریپت ساده ایجاد کنید که خروجی دستورات df و du را جمع‌آوری کرده و در یک فایل گزارش ذخیره کند.

مثال اسکریپت گزارش‌گیری از فضای دیسک:
  1. یک فایل اسکریپت با نام disk_report.sh ایجاد کنید.
nano /path/to/disk_report.sh
  1. محتوای اسکریپت به شکل زیر باشد:
#!/bin/bash

# مسیر فایل گزارش
REPORT_FILE="/path/to/disk_report_$(date +\%F).log"

# ثبت تاریخ و زمان
echo "Disk Report - $(date)" >> $REPORT_FILE
echo "---------------------------------" >> $REPORT_FILE

# اجرای دستور df برای بررسی فضای دیسک
echo "Disk Space Usage:" >> $REPORT_FILE
df -h >> $REPORT_FILE
echo "" >> $REPORT_FILE

# اجرای دستور du برای بررسی فضای استفاده‌شده توسط دایرکتوری‌ها
echo "Disk Usage for /path/to/directory:" >> $REPORT_FILE
du -sh /path/to/directory/* >> $REPORT_FILE
echo "" >> $REPORT_FILE

در این اسکریپت:

  • df -h برای بررسی فضای دیسک استفاده می‌شود.
  • du -sh /path/to/directory/* برای بررسی فضای استفاده‌شده توسط دایرکتوری‌ها و فایل‌ها است.
  • گزارش‌ها در فایل /path/to/disk_report_YYYY-MM-DD.log ذخیره می‌شوند.
3. تنظیم مجوزهای لازم برای اسکریپت

پس از ایجاد اسکریپت، باید مطمئن شوید که اسکریپت قابل اجرا است. برای این کار دستور زیر را وارد کنید:

chmod +x /path/to/disk_report.sh

2. زمان‌بندی اجرای اسکریپت با cron

برای زمان‌بندی اجرای اسکریپت گزارش‌گیری، از ابزار cron استفاده می‌کنیم. ابتدا باید وارد ویرایشگر cron شوید.

1. ویرایش جدول cron

دستور زیر را برای ویرایش جدول cron وارد کنید:

crontab -e

در اینجا، می‌توانید زمان‌بندی مورد نظر خود را برای اجرای اسکریپت تعریف کنید.

2. زمان‌بندی اجرای اسکریپت

فرض کنید می‌خواهید اسکریپت را روزانه در ساعت 3 صبح اجرا کنید. برای این کار، باید خط زیر را به جدول cron اضافه کنید:

0 3 * * * /path/to/disk_report.sh

در اینجا:

  • 0 3 * * *: این تنظیم به معنی اجرای اسکریپت در ساعت 3 بامداد هر روز است.
  • /path/to/disk_report.sh: مسیر اسکریپت شما است که می‌خواهید اجرا شود.

با اضافه کردن این خط، اسکریپت هر روز ساعت 3 بامداد به‌طور خودکار اجرا خواهد شد.

3. مشاهده گزارش‌های تولیدشده

پس از تنظیم زمان‌بندی با cron، شما می‌توانید گزارش‌های تولیدشده را در فایل‌هایی که اسکریپت ذخیره کرده است مشاهده کنید. فایل گزارش به‌طور روزانه ایجاد خواهد شد و نام آن شامل تاریخ خواهد بود، برای مثال disk_report_2025-02-04.log.


جمع بندی

با استفاده از ابزار cron و دستورات df و du، شما می‌توانید اسکریپت‌های زمان‌بندی‌شده‌ای برای گزارش‌گیری خودکار از فضای دیسک ایجاد کنید. این کار به‌ویژه برای نظارت بر وضعیت دیسک و جلوگیری از پر شدن آن در زمان‌های خاص بسیار مفید است. با استفاده از این روش، می‌توانید مطمئن شوید که فضای دیسک شما همیشه در وضعیت مطلوب قرار دارد و به‌راحتی مشکلات احتمالی را شناسایی کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”ذخیره گزارش‌ها در فایل‌های متنی برای تحلیل بلندمدت” subtitle=”توضیحات کامل”]یکی از مهم‌ترین اقدامات برای مدیریت منابع سیستم، نگهداری گزارش‌های دقیق و طولانی‌مدت است. ذخیره‌سازی گزارش‌ها در فایل‌های متنی به شما این امکان را می‌دهد که به‌طور مداوم و طولانی‌مدت از وضعیت سیستم خود آگاهی داشته باشید و بتوانید تحلیل‌های دقیقی بر اساس داده‌های جمع‌آوری‌شده انجام دهید.

در این بخش، روش‌های مختلف ذخیره‌سازی گزارش‌های سیستم در فایل‌های متنی به‌ویژه برای گزارش‌گیری از فضای دیسک و سایر منابع سیستم مانند حافظه و پردازنده را بررسی خواهیم کرد. این گزارش‌ها می‌توانند به‌طور خودکار ذخیره شده و برای تحلیل‌های بلندمدت استفاده شوند.


1. ذخیره‌سازی گزارش‌های df و du در فایل‌های متنی

برای جمع‌آوری و ذخیره‌سازی گزارش‌های فضای دیسک از دستورات df و du در فایل‌های متنی، می‌توان از اسکریپت‌های زمان‌بندی‌شده با cron استفاده کرد تا به‌صورت خودکار این گزارش‌ها ایجاد شوند.

اسکریپت ساده برای ذخیره گزارش‌ها

در این اسکریپت، خروجی دستور df و du را در یک فایل گزارش ذخیره می‌کنیم. همچنین از تاریخ و زمان فعلی برای نام‌گذاری فایل استفاده می‌شود.

  1. ایجاد اسکریپت ذخیره‌سازی گزارش‌ها: ابتدا یک اسکریپت برای ذخیره‌سازی گزارش‌ها ایجاد کنید:
    nano /path/to/save_disk_report.sh
    
  2. محتوای اسکریپت:
    #!/bin/bash
    
    # مسیر فایل گزارش
    REPORT_FILE="/path/to/logs/disk_report_$(date +\%F_\%T).txt"
    
    # ثبت تاریخ و زمان
    echo "Disk Report - $(date)" > $REPORT_FILE
    echo "---------------------------------" >> $REPORT_FILE
    
    # دستور df برای بررسی فضای دیسک
    echo "Disk Space Usage:" >> $REPORT_FILE
    df -h >> $REPORT_FILE
    echo "" >> $REPORT_FILE
    
    # دستور du برای بررسی فضای استفاده‌شده توسط دایرکتوری‌ها
    echo "Disk Usage for /path/to/directory:" >> $REPORT_FILE
    du -sh /path/to/directory/* >> $REPORT_FILE
    echo "" >> $REPORT_FILE
    

در این اسکریپت:

  • df -h: اطلاعات مربوط به فضای دیسک را نمایش می‌دهد.
  • du -sh /path/to/directory/*: فضای مصرف‌شده توسط دایرکتوری‌ها را گزارش می‌دهد.
  • فایل گزارش به‌صورت روزانه با نام شامل تاریخ و زمان ذخیره می‌شود.
  1. اعمال مجوزهای لازم برای اسکریپت: پس از ایجاد اسکریپت، آن را قابل اجرا کنید:
    chmod +x /path/to/save_disk_report.sh
    
  2. اجرای اسکریپت با cron: حالا می‌توانید اسکریپت را به‌طور خودکار با cron اجرا کنید. وارد جدول cron شوید:
    crontab -e
    

    سپس خط زیر را برای اجرای اسکریپت هر روز در ساعت 3 بامداد وارد کنید:

    0 3 * * * /path/to/save_disk_report.sh
    

    این دستور اسکریپت را روزانه در ساعت 3 صبح اجرا خواهد کرد و گزارش‌های آن در فایل‌های متنی ذخیره می‌شود.


2. ذخیره‌سازی گزارش‌های مربوط به مصرف منابع سیستم در فایل‌های متنی

برای ذخیره گزارش‌های دیگر منابع سیستم مانند حافظه، پردازنده و I/O می‌توان از ابزارهای مختلفی استفاده کرد. برخی از این ابزارها شامل free, top, vmstat, iostat, و sar هستند.

ذخیره گزارش‌های free برای مصرف حافظه:

اسکریپت زیر برای ذخیره‌سازی مصرف حافظه با استفاده از دستور free در فایل‌های متنی است:

  1. ایجاد اسکریپت گزارش‌گیری از حافظه:
    nano /path/to/save_memory_report.sh
    
  2. محتوای اسکریپت:
    #!/bin/bash
    
    # مسیر فایل گزارش
    REPORT_FILE="/path/to/logs/memory_report_$(date +\%F_\%T).txt"
    
    # ثبت تاریخ و زمان
    echo "Memory Report - $(date)" > $REPORT_FILE
    echo "---------------------------------" >> $REPORT_FILE
    
    # اجرای دستور free برای بررسی وضعیت حافظه
    echo "Memory Usage:" >> $REPORT_FILE
    free -h >> $REPORT_FILE
    echo "" >> $REPORT_FILE
    
  3. اعمال مجوزهای لازم:
    chmod +x /path/to/save_memory_report.sh
    
  4. زمان‌بندی با cron:

    برای اجرای این اسکریپت هر روز در ساعت 4 صبح، به جدول cron بروید و خط زیر را وارد کنید:

    0 4 * * * /path/to/save_memory_report.sh
    

3. تحلیل بلندمدت با استفاده از گزارش‌ها

پس از ذخیره‌سازی گزارش‌ها در فایل‌های متنی به‌طور روزانه، می‌توانید این گزارش‌ها را برای تحلیل بلندمدت استفاده کنید. برای این کار، می‌توانید از ابزارهایی مانند grep, awk, یا sed برای استخراج اطلاعات خاص از گزارش‌ها استفاده کنید.

1. جستجو در گزارش‌ها:

اگر بخواهید فقط وضعیت فضای دیسک را از گزارش‌ها جستجو کنید، می‌توانید از دستور grep استفاده کنید:

grep "Disk Space Usage" /path/to/logs/* | grep "2025-02-04"

این دستور همه گزارش‌های مربوط به مصرف فضای دیسک را در تاریخ 2025-02-04 پیدا خواهد کرد.

2. تحلیل با استفاده از awk:

برای جمع‌آوری و تحلیل اطلاعات خاص از گزارش‌ها، می‌توانید از awk استفاده کنید. به‌عنوان مثال، برای جمع‌آوری مجموع فضای استفاده‌شده در همه گزارش‌ها:

awk '/Disk Space Usage/ {sum += $3} END {print sum}' /path/to/logs/*

این دستور مقدار فضای استفاده‌شده را از همه گزارش‌ها استخراج کرده و جمع کل آن را نمایش می‌دهد.


جمع بندی

ذخیره‌سازی گزارش‌ها در فایل‌های متنی یکی از روش‌های موثر برای نظارت بلندمدت بر سیستم است. با استفاده از ابزارهایی مانند df, du, و free و همچنین با کمک اسکریپت‌های زمان‌بندی‌شده با cron، می‌توانید به‌صورت خودکار گزارش‌های مهمی از وضعیت فضای دیسک، حافظه و دیگر منابع سیستم جمع‌آوری کرده و آن‌ها را برای تحلیل‌های آینده ذخیره کنید. این گزارش‌ها می‌توانند به شناسایی مشکلات و تصمیم‌گیری‌های بهتر در مدیریت سیستم کمک کنند.

 [/cdb_course_lesson][cdb_course_lesson title=”فصل 12. استفاده از ابزارهای گرافیکی برای نظارت بر سیستم فایل”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”GNOME Disks: بررسی نقاط اتصال و فضای دیسک” subtitle=”توضیحات کامل”]GNOME Disks (یا GNOME Disk Utility) یک ابزار گرافیکی ساده و کاربرپسند برای مدیریت دیسک‌ها و پارتیشن‌ها در سیستم‌های لینوکس است. این ابزار به شما اجازه می‌دهد تا وضعیت نقاط اتصال دیسک‌ها، فضای ذخیره‌سازی، پارتیشن‌بندی، و سلامت دیسک‌ها را به‌راحتی مشاهده و مدیریت کنید.

در این بخش، نحوه استفاده از GNOME Disks برای بررسی وضعیت فضای دیسک و نقاط اتصال را بررسی می‌کنیم.


1. باز کردن GNOME Disks

برای باز کردن GNOME Disks، می‌توانید از یکی از روش‌های زیر استفاده کنید:

  1. از طریق منوی اپلیکیشن‌های GNOME:
    • به منوی برنامه‌ها بروید و عبارت Disks را جستجو کنید.
    • روی آیکون Disks کلیک کنید تا برنامه باز شود.
  2. از طریق ترمینال:
    • دستور زیر را وارد کنید:
    gnome-disks
    

این دستور ابزار GNOME Disks را باز می‌کند.


2. رابط کاربری GNOME Disks

پس از باز کردن برنامه، شما با یک رابط گرافیکی مواجه خواهید شد که شامل اطلاعات زیر است:

  • فهرست دیسک‌ها: در سمت چپ پنجره، لیست تمامی دیسک‌ها و پارتیشن‌های متصل به سیستم نمایش داده می‌شود.
  • اطلاعات دیسک انتخاب‌شده: در سمت راست، اطلاعات مربوط به دیسک یا پارتیشن انتخاب‌شده شامل نام، اندازه، سیستم فایل، وضعیت سلامت، و فضای استفاده‌شده و آزاد نمایش داده می‌شود.

3. بررسی نقاط اتصال دیسک

برای بررسی نقاط اتصال دیسک در GNOME Disks، مراحل زیر را دنبال کنید:

  1. دیسک مورد نظر خود را از لیست سمت چپ انتخاب کنید.
  2. در بخش “Partition” یا “Volumes”، اطلاعات مربوط به پارتیشن‌ها و نقاط اتصال آن‌ها نمایش داده می‌شود.
    • Mounted: اگر یک پارتیشن متصل (mount) باشد، در این بخش وضعیت آن نمایش داده می‌شود. برای مثال، اگر پارتیشن به /dev/sda1 متصل شده باشد، در اینجا می‌توانید نقطه اتصال آن را مشاهده کنید (مثل / یا /home).
    • Unmounted: اگر پارتیشن متصل نباشد، عبارت “Unmounted” یا پیامی مشابه نمایش داده خواهد شد.
  3. برای مشاهده جزئیات بیشتر هر پارتیشن، روی آن کلیک کنید و اطلاعات مربوط به نقاط اتصال و وضعیت فضای دیسک را مشاهده کنید.

4. بررسی فضای دیسک

برای مشاهده فضای دیسک در GNOME Disks، مراحل زیر را انجام دهید:

  1. دیسک یا پارتیشن مورد نظر خود را انتخاب کنید.
  2. در سمت راست صفحه، شما می‌توانید جزئیات زیر را مشاهده کنید:
    • Total Size: اندازه کلی فضای دیسک یا پارتیشن.
    • Used: فضای استفاده‌شده.
    • Free: فضای آزاد.
    • Health: وضعیت سلامت دیسک یا پارتیشن.
  3. اگر بخواهید اطلاعات بیشتری از فضای دیسک مشاهده کنید، می‌توانید از دکمه‌های موجود برای formatting، mounting و unmounting پارتیشن‌ها استفاده کنید.

5. مشاهده اطلاعات اضافی با کلیک راست

برای هر پارتیشن یا دیسک، با کلیک راست می‌توانید دسترسی به گزینه‌های بیشتری داشته باشید:

  • Information: اطلاعات کلی درباره دیسک یا پارتیشن.
  • Edit Mount Options: تغییر گزینه‌های اتصال (برای مثال تغییر نحوه اتصال).
  • Format: فرمت کردن پارتیشن (برای پاک کردن داده‌ها).
  • Unmount: جدا کردن پارتیشن.
  • Benchmark: انجام آزمایش عملکرد دیسک برای مشاهده سرعت خواندن و نوشتن.

6. تحلیل سلامت دیسک

GNOME Disks امکان بررسی وضعیت سلامت دیسک‌ها را از طریق S.M.A.R.T. فراهم می‌کند. S.M.A.R.T. (Self-Monitoring, Analysis, and Reporting Technology) فناوری است که وضعیت سلامت دیسک‌های سخت را پیگیری می‌کند.

برای بررسی وضعیت سلامت دیسک:

  1. دیسک مورد نظر را انتخاب کنید.
  2. در سمت راست، در بخش Health، می‌توانید وضعیت سلامت دیسک را مشاهده کنید. اگر وضعیت آن “Good” باشد، دیسک سالم است.
  3. برای مشاهده جزئیات بیشتر، روی دکمه “View S.M.A.R.T. Data” کلیک کنید تا گزارش کامل سلامت دیسک را مشاهده کنید.

جمع بندی

ابزار GNOME Disks یک ابزار گرافیکی و کاربردی برای مدیریت دیسک‌ها و پارتیشن‌ها در لینوکس است. با استفاده از این ابزار می‌توانید به‌راحتی وضعیت نقاط اتصال دیسک‌ها، فضای استفاده‌شده و آزاد را مشاهده کنید و همچنین سلامت دیسک‌ها را بررسی کنید. این ابزار برای کاربرانی که به رابط گرافیکی علاقه‌مند هستند، بسیار مفید است و به‌طور ویژه برای نظارت بر وضعیت دیسک‌ها و مدیریت پارتیشن‌ها در سیستم‌های لینوکس طراحی شده است.

 [/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”KDiskFree: نمایش فضای دیسک در محیط گرافیکی” subtitle=”توضیحات کامل”]KDiskFree یک ابزار گرافیکی است که به‌طور ویژه در محیط دسکتاپ KDE برای نظارت و مدیریت فضای دیسک استفاده می‌شود. این ابزار امکان نمایش فضای استفاده‌شده و آزاد دیسک‌ها را در یک رابط کاربری ساده و گرافیکی فراهم می‌کند، که به کاربران این امکان را می‌دهد تا به‌راحتی فضای دیسک خود را بررسی و مدیریت کنند.

در این بخش، نحوه استفاده از KDiskFree برای مشاهده فضای دیسک در محیط گرافیکی را بررسی خواهیم کرد.


1. نصب KDiskFree

اگر KDiskFree روی سیستم شما نصب نیست، می‌توانید آن را با استفاده از ابزار مدیریت بسته‌ها نصب کنید. برای نصب آن در سیستم‌های مبتنی بر دبیان (مثل اوبونتو) یا ردهت (مثل فدورا)، از دستورات زیر استفاده کنید.

  • برای اوبونتو و دیگر توزیع‌های مبتنی بر دبیان:
    sudo apt update
    sudo apt install kdf
    
  • برای فدورا و دیگر توزیع‌های مبتنی بر ردهت:
    sudo dnf install kdf
    
  • برای آرچ لینوکس:
    sudo pacman -S kdf
    

2. باز کردن KDiskFree

پس از نصب KDiskFree، شما می‌توانید این ابزار را از منوی برنامه‌ها در دسکتاپ KDE پیدا کنید.

  1. روش اول: جستجو در منوی اپلیکیشن‌ها.
    • به منوی برنامه‌ها بروید و عبارت KDiskFree را جستجو کنید.
    • روی آیکون KDiskFree کلیک کنید تا برنامه باز شود.
  2. روش دوم: از طریق ترمینال.
    • دستور زیر را وارد کنید:
    kdf
    

این دستور ابزار KDiskFree را اجرا خواهد کرد.


3. رابط کاربری KDiskFree

هنگامی که KDiskFree را باز می‌کنید، پنجره‌ای با گرافیک ساده و کاربرپسند نمایش داده می‌شود. در این پنجره اطلاعات مربوط به دیسک‌ها و فضای استفاده‌شده و آزاد نمایش داده می‌شود.

  • لیست دیسک‌ها و پارتیشن‌ها: در قسمت بالای پنجره، فهرست دیسک‌ها و پارتیشن‌های متصل به سیستم به نمایش در می‌آید.
  • گراف فضای دیسک: برای هر دیسک یا پارتیشن، یک نمودار گرافیکی نمایش داده می‌شود که فضای استفاده‌شده و آزاد را نشان می‌دهد.
  • اطلاعات تکمیلی: در پایین پنجره، اطلاعات دقیق‌تر شامل اندازه کلی دیسک، فضای استفاده‌شده، فضای آزاد و درصد استفاده‌شده نمایش داده می‌شود.

4. ویژگی‌های مهم KDiskFree

  • نمایش فضای دیسک به‌صورت گرافیکی: فضای آزاد و استفاده‌شده در دیسک‌ها به‌صورت گرافیکی (دایره‌ای یا میله‌ای) نمایش داده می‌شود که برای کاربران به‌راحتی قابل فهم است.
  • اطلاعات دقیق دیسک‌ها: به‌جز نمای گرافیکی، اطلاعات دقیق درباره فضای کلی، فضای استفاده‌شده و فضای آزاد نیز در دسترس قرار دارد.
  • پشتیبانی از چندین دیسک و پارتیشن: اگر سیستم شما چندین دیسک یا پارتیشن داشته باشد، KDiskFree می‌تواند وضعیت همه آن‌ها را به‌طور همزمان نمایش دهد.
  • انتخاب و تغییر پارتیشن‌ها: می‌توانید با انتخاب هر پارتیشن، اطلاعات آن را مشاهده کرده و وضعیت فضای آن را به‌طور دقیق بررسی کنید.

5. استفاده از KDiskFree برای تحلیل فضای دیسک

برای بررسی وضعیت فضای دیسک در KDiskFree، مراحل زیر را دنبال کنید:

  1. انتخاب دیسک یا پارتیشن مورد نظر:
    • پس از باز کردن KDiskFree، لیست دیسک‌ها و پارتیشن‌ها در بالای پنجره نمایش داده می‌شود.
    • دیسک یا پارتیشن مورد نظر را انتخاب کنید تا اطلاعات آن در بخش گرافیکی و جزئیات آن نمایش داده شود.
  2. بررسی نمودار فضای دیسک:
    • در بخش گرافیکی، شما یک نمودار دایره‌ای یا میله‌ای خواهید دید که فضای استفاده‌شده و فضای آزاد را به نمایش می‌گذارد.
    • رنگ‌های مختلف نشان‌دهنده وضعیت‌های مختلف (مثلاً قرمز برای فضای استفاده‌شده و سبز برای فضای آزاد) هستند.
  3. مشاهده جزئیات بیشتر:
    • در پایین پنجره، اندازه کل دیسک، فضای استفاده‌شده و فضای آزاد به‌صورت عددی نمایش داده می‌شود.
    • علاوه بر این، درصد استفاده‌شده از فضای دیسک نیز نشان داده می‌شود که به شما کمک می‌کند تا وضعیت فعلی فضای دیسک را ارزیابی کنید.

6. مدیریت دیسک‌ها با KDiskFree

اگر بخواهید از KDiskFree برای مدیریت دیسک‌ها و پارتیشن‌ها استفاده کنید، می‌توانید با کلیک راست بر روی دیسک‌ها و پارتیشن‌ها دسترسی به گزینه‌های مختلف مانند Format, Mount, Unmount, و Resize داشته باشید.

  • Format: برای فرمت کردن پارتیشن‌ها.
  • Mount: برای اتصال پارتیشن‌ها به سیستم.
  • Unmount: برای جدا کردن پارتیشن.
  • Resize: برای تغییر اندازه پارتیشن.

این ویژگی‌ها امکان مدیریت بهتر دیسک‌ها و پارتیشن‌ها را فراهم می‌کند.


جمع بندی

KDiskFree یک ابزار گرافیکی بسیار مفید و ساده است که به شما کمک می‌کند تا وضعیت فضای دیسک و پارتیشن‌ها را به‌صورت بصری و دقیق مشاهده کنید. این ابزار در محیط دسکتاپ KDE بسیار کاربردی است و به شما این امکان را می‌دهد تا فضای دیسک را به‌راحتی مدیریت کنید و از وضعیت آن مطلع شوید. با استفاده از نمودارهای گرافیکی و اطلاعات دقیق، می‌توانید به‌طور مؤثری فضای دیسک خود را تحلیل کرده و مشکلات احتمالی را شناسایی کنید.

 [/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”پاسخ به سوالات فنی کاربران”][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”free” title=”پشتیبانی دائمی و در لحظه” subtitle=”توضیحات کامل”]ما در این دوره تمام تلاش خود را کرده‌ایم تا محتوایی جامع و کاربردی ارائه دهیم که شما را برای ورود به دنیای حرفه‌ای آماده کند. اما اگر در طول دوره یا پس از آن با سوالات فنی، چالش‌ها یا حتی مشکلاتی در اجرای مطالب آموزشی مواجه شدید، نگران نباشید!

  1. پرسش‌های شما، بخش مهمی از دوره است:
    هر سوال یا مشکلی که مطرح کنید، با دقت بررسی شده و پاسخ کامل و کاربردی برای آن ارائه می‌شود. علاوه بر این، سوالات و پاسخ‌های شما به دوره اضافه خواهند شد تا برای سایر کاربران نیز مفید باشد.
  2. پشتیبانی دائمی و در لحظه:
    تیم ما همواره آماده پاسخگویی به سوالات شماست. هدف ما این است که شما با خیالی آسوده بتوانید مهارت‌های خود را به کار بگیرید و پروژه‌های واقعی را با اعتماد به نفس کامل انجام دهید.
  3. آپدیت دائمی دوره:
    این دوره به طور مداوم به‌روزرسانی می‌شود تا همگام با نیازهای جدید و سوالات کاربران تکمیل‌تر و بهتر گردد. هر نکته جدید یا مشکل رایج، در نسخه‌های بعدی دوره قرار خواهد گرفت.

حرف آخر

با ما همراه باشید تا نه تنها به مشکلات شما پاسخ دهیم، بلکه در مسیر یادگیری و پیشرفت حرفه‌ای، شما را پشتیبانی کنیم. هدف ما این است که شما به یک متخصص حرفه‌ای و قابل‌اعتماد تبدیل شوید و بتوانید با اطمینان پروژه‌های واقعی را بپذیرید و انجام دهید.

📩 اگر سوالی دارید یا به مشکلی برخوردید، همین حالا مطرح کنید!
ما در کوتاه‌ترین زمان ممکن پاسخ شما را ارائه خواهیم داد. 🙌[/cdb_course_lesson][/cdb_course_lessons]

نقد و بررسی ها

نقد و بررسی وجود ندارد.

فقط مشتریانی که وارد سیستم شده اند و این محصول را خریداری کرده اند می توانند نظر بدهند.

سبد خرید

سبد خرید شما خالی است.

ورود به سایت