
فرض کنید برنامه ای در یک سرور لینوکس 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
در صورت اجرای اسکریپت rotate.sh وضعیت پوشه باید به این صورت تغییر کند:
app.log
app.log.1
app.log.2
app.log.3
unrelated-file-1.txt
unrelated-file-2.txt
فایل 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
Copy
توجه کنید که علاوه بر فایلهای لاگ، ممکن است فایل ها و پوشه های دیگری نیز در کنار app.log وجود داشته باشد که اسکریپت نباید در آنها تغییری ایجاد کند.
اسکریپت rotate.sh را Zip کنید و به عنوان پاسخ ارسال کنید. دقت کنید که اسکریپت باید مستقیماً در ریشه فایل Zip باشد (در هیچ پوشه ای نباشد).
مرکز یادگیری سایت تبیان


