lsof

منظور از List Open Files , lsof مي باشد.
اين دستور براي نمايش و گزارش ليستي از فايلهاي باز بروي سيستم و پروسه هايي كه آنها را باز كرده اند، به كار مي رود. فايلهاي باز بروي يك سيستم مي تواند شامل فايلهاي موجود بروي يك ديسك، socket هاي شبكه ، device هاي استفاده شده توسط پروسه ها، فايلهاي كتابخانه اي و … باشد.
در صورت اجراي lsof بدون پارامتر ، مي توانيم ليست تمام فايلهاي باز بروي سيستم و پروسه هايي كه از آنها استفاده مي كنند را مشاهده كنيم.

lsof

همچينين مي توانيم با استفاده از اين دستور بررسي كنيم كه چه كسي دارد از فايل مورد نظرمان استفاده مي كند. مثال :

lsof /etc/passwd

نتیجه اجرای دستور مشابه زیر خواهد بود :

COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
python  2997 Farzaneh    9u   REG    8,3     2233 189231 /etc/passwd

نكته : بهتر است اين دستور توسط كاربر root اجرا شود تا امكان دسترسي و مشاهده اطلاعات كامل فايلها را داشته باشيم.

Options

i : برای نمایش socket های شبکه به کار می رود، روبروی i می توانیم شماره ‍پورت، آدرس یا ‍پروتکل مور د نظر خود را مشخص کنیم. مثال :

lsof -i:80  

در مثال بالا می خواهیم internet socket های در حال استفاده ای که از پورت 80 استفاده می کنند را مشاهده کنیم. نتیجه اجرای این دستور مشابه زیر خواهد بود :

COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME 
firefox 3049 Farzaneh   18u  IPv4  22102      0t0  TCP 89.165.113.252:57817->83.136.12.44:http (ESTABLISHED) 

U : برای مشاهده unix socket های باز موجود بروی سیستم بکار می رود:

lsof -U 

u : از u برای مشخص کردن فایلهای باز ی که توسط یک کاربر خاص استفاده شده است، استفاده می کنیم:

[lsof -u [username

c : در صورت نوشتن کلمه ای روبروی c، می توانیم فایلهای بازی را که نام ‍پروسه آنها با کلمه مورد نظر آغاز می شود را مشاهده کنیم:

[lsof -c [ProcessName

r : باعث اجرای مجدد دستور می شود، در صورت مشخص نکردن زمان، به طور پیش فرض دستور پس از هر 15 ثانیه یکبار اجرا می شود، و در صورت ذکر عددی در روبروی r، تعیین می کنیم که دستور ما در فاصله زمانی مشخصی بر حسب ثانیه اجرا شود:

[lsof -r [Time

برای مشاهده اطلاعات بیشتری در رابطه با lsof می توانید به man page این دستور مراجعه کنید.