نیاز به حل تمامی سوالات مسابقه نیست و از هر قسمت هر مقدار که می‌توانید حل کنید. توجه داشته باشید که سوالات الگوریتمی و پیاده‌سازی به صورت صفر و یکی تصحیح می‌شوند و دیگر سوالات نمره خواهند گرفت. لطفا فرم زیر را پر کنید. https://quera.ir/general_form/QU9jHL/

لینوکس، Log Rotation


فرض کنید برنامه‌ای در یک سرور لینوکس log های خود را در یک فایل به نام app.log می‌نویسد. برای این که حجم این فایل خیلی زیاد نشود، می‌خواهیم یک اسکریپت Bash برای rotate کردن فایل‌های لاگ به نام rotate.sh بنویسیم (تا log های هر روز در یک فایل جداگانه ذخیره شود) و سرور را طوری تنظیم کنیم که این اسکریپت هر نیمه‌شب یک بار اجرا شود.

یک وضعیت از فایل‌های پوشه log ها را در زیر می‌بینید. در انتهای فایل‌های rotate شده، یک عدد قرار میگیرد و هرچه این عدد بزرگ‌تر باشد، فایل قدیمی‌تر است. app.log لاگ‌های امروز را نشان می‌دهد، app.log.1 لاگ‌های دیروز را در خود دارد و به همین ترتیب.

app.log
app.log.1
app.log.2
unrelated-file-1.txt
unrelated-file-2.txt
Plain text

در صورت اجرای اسکریپت rotate.sh وضعیت پوشه باید به این صورت تغییر کند:

app.log
app.log.1
app.log.2
app.log.3
unrelated-file-1.txt
unrelated-file-2.txt
Plain text

فایل app.log.2 به app.log.3 تغییر نام داده، فایل app.log.1 به app.log.2 تغییر نام داده، فایل app.log به app.log.1 تغییر نام داده و یک فایل خالی به نام app.log ایجاد شده تا لاگ‌های جدید در آن نوشته شود.

اسکریپت rotate.sh را بنویسید که آدرس پوشه‌ای که app.log در آن قرار دارد را به عنوان آرگومان دریافت کند و عمل rotate را بر روی لاگ‌ها انجام دهد. مثلاً:

$ bash rotate.sh path/to/logs/dir
Bash

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

اسکریپت rotate.sh را Zip کنید و به عنوان پاسخ ارسال کنید. دقت کنید که اسکریپت باید مستقیماً در ریشه فایل Zip باشد (در هیچ پوشه‌ای نباشد).

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.