یادگیری عملی دستور lsof - قسمت اول
سه شنبه, ۱۲ شهریور ۱۳۹۲، ۰۱:۳۸ ق.ظ
دستور lsof یک دستور بسیار مفید و کاربردیه که اطلاعاتی راجع به فایل های باز و در حال پردازش در اختیارتون قرار میده. lsof عموماً در بیشتر دیستروها به صورت پیش فرض نصبه اما اگه در سیستم شما نصب نبود میتونید با استفاده از مدیر بسته دیسترو خودتون نصبش کنید.
۱- لیست تمام فایل های باز
ali:~/ $ lsof
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd unknown /proc/1/cwd
systemd 1 root rtd unknown /proc/1/root
systemd 1 root txt unknown /proc/1/exe
systemd 1 root NOFD /proc/1/fd
kthreadd 2 root cwd unknown /proc/2/cwd
kthreadd 2 root rtd unknown /proc/2/root
kthreadd 2 root txt unknown /proc/2/exe
kthreadd 2 root NOFD /proc/2/fd
ksoftirqd 3 root cwd unknown /proc/3/cwd
ksoftirqd 3 root rtd unknown /proc/3/root
ksoftirqd 3 root txt unknown /proc/3/exe
ksoftirqd 3 root NOFD /proc/3/fd
همونطوری که در خروجی بالا میبینید خروجی دستور شامل ستون هاییه که در ادامه راجع به اون ها صحبت میکنیم.
- command : که همون نام دستور اجرا شده رو نشون میده.
-
FD : که میتونه مقدارهای مختلفی بگیره مثل :
- cwd : دایرکتوری فعلی
- rtd : دایرکتوری ریشه
- txt : قسمت کد یا داده برنامه ها
-
TYPE : این ستون هم مقادیر مختلفی مثل مقادیر زیر رو نشون میده:
- DIR : دایرکتوری
- REG : فایل
۲- لیست تمام فایلهای باز یک کاربر خاص
در مثال زیر لیست تمام فایلهای باز کاربر ali گرفته شده است.
ali:~/ $ lsof -u ali
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
startkde 1015 ali cwd DIR 8,5 4096 521217 /home/ali
startkde 1015 ali rtd DIR 8,6 4096 2 /
startkde 1015 ali txt REG 8,6 982296 393604 /usr/bin/bash
startkde 1015 ali mem REG 8,6 162472 397718 /usr/lib64/ld-2.17.so
startkde 1015 ali mem REG 8,6 2108632 397719 /usr/lib64/libc-2.17.so
startkde 1015 ali mem REG 8,6 22440 424759 /usr/lib64/libdl-2.17.so
startkde 1015 ali mem REG 8,6 171464 425288 /usr/lib64/libtinfo.so.5.9
startkde 1015 ali mem REG 8,6 106055264 416867 /usr/lib/locale/locale-archive
startkde 1015 ali mem REG 8,6 26254 524129 /usr/lib64/gconv/gconv-modules.cache
startkde 1015 ali 0u CHR 1,3 0t0 1029 /dev/null
startkde 1015 ali 1u unix 0xffff8801a72aa080 0t0 21646 socket
startkde 1015 ali 2u unix 0xffff8801a72a9040 0t0 21647 socket
startkde 1015 ali 255r REG 8,6 13132 426492 /usr/bin/startkde
۳- پیداکردن تمام پروسههای در حال اجرا روی یک پورت خاص
در مثال زیر لیست پروسههای در حال اجرا روی پورت ۲۲ را میبینید.
ali:~/ $ lsof -i TCP:22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1471 ali 3u IPv4 12683 0t0 TCP *:ssh (LISTEN)
sshd 1471 ali 4u IPv6 12685 0t0 TCP *:ssh (LISTEN)
۴- لیست فایلهای باز IPV4 و IPV6
ali:~/ $ lsof -i 4 [1:23:27]
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
wineserve 1085 ali 12u IPv4 18348 0t0 TCP localhost.localdomain:5939 (LISTEN)
برای IPV6 هم به جای 4 از 6 استفاده کنید.
۵- پیدا کردن تمام فایلهای باز TCP در محدوده 1024-1
ali:~/ $ TCP:1-1024
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 root 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
cupsd 1346 root 7u IPv4 12113 0t0 TCP localhost:ipp (LISTEN)
sshd 1471 root 4u IPv6 12685 0t0 TCP *:ssh (LISTEN)
master 1551 root 13u IPv6 12898 0t0 TCP localhost:smtp (LISTEN)
sshd 1834 root 3r IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)
sshd 1838 root 3u IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)
sshd 1871 root 3r IPv4 15842 0t0 TCP 192.168.0.2:ssh->192.168.0.1:groove (ESTABLISHED)
httpd 1918 root 5u IPv6 15991 0t0 TCP *:http (LISTEN)
httpd 1918 root 7u IPv6 15995 0t0 TCP *:https (LISTEN)
۹۲/۰۶/۱۲