10 مورد کاربردی از دستور lsof

10 مورد کاربردی از دستور lsof

در این مقاله سعی دارم تا نکات کاربردی از دستور lsof را برایتان توضیح دهم .

میدانیم که دستور lsof به معنی “List Open File”  میباشد . با استفاده از این دستور میتوانیم بفهمیم که

چه فرمان یا برنامه ای توسط چه فایلی در حال استفاده می باشد .

یا بعبارتی این پردازش یا برنامه از چه فایلی استفاده میکند .

میدانیم که در Linux/Unix همه چیز بصورت یک فایل است یعنی pipe ها و socket ها و directory ها و device ها و

کلیه موارد دیگر فایل هستند. یکی از موارد بکارگیری فرمان lsof در زمانی است که میخواهیم device یا دیسکی را

umount نماییم اما سیستم عامل به ما خطا میدهد که یکسری فایل در این دیسک درگیر هستند و الان اجازه umount  ندارید .

با استفاده از فرمان lsof ، قادر به شناسایی فایلهای درگیر یک برنامه یا دیسک یا پردازش خاص می باشیم .

1- لیست فایل های باز توسط برنامه ها بوسیله فرمان lsof

به این منظوز میتوانیم از دستور زیر lsof به تنهایی استفاده نماییم که خروجی ای به شکل زیر به ما میدهد :

 

همانطور که در شکل بالا مشاهده میکنید این فرمان چند ستون را نمایش مید هد که این ستون ها به ترتیب از سمت چپ شامل command

یا دستوری که در حال اجراست می باشد و ستون بعی PID یا Process ID دستوری که در حال اجراست نمایش داده میشود

ستون بعدی کاربری که این فرمان را اجرا میکند نمایش داده شده است .

ستون بعدی FD یا File Descriptor است که این ستون شامل مقادیری به شرح زیر میباشد :

  • cwd به معنی دایرکتوری جاری یا current working directory میباشد 

  • rtd به معنی root directory

  • txt  به معنی text file که میتواند شامل کد و یا داده باشد 

  • mem به مغنی memory -map -file می باشد.

همچنین در این ستون مقادیر دیگری به صورت 1u  , 3r , 9u  نیز مشاهده میکنید که این علائم به شرح زیر است :

  • r  به اجازه معنی read یا خواندن روی فایل 

  • w به معنی اجازه write  یا نوشتن روی فایل

  • u  به معنی اجازه  خواندن و نوشتن read and write روی فایل  

می باشد .

ستون TYPE  شامل مقادیر زیر می باشد :

  • DIR یعنی دایرکتوری

  • REG به معنی فایل عادی یا Regular file

  • CHR یا character special file یا فایل های از نوع کارکتری

  • FIFO به معنی First In First Out

2- لیست از فایل های باز مرتبط با کاربری خاص

میخواهیم با دستور lsof لیست کلیه فایل های باز که توسط کاربر user1 در حال استفاده و باز است را مشاهده نماییم به این منظور دستور

lsof   -u user1

 را اجرا میکنیم که شکلی مشابه زیر به ما نمایش میدهد:

 

3- لیست پردازشهایی که روی یک پورت خاص در حال اجرا هستند

جهت نمایش کلیه پردازشهای مرتبط با پورت خاص از گزینه   “-i” در دستور lsof استفاده میکنیم.

مثلا اگر میخواهیم بدانیم چه پردازشهایی روی پورت 22 در حال اجرا هستند دستور

lsof    -i  TCP:22

 را استفاده میکنیم .

این دستور به ما نشان میدهد که چه برنامه هایی است که از پورت 22 در حال استفاده می باشد :

 

4- نمایش لیست فایل های مرتبط با شبکه و مربوط به IPV4, IPV6

برای نمایش لیست فایلهای شبکه مرتبط با IPV4, IPV6 از دستور lsof  با گزینه -i  با عدد 4 یا عدد 6 بصورت زیر استفاده میکنیم :

lsof   -i   4

یا دستور

lsof    -i   6

 

5- نمایش لیستی از فایل های باز مربوط به یک محدوده شماره پورت از 1 تا 1024 که این پورت ها TCP هستند

برای نمایش لیست فایل های باز در یک بازه از شماره پورت ها مثلا از 1 تا 1024 که این پورت ها  از نوع TCP  باشند از دستور

lsof  -i   TCP:1-1024

استفاده می کنیم

 

6- چگونه نام یک کاربر را از لیست lsof مجزا کنیم

به منظور جدا سازی اسم یک کاربر مثلا root از لیست فایل های باز از کارکتر  “^” استفاده مکینم و دستور را به شکل

lsof    -i   -u^root

بکار میبریم . دستور بالا میگوید لیست فایلهای باز که root  مالک آنها نباشد را نمایش بده

 

7- نمایش لیست افراد به همراه نام فایل ها و دستوراتی که اجرا می کنند

lsof   -i    -u  user1

در دستور بالا میخواهیم لیست تمامی فایلها و دستوراتی را که کابری بنام user1  اجرا میکند را مشاهده نماییم :

8- نمایش لیست تمام اتصالات شبکه

با استفاده از دستور زیر میتوانیم لیستی از کلیه اتصالات شبکه از نوع LISTING  و  ESTABLISHED را مشاهده نماییم.

lsof    -i 

 

9- نمایش لیست فایل های باز بر اساس PID

مثلا اگر بخواهیم لیست فایل های باز را بر اساس PID شماره 1 مشاهده نماییم دستور

lsof   -p 1

 

10- از بین بردن لیست کلیه فایل های باز  مرتبط به یک کاربر خاص

فرض کنید میخواهیم لیست کلیه فایل های مرتبط با کاربر user1 را که در حال استفاده و باز است را از بین ببریم .

بدین منظور از دستور

kill   -9     `lsof   -t    -u   user1`

استفاده می کنیم .

دستور lsof دارای گزینه های بسیار زیاد دیگری می باشد که در این مقاله نمی گنجد . برای مطالعه بیشتز از دستور

man   lsof

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

خوشحال میشوم نظراتتان را در مورد این مقاله بنویسید و یا اینکه مطالب را با دیگران به اشتراک بگذارید .

3 پاسخ
  1. هاله
    هاله گفته:

    سلام و وقت بخير استاد گرامي
    از اين كه مي بينم يك خانم ايراني در امور فني تا به اين حد متخصص هستند، حقيقتا لذت مي برم.
    برايتان بهترين ها را آرزو مي كنم
    سربلند و سرافراز باشيد

    پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *