هر چیزی در یونیکس ها و لینوکس فایل است. کاربران و فرایند ها بصورت مداوم و همیشگی با برخی از فایل ها کار می کنند. مثلن یک 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 باز شده است.
هر برنامه یا دستوری در آغاز با اعداد 0 تا 2 باز می شود که می توانید از این پست مفهوم این سه عدد را بخوانید. البته برنامه ای می تواند از عددی دیگر مانند 4 یا 0 شروع شود ولی اعداد 0 تا 2 معنی خودشان را دارند.بسته به نوع سیستم عامل یونیکسی، ستون 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
آموزش نصب و کانفیگ مجازی ساز kvm
آموزش نصب VNC در Centos
آشنایی با 5 پلاگین کاربردی Nginx در وردپرس
آموزش نصب و فعالسازی SSL در سرورهای Cpanel
آموزش دانلود یک پوشه از یک سرور Remote
آموزش افزایش و بالا بردن امنیت WHMCS
آموزش ساخت صفحات اضافی در WHMCS
آشنایی با 15 دستور کاربردی در آنتی شل maldet
آموزش نصب و کانفیگ ftp سرور در CentOS 7
آموزش نصب phpmyadmin در nginx
آموزش نصب کلود لینوکس CloudLinux
آموزش تغییر IP و Hostname در Centos
آموزش شناسایی و حذف CryptoPHP PHP malware
آموزش افزایش امنیت سایت های جوملا Joomla
آموزش نصب Virtualizor روی centos 6.5
آشنایی با انواع Raid در سرور
آموزش نصب و کانفیگ php-fpm در دایرکت ادمین directadmin
آموزش نصب Spamassassin در دایرکت ادمین
آموزش خاموش کردن brute force notification
آموزش تنظیم mysql remote در دایرکت ادمین
سرویس کانفیگ ویژه امنیتی سرور
دستورالعمل جديد فعاليت سايت هاي چت روم
درباره پی سی سرور
تعطیلی 4 روزه بخش پشتیبانی
فروش ویژه سرورهای مجازی قدرتمند مختص چت روم های پربازدید
فروش ویژه سرور مجازی VPS بصورت مدیریت شده
خدمات مانیتورینگ و نگهداری و رفع اشکال سرور
کانفیگ سرورهای دایرکت ادمین
کانفیگ سرورهای سی پنل
اطلاعیه مهم: مدیران سایت های چت روم بخوانند
سیستم مدیریت محتوای سایت های عکس
راه اندازی سامانه پشتیبانی آنلاین پی سی سرور
سوء استفاده افراد کالاه بردار سود جو از نام پی سی پارسی
شروع بکار مجدد بخش پشتیبانی
تعطیلی 1 هفته ای بخش پشتیبانی بدلیل تغییر مکان شرکت
سیستم مدیریت محتوای سایت های تفریحی
سوء استفاده گروه سود جو "TopazVPS" گول نخورید
قوانین سرویس دهی پی سی سرور
طراحی چت روم
حفره امنیتی خطرناک در wordpress