کار با فایلهای حجیم در لینوکس
ادمین های سیستم گاهی اوقات نیاز دارند تا با فایلهای پیکربندی بسیار حجیم، فایلهای متنی با چندین هزار خط متن، مستندات گسترده و فایلهای log دست و پنجه نرم کنند! کار با فایلهای بزرگ با چالش های خاص خود همراه است؛ گاهی اوقات نیاز داریم تا صرفاً محتوای آنها را صفحه به صفحه مشاهده کردی و گاهی هم می بایست محتویات آنها را آپدیت کنیم.
فرض کنیم که یک سیستم بانکی روی سیستم عامل گنو/لینوکس پیادهسازی شده است. در این سیستم، یک فایل لاگ گیری -گزارش گیری- وجود دارد که تمامی جزئیات تراکنش های دستگاههای خودپرداز را ثبت میکند؛ حال زمانی پیش میآید که ادمین سیستم نیاز دارد تا بخشهایی از این فایل را مشاهده و بررسی کند. در چنین مواقعی، باز کردن فایلی به این حجیمی -فرض کنیم که در هر ثانیه چندین هزار تراکنش انجام میشود- در یک ویرایشگر متن معمولی مثل gedit با چالش های خاص خود همراه است. به عبارت دیگر، در چنین مواقعی با کمبود حافظه ی رم مواجه خواهیم شد. در چنین مواقعی، با استفاده از ابزاری کاملاً بهینه تحت عنوان less میتوان فایلهایی به این بزرگی را صفحه به صفحه مشاهده کرد. برای مشاهده ی فایلهای بزرگ، یکی از دو کامند زیر را میتوان در ترمینال وارد ساخت:
$ less filename
و یا
$ cat filename | less
در چنین شرایطی، محتویات filename از طریق ابزار less به صورت صفحه به صفحه در معرض دیدمان قرار می گیرد که روشی بسیار بهینه و سریع برای کار با فایل های حجیم است.
آشنایی با ابزار head
دستور head به صورت پیشفرض ۱۰ خط اول یک فایل متنی را در معرض دیدمان قرار میدهد. فرض کنیم فایلی داریم تحت عنوان tmp که بیش از ۲۰ خط محتویات دارد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
حال دستور head tmp را در ترمینال وارد میکنیم:
1 2 3 4 5 6 7 8 9 10
اگر بخواهیم صرفاً ۱۳ خط اول نمایش داده شوند، دستور head -13 tmp را وارد کامند لاین میکنیم و خروجی زیر در معرض دیدمان قرار خواهد گرفت:h
1 2 3 4 5 6 7 8 9 10 11 12 13
آشنایی با ابزار tail
نقطه ی مقابل دستور head، دستوری است تحت عنوان tail که به صورت پیشفرض ۱۰ خط آخر یک فایل را در معرض دیدمان قرار میدهد. این دستور برای مشکل یابی فایلهای لاگ بسیار کاربردی است چرا که مستقیماً به سراغ آخر فایل لاگ و جایی که معمولاً لاگ مشکل ثبت شده است میرود.
برای روشنتر شدن کاربر دستور tail، فایل tmp که پیش از این ایجاد کردیم را مورد بررسی قرار میدهیم؛ دستور tail tmp را در ترمینال وارد میکنیم:
12 13 14 15 16 17 18 19 20 21
همانند دستور head، میتوان تعداد خطوطی که تمایل داریم چاپ شوند را به عنوان پارامتر ورودی دستور tail در نظر بگیریم؛ مثلاً اگر بخواهیم که فقط ۷ خط آخر یک فایل نمایش داده شوند، دستور tail -7 tmp را در ترمینال وارد میکنیم:
15 16 17 18 19 20 21
برخی فایلهای لاگ هستند که در لحظه در حال آپدیت شدن هستند؛ برای آن که بتوانیم به صورت لحظه یی تغییرات صورت گرفته روی فایل را مشاهده کنیم، میتوانیم از آپشنی تحت عنوان f- استفاده کنیم:
$ tail -f tmp
در دستور فوق، هر خط جدیدی که به فایل متنی tmp اضافه شود از طریق ترمینال قابل مشاهد است.