شما برای مطالعه این مقاله فقط 8 دقیقه وقت نیاز دارید

tail-command
دسته بندی : آموزش لینوکس

آموزش کار با دستور Tail در لینوکس همراه با مثال های عملی

4.3/5 - (3 امتیاز)

تا حالا در شرایطی قرار گرفته اید که نیاز داشته باشید انتهای یک فایل را به صورت بلادرنگ (real-time) مانیتور کنید یا اینکه چند خط آخر یک فایل لاگ را به سرعت بررسی کنید؟ اینجاست که دستور tail در لینوکس به کمک شما می آید! 

دستور tail یکی از ابزارهای قدرتمند لینوکس است که کاربران به کمک آن می توانند بخش های انتهایی یک یا چند فایل را مشاهده کنند. از کاربردهای اصلی این دستور می توان به بررسی لاگ فایل ها، مانیتور اکتیویتی های سیستم یا تحلیل داده ها به صورت بلادرنگ اشاره کرد.

اگر دوست دارید اطلاعات بیشتری در مورد سینتکس ها و نحوه استفاده از دستور tail در لینوکس به دست بیاورید، با ادامه مقاله همراه باشید چون قرار است یک آموزش کامل و جامع در مورد این دستور پرکاربرد در اختیار شما قرار دهیم.

همچنین اگر علاقمند به کار کردن با دستورات لینوکس هستید و دوست دارید یک سرور با سیستم عامل لینوکس داشته باشید که فضای لازم برای بهره مندی از قدرت لینوکس در پروژه های خود داشته باشید، توصیه می کنیم که قدم اول را با خرید سرور مجازی لینوکس بردارید. با این کار در ازای پرداخت یک هزینه مقرون به صرفه، به فضایی که آرزویش را دارید دست پیدا خواهید کرد و محدودیت ها را در عرض سه سوت کنار خواهید گذاشت.

آشنایی با سینتکس دستور tail

این دستور آپشن های زیادی دارد که با استفاده از آنها می توانید خروجی را به شکل دلخواه خود در بیاورید ولی در حالت کلی سینتکس دستور tail به صورت زیر است:

tail [OPTION]... [FILE]...

کاربرد عمومی و اصلی این دستور به صورت زیر است:

tail filename

دستور بالا به طور پیش فرض ۱۰ خط آخر فایل موردنظر را در خروجی به شما نشان می دهد. مثلا اگر بخواهید ۱۰ خط آخر فایل مربوط به لیست دانشجویان را ببینید باید از دستور tail به صورت زیر استفاده کنید:

tail students.txt

همانطور که گفتیم این دستور آپشن های دیگری هم دارد که می توانید به دستور اضافه کنید تا رفتار دستور را متناسب با نیازهای خود سفارشی سازی کنید. در ادامه به چند مورد از رایج ترین آنها اشاره می کنیم:

n: اگر حالت پیش فرض دستور tail برایتان کارساز نیست و می خواهید تعداد خطوط بیشتر یا کمتر از ۱۰ را در خروجی ببینید می توانید از این آپشن استفاده کنید. 

c: با استفاده از این آپشن می توانید تعداد بایت ها موردنظر برای نمایش از انتهای فایل را مشخص کنید. مثلاً، برای اینکه ۱۰۰ بایت آخر فایل students را ببینید، باید دستور tail را به صورت زیر اجرا کنید:

tail -c 100  students.txt

q: این آپشن هدرهای مربوط به فایل ها را نادیده می گیرد. به این صورت که اگر با چند فایل سروکار دارید و دوست ندارید اسم فایل ها را هم در خروجی ببینید، می توانید از این آپشن استفاده کنید.

v: این آپشن هم به صورت برعکس q عمل می کند و اگر می خواهید اسم هدرها یا همان اسم فایل ها را در خروجی ببینید باید این آپشن را هم در دستور لحاظ کنید:

f: با استفاده از این آپشن می توانید نحوه رشد فایل ها را نظارت کنید. به این صورت که با اضافه شدن خطوط جدید، ۱۰ خط آخری که قرار است به عنوان خروجی ظاهر شود، به روز می شود. دستور tail با آپشن f تا زمانی به اجرای خود ادامه می دهد که شما آن را متوقف کنید. پس اگر می خواهید ۱۰ خط آخر فایل های لاگ را به صورت کاملا آپدیت و به روز شده ببینید بهتر است از این آپشن کمک بگیرید.

s: موقع استفاده از آپشن f اگر نیاز دارید که بین آپدیت شدن خروجی ها فاصله بیندازید می توانید از آپشن s استفاده کنید. 

آپشن های دیگری هم هستند که در صورت نیاز می توانید از آنها کمک بگیرید تا رفتار دستور tail کاملاً با نیازهای شما سازگار باشد. برای دستور به آپشن های این دستور می توانید از دستورات زیر کمک بگیرید:

man tail
tail --help

نحوه استفاده از دستور tail در لینوکس

برای آشنایی با نحوه استفاده از این دستور بهتر است با مثال جلو برویم تا متوجه شوید که چگونه و در چه مواقعی می توانید از دستور tail و آپشن های آن استفاده کنید:

نمایش خطوط آخر یک فایل

اگر تعداد این خطوط برایتان مهم است و نمی خواهید مطابق با پیش فرض ها جلو بروید، می توانید از آپشن n استفاده کنید. آپشن n این امکان را می دهد که تعداد خطوط را خودتان مشخص کنید. به عنوان مثال اگر می خواهید ۵ خط آخر یک فایل را ببینید، دستور tail را به صورت زیر اجرا کنید:

tail -n 5 filename

نمایش بایت های آخر یک فایل

اگر می خواهید به جای خط با واحد بایت یا همان کاراکتر جلو بروید و تعداد بایت اخیر یک فایل را مشخص کرده و به عنوان خروجی ببینید می توانید از آپشن c استفاده کنید.

به عنوان مثال برای مشاهده ۲۴ کاراکتر آخر فایل موردنظر، باید دستور tail را به صورت زیر اجرا کنید:

tail -c 24 debtors.txt

نمایش خطوط آخر یک فایل به صورت بلادرنگ

بررسی گزارشات لاگ فایل به صورت بلادرنگ یکی از اصلی ترین کاربردهای دستور tail است که با اضافه شدن آپشن f شکل بهینه تری برای عیب یابی مشکلات یا ردیابی فعالیت های سیستم پیدا می کند.

اگر یک خروجی ثابت برایتان کارساز نیست و دوست دارید که نحوه رشد یا آپدیت شدن خطوط آخر یک فایل را به صورت real time ببینید. باید از آپشن f استفاده کنید.

tail -f logfile

این دستور تا زمانی که شما اجرای آن را با فشردن دکمه ترکیبی Ctrl+ c متوقف نکرده اید به نمایش خطوط جدید و آپدیت شده ادامه می دهد بدون اینکه نیازی به اجرای مجدد دستور tail باشد. 

اگر می خواهید بین مثلاً هر ۱۰ خروجی آپدیت شده و بلادرنگ فاصله بیندازید تا نظارت برایتان راحت تر باشد می توانید آپشن s را هم به دستور بالا اضافه کنید و مدت زمانی که می خواهید را بر حسب ثانیه به دستور اضافه کنید. مثلاً برای فاصله هایی به اندازه ۳ ثانیه، دستور زیر را اجرا کنید:

ٖtail -f -s 3 logfile

استفاده از دستور tail برای چند فایل

دستور tail این امکان را به شما می دهد که آخرین خطوط چند فایل را با هم و به صورت همزمان ببینید. برای این کار کافیست اسم فایل ها را به عنوان آرگومان دستور وارد کنید:

tail file1.txt file2.txt file3.txt

نمایش اخرین خطوط چند فایلاین دستور ۱۰ خط آخر هر کدام از این فایل ها را نشان می دهد و خروجی را با اسم فایل ها تفکیک می کند. اگر خواستید می توانید آپشن های دیگری را هم به آن اضافه کنید، این آپشن ها برای خروجی همه فایل ها لحاظ می شوند.

کلیک کنید  نحوه پاک کردن تاریخچه (History) دستورات در لینوکس

در صورت نیاز می توانید از آپشن q برای ادغام خروجی ها استفاده کنید و کاری کنید که اسم فایل ها در خروجی نمایش داده نشود.ادغام خروجی چند فایل

ترکیب دستور tail با دستورات دیگر

زیبایی دستور tail در همین سازگاری آن است. وقتی بتوانید بین این دستور و دستورات دیگر ارتباط برقرار کنید، صد در صد می توانید کارهای خود را سرعت عمل بیشتری انجام دهید. به این صورت که می توانید دستور tail را به دستور دیگری وصل یا به اصطلاح pip کنید و از خروجی دستورات دیگر به عنوان ورودی دستور tail یا (برعکس) استفاده کنید.

به عنوان مثال، اگر می خواهید دستور ls را اجرا کنید منتها تعداد خطوط خروجی را خودتان مشخص کنید می توانید از دستور زیر استفاده کنید:

ls -l | tail -n 5

پیپ داده های ورودی از ls به دستور tail

یا در صورت نیاز می توانید از دستور grep برای فیلتر کردن بعضی از خطوط استفاده کنید تا آن خطوط در خروجی دستور tail ظاهر نشوند. مثلاً برای فیلتر کردن خطوطی که شامل کلمه “force” هستند می توانید از دستور زیر استفاده کنید:

tail filename | grep "force"

فیلتر کردن خروجی با دستور tail

با اینکه دستور grep هم می تواند در این فیلتر سازی به شما کمک کند ولی خود دستور tail راه هایی را برای فیلتر کردن خروجی ارائه می دهد. مثلاً آپشن f به طور مداوم فایل را بررسی می کند تا ببیند سایز آن تغییر کرده است یا نه! اگر سایز آن تغییر کرده باشد، فایل را دوباره باز می کند و داده های جدید را چاپ می کند. حالا اگر بیاید از آپشن max-unchanged-stats استفاده کنید و آن را با n مقداردهی کنید، در واقع به آپشن f دستور می دهید که حتی اگر اندازه یک فایل تغییر نکرده باشد، بعد از هر n بار بررسی خطوط آخر فایل موردنظر را به شما نشان دهد. 

tail --max-unchanged-stats=2 filename

استفاده از دستور tail با حروف عام یا wildcard ها

وقتی قرار است با چند فایل کار کنید، استفاده از wildcard ها و تعیین یک الگو که با چند فایل مطابقت داشته باشد می توانید کارها را برای خود راحت تر کنید. به عنوان مثال، برای نمایش  ۵ خط آخر همه فایل های که در دایرکتوری فعلی خط فرمان هستند و پسوند log. دارند می توانید از دستور زیر استفاده کنید:

tail -n 5 *.log

چند آپشن پیشرفته تر برای کاربردهای خاص دستور tail

با این که آپشن های بالا به راحتی می توانند شما را به هدفتان برسانند ولی دستور tail آپشن های پیشرفته دیگری هم دارد که برای موارد خاصی استفاده می شوند. در این بخش به چند مورد از آنها اشاره می کنیم:

F: این آپشن مشابه آپشن f است منتها با این تفاوت که آپشن F از عهده کنترل شرایط خاصی مثل حذف فایل ساخت مجدد فایل برمی آید.

pid: آپشن pid– این امکان را به شما می دهد که یک فرآیند خاص را مشخص کنید تا با خاتمه یافتن آن فرآیند، اجرای دستور tail هم متوقف شود.

n +NUM: با استفاده از این سینتکس می توانید نقطه یا خط شروع را هم خودتان مشخص کنید و خروجی از آن نقطه به بعد برایتان نمایش داده شود.

b: با استفاده از آپشن b می توانید به جای خطوط، تعداد بلوک خروجی را مشخص کنید. 

با این آپشن ها می توانید با کنترل و انعطاف بیشتری از دستور tail استفاده کنید و تعامل بهتری با این دستور داشته باشید. 

مثال های کاربردی از دستور tail

دیگر وقتْ وقتِ عمل است و بیایید با چند مثال عالی ببینیم که در سناریوهای واقعی چگونه می توان از این دستور کمک گرفت. 

مثال ۱) نظارت فایل لاگ دسترسی آچاچی به صورت real time

 tail -f /var/log/apache/access.log

مثال ۲) نمایش ۲۰ خط آخر یک فایل لاگ بزرگ

 tail -n 20 large_log_file.txt

مثال ۳) ترکیب دستور tail و grep برای فیلتر کردن پیام های خطا از یک فایل لاگ

 tail error.log | grep "ERROR"

مثال ۴) مشاهده آخرین خطوط اصلاح شده یک فایل ( با آپدیت مداوم)

tail -f --max-unchanged-stats=2 file.txt

می بینید که آزادی عملی که با این دستور دارید خیلی زیاد است و با خیال راحت می توانید این مثال ها را تست کنید و مثال های دیگر را هم مطابق با نیاز خود طراحی و امتحان کنید تا متوجه تطبیق پذیری دستور tail شوید.

جایگزین های دستور tail

با اینکه دستور tail قدرت خود را اثبات کرده است ولی چند گزینه دیگر هم وجود دارد که بسته به نیازهای خود می توانید از آنها هم استفاده کنید. head ،sed و awk از بهترین جایگزین های دستور tail هستند که هر کدام، ویژگی ها و قابلیت های منحصر بفرد خود را دارند و می توانند از عهده هندل کردن درخواست های شما بر بیایند. اگر خواستید می توانید همه این دستورات را بررسی کنید و ببینید که کدام یک از آنها پتانسیل لازم برای برآورده کردن نیازهای شما را دارند. 

کلام آخر

دستور tail یک ابزار مفید برای کار با فایل های لینوکس است که نظارت و بررسی فایل ها مخصوصاً فایل های لاگ را برای ادمین های سیستم راحت تر کرده است. با این دستور می توانید چند خط آخر فایل موردنظر را مشاهده کنید یا آپشن ها و دستورات دیگری را با آن ترکیب کرده و عملکرد این دستور را ارتقا دهید. در کل، دستور tail یک راه حل بسیار انعطاف پذیر و کارآمد است که با یادگیری کامل آن می توانید بهره وری خود را افزایش داده و تسک های پیچیده و نظارت فایل ها را خیلی راحت تر جلو ببرید.

سوالات متداول:

برای این کار کافیست به ترمینال بروید و کلید ترکیبی Ctrl + C را فشار دهید.

نه، این دستور با هر نوع فایلی سازگار است و بدون توجه به فرمت فایل، آخرین بخش آن را به شما نشان می دهد.

بله، این دستور برای فایل های فشرده مثل gz و zip هم قابل استفاده است ولی اول باید فایل را از حالت فشرده در بیاورید و بعد، از دستور tail استفاده کنید.

مطالب مشابهی که شاید علاقمند باشید

من زهرا پیرجانی دانشجوی رشته نرم افزار هستم. علاقه ای که به یادگیری مطالب جدید دارم باعث شد که انگیزم برای فعالیت در حوزه تولیدمحتوا بیشتر شود. تمام تلاشم این است که با درک کامل موضوع، محتوایی ساده و کامل تهیه کنم که برای همه علاقمندان مفید و کاربردی باشد. یادگیری مطالب جدید و آموزش اونها به بقیه، بهترین کاری هست که می توانم برای رشد خودم و همچنین کمک به رشد علاقمندان به مباحث مورنظر انجام بدم.

دیدگاه های شما

برای دریافت این مقاله لطفا ایمیلتان را وارد کنید

می توانید مقاله را دانلود کنید یا پرینت بگیرید