MRahmad 86 مدیر سایت گزارش دادن ارسال شده در مهر 10، 2021 نحوه کار با لاگ ها در لینوکس اگر مدت زمان زیادی را در محیط لینوکس سپری میکنید ضرورت دارد با محل لاگ فایلها و چگونگی مدیریت آنها آشنا باشید. وظیفه لاگ فایها کمک برای عیب یابی مشکلات سیستم میباشد. هنگامی که سیستم شما با مشکل مواجه میشود و یا کند کار میکند باید محتوای فایل های لاگ را بررسی نمایید. بررسی لاگ فایل ها به شما کمک خواهد کرد محل مشکل را یافته و آن را برطرف نمایید. در سیستمهای لینوکسی فایلهای لاگ مختلفی وجود دارد که برخی از آنها عبارتند از: لاگهای سیستم، کرنل، سیستم مدیریت بستهها، پروسه بوت، آپاچی، MySQL و ... . اکثر فایلهای لاگ در مکان var/log/ قرار دارند. زمانی که مشکلی در سیستم عامل یا سرویسها وجود دارد این لاگها به شما کمک خواهند کرد. خوشبختانه روشهای مختلفی برای دیدن فایل های لاگ سیستم شما وجود دارد که از طریق خط فرمان اجرا میشوند. نکته 1: ما فرض کردهایم که دسترسی روت به سرور خود دارید ، در غیر اینصورت دستورات را با sudo آغاز نمایید. با آموزش کار با لاگ ها در لینوکس همراه ما باشید. کار با لاگ ها در لینوکس محل لاگ فایل ها تقریبا تمام لاگ فایلها بصورت پیشفرض در دایرکتوری /var/log/ و دایرکتوریهای زیرشاخه آن قرار دارند. برای وارد شدن به دایرکتوری log میتوانید از دستور زیر استفاده نمایید. cd /var/log حال برای دیدن محتوای دایرکتوری log میتوانید از دستور زیر استفاده نمایید. ls -la خروجی باید مشابه تصویر زیر باشد. برای مثال دایرکتوری با نام Cron را میبینید که لاگهای سرویس Crontab داخل این دایرکتوری قرار میگیرند. خواندن لاگ فایلها دستورات مختلفی برای خواندن لاگ فایلها وجود دارد و هر کدام از این دستورات کاربرد و اهداف خاصی دارند. دستور cat برای باز کردن یک فایل لاگ میتوانید از دستور cat استفاده نمایید. با استفاده از این دستور محتویات فایل yum.log را با هم میبینیم. cat yum.log با استفاده از دستور cat میتوانید تمامی فایل های لاگ را بصورت استاتیک ببینید. دستور tail دستور مفید دیگر برای دیدن لاگ فایلها دستور tail میباشد. اگر این دستور را بدون هیچ پرچمی استفاده نمایید 10 خط آخر فایل شما را نمایش خواهد داد. tail yum.log نکته 2: برای دیدن پرچمهای دستور tail میتوانید از دستور زیر استفاده نمایید. tail --help شکل استفاده از این دستور بصورت زیر میباشد. tail [FLAG] [FILENAME] اگر میخواهید 100 خط آخر فایل خود را ببینید باید دستور زیر را اجرا نمایید. tail -n 100 yourlog.log مهم ترین پرچم این دستور پرچم f- میباشد. که این پرچم اجازه میدهد محتوای فایل خود را بصورت زنده ببینید. یعنی اگر محتوای جدید به فایل اضافه میشود در خروجی دستور این محتوای جدید نیز نمایش داده شود. tail -f yourlog.log دستورات more و less با استفاده از دستور more میتوانید فایل لاگ خود را بصورت صفحه به صفحه ببینید. برای رفتن به صفحه بعد باید از کلید space استفاده نمایید. more yourlog.log دستور less نیز تقریبا مشابه دستور more میباشد فقط با تفاوتهای زیر: - میتوانید با استفاده از کلیدهای مکان نما بین خظوط فایل حرکت کنید. - میتوانید با استفاده از کلمه /keyword به جستجوی عبارتی بپردازید. - از دستورات ویرایشگر vi استفاده مینماید. less yourlog.log دستور head این دستور 10 خط اول فایل شما را نمایش خواهد داد. head yourlog.log ترکیب دستور grep با سایر دستورات برای جستجوی محتوای خاص در داخل لاگ فایل خود میتوانید دستور grep را اضافه نمایید. مثلا برای یافتن IP معین یا پیام خطا داخل فایل لاگ خود میتوانید از دستورات زیر استفاده نمایید. cat yourlog.log | grep IP tail -f yourlog.log | grep errorname دستور sort برای مرتب سازی خروچی فایل لاگ خود میتوانید از دستور sort استفاده نمایید. این دستور دیتای شما را با معیارهای مختلف مرتب سازی میکند. برای مرتب سازی فایل خود با حروف الفبا میتوانید از دستور زیر استفاده نمایید. sort yourlog.log اگر پرچم r- را به دستور خود اضافه نمایید دیتا برحسب حروف الفبا اما بصورت معکوس مرتب خواهد شد. sort -r yourlog.log پرچم n- در صورتی که دیتای شما دارای عدد برای هر عنصر باشد دیتا را از کمترین عدد به بزرگ ترین عدد مرتب خواهد کرد. sort -n prices.log نکته 3: برای دیدن تمامی پرچم های دستور sort میتوانید از دستور زیر استفاده نمایید. sort --help دستور awk این دستور دستور قدرتمندی برای پردازش و آنالیز فایلهای متنی بخصوص فایلهای حاوی ستون و ردیف میباشد. شکل استفاده از این دستور بصورت زیر میباشد. awk 'pattern {action}' input-file یعنی هر خط از فایل ورودی را گرفته و اگر خط مورد نظر دارای الگوی مشخص شده باشد، عمل تعیین شده در بخش action را روی خط اعمال نموده و خط حاصل را نمایش میدهد. اگر الگوی مشخص شده در قسمت pattern را حذف نماییم عمل مشخص شده در قسمت action روی تمامی خطوط اعمال میشود. برای مثال: awk '{ print $5 }' yourlog.log این دستور عنصر ستون 5ام هر خط را گرفته و آن را مثل یک خط در shell شما چاپ میکند. awk '/30/ { print $3 }' yourlog.log در دستور فوق رشته بین دو کاراکتر "/" بیان میکند که اگر خط دارای رشته "30" بود سیستم عنصر موجود در ستون سوم آن خط را چاپ میکند. نکته 4: دستور awk میتواند کارهای پیچیده تری نیز انجام دهد. برای یادگیری بیشتر در مورد این دستور میتوانید با استفاده از دستور زیر صفحه راهنمای آن را ببینید. man awk دستور uniq این دستور برای حذف یا تشخیص عناصر تکراری در فایلها کاربرد دارد. در ادامه به بررسی برخی از پرچمهای پرکاربرد این دستور میپردازیم. شکل استفاده از دستور uniq بصورت زیر میباشد. uniq [-options] هرگاه این دستور بدون هیچ آپشنی استفاده شود خطوط تکراری را حذف کرده و خروجی را نمایش میدهد. uniq yourlog.log آپشن c- برای شمارش تعداد تکرار خطوط در یک فایل استفاده میشود. uniq -c yourlog.log آپشن u- نیز فقط خطوط یکتا را نمایش خواهد داد. uniq -u yourlog.log دستورات ترکیبی مفید برای ایجاد دستورات مفید میتوانید دستورات شرح داده شده در بخش قبلی را با هم ترکیب کنید. در ادامه تعدادی از این دستورات را آوردهایم. cat yourlog.log |awk -F" " '{print $5}' این دستور ستون 5 امی که با کاراکتر " " از هم جدا شده اند را نمایش خواهد داد. cat /var/log/yourlog.log | awk -F" " '{print $1}' | uniq -c | sort -n این دستور ستون اولی را نمایش خواهد داد که با کاراکتر " " از هم متمایز شدهاند و عناصر ستون را از کمترین به بزرگ ترین بر اساس تعداد تکرار آنها مرتب سازی میکند. فایل های لاگ رایج لینوکس و کاربرد آنها var/log/messages/ : پیام های سیستمی var/log/auth.log/ : لاگ های مربوط به اهراز هویت var/log/kern.log/ : لاگ های کرنل var/log/maillog/ : لاگ های میل سرور var/log/httpd/ : دایرکتوری لاگ وب سرور آپاچی var/log/boot.log/: لاگ های بوت سیستم. var/log/mysqld.log/ : فایل های لاگ سرور دیتابیس MySQL var/log/utmp یا /var/log/wtmp/ : ثبت لاگین ها در این آموزش به بررسی روش های خواندن محتویات لاگ فایل ها پرداختیم. اما پس از خواندن لاگ فایل ها مهم ترین امر نحوه سازمان دهی آنها میباشد. اگر از روش مدیریت خاصی برای لاگ فایل ها استفاده نکنید پس از مدت زمانی با مشکلات زیادی مواجه خواهید شد. در ادامه این آموزش به معرفی دو روش معروف و موثر از روش های مدیریت لاگ ها خواهیم پرداخت. چرخش لاگ ها ابراز Logrotate میتواند بطور مرتب فایلهای لاگ شما را حذف، فشرده سازی و چرخش نماید. منظور از چرخش به این صورت است که وقتی موعد زمانیِ مدیریت لاگها فرا می رسد (مثلاً هر هفته یا هر ماه یک بار انجام میگیرد)، فایل های لاگ فشرده میشوند و در مکانی ذخیره میگردد، حالا فایلهای قدیمی حذف شده و به جای آن یک فایل تازه ساخته میشود. حالا اینکه چه تعداد از این بایگانیِ لاگهای فشرده شده روی سرور بماند، بستگی به تنظیماتی دارد که درون فایل کانفیگ Logrotate تعیین شده است. میتوانید عمل چرخش را روزانه، ماهانه یا ... تنظیم نمایید. بصورت پیشفرض ابزار Logrotate بصورت cron job روزانه اجرا میشود. سرور syslog syslog سرور مانیتورینگ لاگ مرکزی در یک شبکه فراهم میکند. این شبکه میتواند شامل انواع مختلفی از دستگاهها مانند سرورهای Linux و Windows و روترها، سوییچها و یا هر میزبان دیگری باشد که تمامی این دستگاهها میتوانند لاگهای خود را از طریق شبکه به سرور لاگ ارسال نمایند. با نصب سرور syslog میتوانید لاگهای میزبانها و دستگاههای مختلف را از یکدیگر فیلتر کرده و در یک مکان جدا قرار دهید. با اینکار مدیریت لاگها آسان تر خواهد شد. امیدوارم آموزش کار با لاگ ها در لینوکس برای شما مفید بوده باشد ... لطفاً جهت حمایت از کمیاب اسکریپت مقالات منتشر شده در انجمن و دیگر نقاط وب سایت را با ذکر آدرس بازنشر دهید. با تشکر. نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر