فرض کنید برنامهای در یک سرور لینوکس 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
$ bash rotate.sh path/to/logs/dir
```
توجه کنید که علاوه بر فایلهای لاگ، ممکن است فایلها و پوشههای دیگری نیز در کنار `app.log` وجود داشته باشد که اسکریپت نباید در آنها تغییری ایجاد کند.
اسکریپت `rotate.sh` را Zip کنید و به عنوان پاسخ ارسال کنید. دقت کنید که اسکریپت باید مستقیماً در ریشه فایل Zip باشد (در هیچ پوشهای نباشد).
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.