یک اسکریپت Bash بنویسید که به‌صورت دوره‌ای (مثلاً هر 60 ثانیه) درصد استفاده CPU، میزان استفاده حافظه، فضای دیسک پارتیشن ریشه و یک timestamp را استخراج و به‌صورت الحاقی (append) در یک فایل لاگ به فرمت CSV ذخیره کند.

6.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:15

0.0

برای حل این مسئله از دستورات استاندارد لینوکس در یک حلقهٔ بی‌نهایت یا با استفاده از کرون استفاده کنید: برای timestamp از date +"%Y-%m-%d %H:%M:%S"، برای CPU می‌توانید از top -b -n1 یا grep 'cpu ' /proc/stat و محاسبهٔ درصد یا از mpstat/iostat در صورت نصب استفاده کنید، برای حافظه از free -m و برای فضای دیسک از df -h / و استخراج ستون مربوطه با awk یا cut. خروجی را به صورت CSV مانند "timestamp, cpu%, mem_used_MB, disk_used%" با >> به فایل اضافه کنید. نکات: ابتدا هر فرمان را جداگانه تست کنید تا مقادیر دقیق استخراج شوند، اسکریپت را قابل اجرا کنید (chmod +x)، از sleep برای فاصله زمانی یا از cron برای اجراهای زمان‌بندی‌شده استفاده کنید و برای جلوگیری از رشد بی‌رویه لاگ از روش‌هایی مثل چرخش لاگ (logrotate) یا افزودن تاریخ به نام فایل استفاده کنید.

توسط پژوهشگر در 221 روز قبل ساعت 01:15
دسته بندی ها: Bash Scripting Bash Scripting for beginner
arman در 221 روز قبل ساعت 13:56

ایدهٔ خوبی است؛ با استفاده از date، free و df می‌توان یک لاگ CSV پیوسته ساخت. برای محاسبهٔ دقیق درصد CPU بهتر است از /proc/stat یا ابزارهایی مانند mpstat استفاده کرده و تفاوت دو نمونه را بگیریم تا مقدار دقیق به دست آید؛ استفاده از top -b -n1 معمولاً دقیق نیست. برای جلوگیری از رشد بی‌رویهٔ لاگ، به‌جای append تنها به یک فایل، از گزینه‌های چرخش لاگ یا نام‌گذاری بر حسب تاریخ استفاده کنید. همچنین قبل از اجرای وابسته به cron یا sleep به‌درستی هر فرمان را تست کنید و مجوز اجرا بدهید (chmod +x).

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری