ترا سرور


ارائه دهنده خدمات سرور اختصاصی , سرور مجازی , هاست میزبانی , هاست دانلود , ثبت دامنه
مشاوره :
09199763827
همین حالا تماس بگیرید

آشنایی با دستور و قابلیت های lsof

هر چیزی در یونیکس ها و لینوکس فایل است. کاربران و فرایند ها بصورت مداوم و همیشگی با برخی از فایل ها کار می کنند. مثلن یک CMD با برخی از فایل های کتابخانه C و یک فایل پیکربندی در حال کار کردن است. فایل ها در دایرکتوری ها ذخیره میشوند. این که می گوییم در یونیکس ها و لینوکس همه چیز فایل است فقط به فایل های متنی و دیگر فایل های مرسوم ختم نمی شود، بلکه حتی اتصال های شبکه و سخت افزار ها نیز فایل هستند و این فایل ها توسط کاربران،سرویس ها و فرایند ها مورد استفاده قرار می گیرند

بدون در نظر گرفتن نوع فایل، هر فایلی در یونیکس ها و لینوکس ها دارای یک File Descriptor میباشد که در خروجی دستور lsof با FD نشان داده می شود. FD اطلاعات جامعی از یک فایل به شما میدهد. lsof مخفف List Open File می باشد که در تمامی سیستم عامل های مبتنی بر یونیکس مانند BSD ها و توزیع های لینوکسی موجود و قابل استفاده می باشد. ساده ترین شکل استفاده آن بصورت زیر می باشد (خروجی دستور lsof طولانییست و بهتر است آنرا با less صفحه بندی کنید.)

lsof

lsof | less

ستون های PID,COMMAND و USER به ترتیب معرف نام دستور، شناسه یا PID دستور و نام کاربری است که از آن فایل استفاده می کند. ستون Device به نام دیسک، ستون SIZE/OFF به اندازه فایل، ستون NODE به شماره inode (که تعیین کننده و هویت فایل در دسیک است) و ستون NAME معرف نام فایل است. از ستون های گفته می شود فهمید که کدام USER چه دستوری(فرایندی) را با چه PID ی را استفاده می کند و فرایند یا دستور در حال استفاده از کدام فایل، با چه اندازه ای و در کدام دیسک ذخیره شده است. و ستون دیگر FD و TYPE هستند که اطلاعات کاملتری را در اختیار شما قرار می دهند. ستون FD مخفف File Descriptor است.

ستون FD دارای مقادیر متفاوتی است. بطور مثال cwd که مخفف Current Work Directory است که دستور از انجا اجرا شده است. FD از نوع txt، فایل های کد یا فایل های باینری هستند. شکل زیر از صفحه Manual دستور lsof یعنی man lsof گرفته شده است که FD ها را معرفی می کند.

در ستون FD، برخی از مقادیر بصورت عددی باشند که به دنبال انها یکی از حروف زیر بیایند :

r : یعنی فایل در حالت Read-Only باز شده است.
w یعنی فایل در حالت write باز شده است.
u یعنی فایل در حالت read/write باز شده است.
هر برنامه یا دستوری در آغاز با اعداد ۰ تا ۲ باز می شود که می توانید از این پست مفهوم این سه عدد را بخوانید. البته برنامه ای می تواند از عددی دیگر مانند ۴ یا ۰ شروع شود ولی اعداد ۰ تا ۲ معنی خودشان را دارند.بسته به نوع سیستم عامل یونیکسی، ستون TYPE دارای مقادیری مانند REG,DIR است، عباراتی مانند CHR برای ابزار های کارکتری و BLK برای ابزار های بلاکی استفاده می شوند. عبارت FIFO مخفف First Input First Output و نوعی صف در سیستم عامل است.

استفاده از دستور lsof :

لیست کردن فرایند ها بر اساس فایل های باز شده : منظور این است که لیستی از فرایند ها داشته باشیم بر اساس یک فایل مشخص. مثال زیر فرایندهایی(دستورهایی) را که فایل syslog را باز کرده اند را نشان میدهد.

lsof  /var/log/syslog

لیست کردن فایل های باز شده در زیر یک دایرکتوری : منظور این است که فایل های باز شده تحت یک دایرکتوری معین شده را فهرست کنیم. مثال زیر تمامی فایل های باز شده در زیر دایرکتوری var/log/ را فهرست می کند.

lsof  +D  /var/log

لیست کردن فایل های باز شده توسط یک فرایندهایی که با یک رشته مشخص، شروع می شوند : منظور این است که تمامی فایل های بازشده توسط فرایندهایی که نامش با یک رشته خاص آغاز می شوند را فهرست کنیم. برای اینکار از سوئیچ c- استفاده می کنیم. در مثال زیر تمام فایل های باز شده برای فرایند هایی که با رشته های ssh و init آغاز می شوند را فهرست میکند.

lsof  -c ssh  -c init

لیست کردن فایل های باز شده برای یک نقطه اتصال : منظور از نقطه اتصال یعنی اینکه یک پارتیشن مانند dev/sda3/را به یک دایرکتوری مانند home/ یا یک دایرکتوری مانند tmp/mountpoint/ وصل کنیم. این حالت مانند حالت فهرست کردن فایل های باز شده در زیر یک دایرکتوری است.

lsof  /home

OR

lsof  +D /home

لیست کردن فایل های باز شده برای یک کاربر خاص : منظور این است که تمامی فایل های باز شده توسط یک کاربر(USER) خاص را فهرست کنیم. اینکار توسط سوئیچ u- انجام می شود و بجای USERNAME نام کاربری دیلخواه را بنویسید.

lsof  -u  USERNAME

لیست کردن فایل های باز شده برای یک فرایند خاص : منظور این است که با PID فرایند، فهرست تمام فایل های باز شده توسط آن فرایند را ببینیم. اینکار توسط سوئیچ p- انجام می شود و بجای PID باید شناسه فرایند را جایگزین کنید.

lsof  -p  PID

اما برای بدست آوردن PID یک فرایند(دستو) می توانید از دستور ps بصورت زیر استفاده کنید. کافیست بجای CMD نان دستور یا سرویس یا فرایندی را که می خواهید PID آنرا بدست اورید بنویسید. خروجی عددی است که همان PID است که باید در دستور lsof -p PID جایگزین کنید.

ps  aux | grep CMD

موفق باشید…

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