دستور lsof
lsof (List Open Files) دستور قدرتمند لینوکس برای نمایش تمام فایلهای باز سیستم است. در لینوکس همه چیز فایل است (فایلها، پورتها، سوکتها)، پس lsof ابزار جامعی برای عیبیابی است.
کاربردهای رایج
فایلهای باز کاربر
lsof -u username
فایلهای باز پروسس
lsof -p PID
پورتهای باز
# تمام پورتها
lsof -i
# پورت خاص
lsof -i :80
lsof -i :443
lsof -i :3306
بررسی چه کسی از فایل استفاده میکند
lsof /var/log/messages
lsof /path/to/file
فایلهای حذفشده اما هنوز باز
lsof +L1
فایلهایی که حذف شده اما هنوز پروسسی از آنها استفاده میکند. این میتواند دلیل پر شدن دیسک باشد.
اتصالات شبکه
# اتصالات TCP
lsof -i TCP
# اتصالات به IP خاص
lsof -i @192.168.1.1
# اتصالات ESTABLISHED
lsof -i TCP -s TCP:ESTABLISHED
ترکیب با سایر دستورات
# تعداد فایلهای باز هر پروسس
lsof | awk '{print $1}' | sort | uniq -c | sort -rn | head -20
# بررسی too many open files
lsof -p $(pgrep httpd | head -1) | wc -l
عیبیابی
خطای “Too many open files”: بررسی تعداد فایلهای باز و افزایش ulimit.
پورت اشغال: lsof -i :PORT نشان میدهد چه پروسسی پورت را اشغال کرده.
دیسک پر اما du نشان نمیدهد: lsof +L1 فایلهای حذفشده اما باز.
سرور مجازی با SSH و ابزارهای مدیریت. کانفیگ سرور شامل عیبیابی سرور.