تمرین ۷: پایپلاین خطاگیر
صورت سؤال
در یک سیستم چند سرویس مختلف لاگهای خود را در دایرکتوری ~/logs ذخیره میکنند. فایلهایی که با الگوی service-*.log نامگذاری شدهاند ممکن است پیامهای خطا داشته باشند. هدف شما ساخت یک پایپلاین است که اطلاعات زیر را استخراج کند:
- همهٔ فایلهای مطابق الگو را بخوانید و فقط خطوطی که عبارت
ERRORدارند فیلتر کنید. - تعداد کل پیامهای خطا را بشمارید و نتیجه را در فایلی به نام
error-count.txtبنویسید. - همزمان باید همان خروجی فیلترشده روی صفحه نمایش داده شود تا بتوانید خطاها را مشاهده کنید.
- برای اطمینان، پیامهای خطای فیلتر شده را نیز در فایلی به نام
errors-full.logذخیره کنید؛ درصورتی که فایل از قبل وجود داشته باشد باید به انتهای آن اضافه شود.
شرایط
- فرض کنید ابزار
gzipبه صورت دورهای فایلها را فشرده میکند. لازم است پایپ شما فقط فایلهای متنی بدون فشردهسازی (پسوند.log) را پردازش کند. - اگر دستور شما هنگام اجرا با خطایی مواجه شد، پیام خطا باید در فایلی با نام
pipeline-errors.logذخیره شود تا بعداً بررسی شود.
راهنمایی
- برای جلوگیری از نمایش پیامهای خطا روی صفحه، از تغییر مسیر
2>استفاده کنید. - دستور
teeمیتواند خروجی را همزمان در فایل و ترمینال چاپ کند؛ برای افزودن به فایل از گزینهٔ-aاستفاده کنید. - ترکیب
cat,grep,wc -l,teeو تغییر مسیر جریانها یک راهحل متداول برای چنین تمرینی است. هدف نهایی ساخت یک پایپلاین قابلاعتماد و قابلخواندن است.