99fb7f0e82
- Created a new sitemap.xml file for better SEO. - Added a compressed version of the sitemap as sitemap.xml.gz. - Introduced extra.css for custom styles, including Persian font support (IRANSansX). - Defined font-face rules for regular and bold styles of IRANSansX. - Implemented various text styles and layout adjustments for better readability. - Enhanced Mermaid diagram styles to support Persian text rendering.
19 lines
2.3 KiB
Markdown
19 lines
2.3 KiB
Markdown
# تمرین ۷: پایپلاین خطاگیر
|
|
|
|
## صورت سؤال
|
|
در یک سیستم چند سرویس مختلف لاگهای خود را در دایرکتوری `~/logs` ذخیره میکنند. فایلهایی که با الگوی `service-*.log` نامگذاری شدهاند ممکن است پیامهای خطا داشته باشند. هدف شما ساخت یک پایپلاین است که اطلاعات زیر را استخراج کند:
|
|
|
|
1. همهٔ فایلهای مطابق الگو را بخوانید و فقط خطوطی که عبارت `ERROR` دارند فیلتر کنید.
|
|
2. تعداد کل پیامهای خطا را بشمارید و نتیجه را در فایلی به نام `error-count.txt` بنویسید.
|
|
3. همزمان باید همان خروجی فیلترشده روی صفحه نمایش داده شود تا بتوانید خطاها را مشاهده کنید.
|
|
4. برای اطمینان، پیامهای خطای فیلتر شده را نیز در فایلی به نام `errors-full.log` ذخیره کنید؛ درصورتی که فایل از قبل وجود داشته باشد باید به انتهای آن اضافه شود.
|
|
|
|
## شرایط
|
|
- فرض کنید ابزار `gzip` به صورت دورهای فایلها را فشرده میکند. لازم است پایپ شما فقط فایلهای متنی بدون فشردهسازی (پسوند `.log`) را پردازش کند.
|
|
- اگر دستور شما هنگام اجرا با خطایی مواجه شد، پیام خطا باید در فایلی با نام `pipeline-errors.log` ذخیره شود تا بعداً بررسی شود.
|
|
|
|
## راهنمایی
|
|
- برای جلوگیری از نمایش پیامهای خطا روی صفحه، از تغییر مسیر `2>` استفاده کنید.
|
|
- دستور `tee` میتواند خروجی را همزمان در فایل و ترمینال چاپ کند؛ برای افزودن به فایل از گزینهٔ `-a` استفاده کنید.
|
|
- ترکیب `cat`, `grep`, `wc -l`, `tee` و تغییر مسیر جریانها یک راهحل متداول برای چنین تمرینی است. هدف نهایی ساخت یک پایپلاین قابلاعتماد و قابلخواندن است.
|