دو نمونه از تفاوت سوییچهای f و F در دستور tail

تفاوت اول:

در زمان استفاده از سوییچ f همراه با دستور tail، در صورت عدم وجود فایل، دستور با خطا متوقف خواهد شد:

[root@ol6 ~]# tail -f alert
tail: cannot open `alert’ for reading: No such file or directory
[root@ol6 ~]#

در حالی که سوییچ F، تنها با نمایش پیغام خطا، در حالت انتظار باقی خواهد ماند:

[root@ol6 ~]# tail -F alert
tail: cannot open `alert’ for reading: No such file or directory
waiting…

تفاوت دوم:

سوییچ f قابلیت نمایش انلاین محتویات فایلها را در بعضی از شرایط ندارد.
مثال زیر را ببینید.
ابتدا به فایل alert، تاریخ جاری سیستم را اضافه کرده و با کمک دستور tail -f، به صورت انلاین، محتویات این فایل را مانیتور می کنیم:

[root@ol6 ~]# echo date»alert
[root@ol6 ~]# tail –f alert
Tue Apr 17 12:38:15 IRDT 2018

در همین حال، محتویات این فایل را با کمک دستور vi پاک می کنیم:

[root@ol6 ~]# vi alert
Tue Apr 17 12:39:04 IRDT 2018
:1d
ZZ

با انجام این کار، دستور tail -f متوجه این تغییر نخواهد شد و کماکان اطلاعات قبلی فایل را در حالت انتظار نمایش خواهد داد در صورتی که فایل alert فاقد محتواست:

[root@ol6 ~]# tail –f alert
Tue Apr 17 12:38:15 IRDT 2018

سوییچ F، این معایب را ندارد:

[root@ol6 ~]# tail -F alert
Tue Apr 17 12:44:04 IRDT 2018

[root@ol6 ~]# vi alert
Tue Apr 17 12:44:04 IRDT 2018
:1d
ZZ

[root@ol6 ~]# tail -F alert
Tue Apr 17 12:44:04 IRDT 2018
tail: alert’ has been replaced; following end of new file
waiting…

علاوه بر این قابلیت، این سوییچ اطلاعات اضافه شده از طریق ویرایشگر vi را هم به صورت انلاین نمایش می دهد:

[root@ol6 ~]# vi alert
i am usefzadeh!!!

[root@ol6 ~]# tail -F alert
Tue Apr 17 12:44:04 IRDT 2018
tail: alert’ has been replaced; following end of new file
i am usefzadeh!!!
waiting…

نتیجه انکه، سوییچ F سعی دارد تا در صورت تغییر inode یک فایل(به جهت تغییر نام یا حذف و ایجاد مجدد)، مجددا indoe جدید را پیدا کند پس این سوییچ می تواند در زمانهایی چون rotate شدن فایل لاگ، مفید واقع شود در صورتی که سوییچ f، بعد از عمل logrotate( به صورت copytruncate)، کماکان به indoe قدیمی فایل که به صورت ارشیو درامده است، اشاره خواهد کرد.

ارتباط با نویسنده مطلب:vahidusefzadeh@ کانال تخصصی اوراکل و لینوکس: OracleDB@

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.