ابزار کاربر

ابزار سایت


terminal:f:how_to_use_the_linux_fuser_command

دستورfuser(نمایش PID در حال استفاده از یک فایل)

Fuser ابزاری کاربردی است که نام فایلهایی که کاربران و فرآیندها در حال استفاده هستند را نمایش میدهد.
با این دستور PID فرآیندی که در حال استفاده از یک فایل است نشان داده میشود.شاخص های مدیریت و مانیتورینگ فرآیندها هر فایل در خروجی دستور با یک حرف آمده است که این حرف نوعی دسترسی را نشان میدهد.

  • c : دایرکتوری جاری یا current Directory
  • e : قابل اجرا یا Executable
  • f : فایل باز یا Open File
  • F : باز شدن فایل برای نوشتن
  • r : دایرکتوری root
  • m : نشانگر فایل نگاشت شده 1) یا کتابخانه های اشتراکی 2)

اگر fuser را به تنهایی اجرا کنید راهنمایی دستور نشان داده میشود ولی اگر آن را به همراه نام یک فایل یا دایرکتوری بیاورید PID فرآیندهایی که در حال استفاده از آن فایل یا دایرکتوری هستند را نشان میدهد. شکل کلی استفاده از آن بصورت زیر است.

fuser <file_name>

به عنوان مثال دستور زیر فرآیندهایی که در حال استفاده از دایرکتوری جاری هستند را نشان میدهد.

fuser .

خروجی دستور بالا

-> $fuser .
/home/phoenix:        1275c  1285c  1353c  1357c  1529c  1533c  1538c  1542c  1544c  1546c  1548c  1550c  1551c  1552c  1557c  1562c  1565c  1567c  1568c  1577c  1588c  1596c  1599c  1604c  1615c  1619c  1630c  1645c  1666c  1678c  1681c  1766c  1781c  1785c  1789c  1799c  1805c  1806c  1817c  1830c  1898c  1917c  1931c  1940c  1949c  1956c  1980c  2030c  2053c  2086c  2886c  2891c  3704c  3708c

در خروجی بالا شناسه فرآیند 1275 است و حرف c در آخر آن یعنی دایرکتوری جاری یا Current Directory حالا با دستور_ps میتوانیم بفهمیم که فرآیندی با شناسه 1275 متعلق به چیست؟ یعنی کدام فرآیند در حال استفاده از این دایرکتوری است دستور زیر را در خط فرمان اجرا کنید.

ps |grep 1275 |grep -v grep

در مثال ما فرآیند bash با PID=1275 در حال استفاده کردن از دایرکتوری جاری که در این مثال دایرکتوری خانگی کاربر phoenix با مسیر home/phoenix/ است. در دستور زیر میتوانیم فرآیندی که در حال استفاده از فایل var/log/messages/ است را پیدا کنیم.

fuser /var/log/messages

سوئیچ v-

با این سوئیچ اطلاعات کامل تری مانند نام کاربر, شناسه فرآیند, نوع دسترسی و دستوری که اجرا شده را مشاهده نمایید.

fuser -v /var/log

با فرمت زیر میتوانید اطلاعاتی از فرآیندها و Soucket ها بدست آورید.

fuser -v -n <tcp_or_udp><PORT_NUMBER>

بطور مثال

fuser -v -n udp 53

در مثال بالا یک دستور به نام named که به عنوان سرویس دهنده DNS در لینوکس است با مد دسترسی F و با شناسه 3904 و نام کاربری named روی پورت 53 در حال کار است

سوئيچ m-

این سوئيچ فرآیندهایی که در حال استفاده از یک سیستم فایل mount شده را نشان میدهد بطور مثال دستور زیر فرایندهای مرتبط با دیارکتوری usr/ را نشان میدهد.

fuser -m /usr

سوئیچ k-

این سوئیچ برای از بین بردن فرآیندها در حال استفاده از یک برنامه خاص کاربرد دارد برای این منظور باید از فرمت دستوری زیر استفاده کنید.

fuser -v -k <PROGRAM_NAME>

سوئیچ i-

با این سوئیچ میتوانید یک حالت Intarctive داشته باشید به اینصورت که یک تاییدیه نشان داده میشود و شما با وارد کردن yes آن را قبول یا با وارد کردن no آن را رد میکنید. میتوانید از سوئیچ i- به همراه سوئیچ k- استفاده کنید تا فرآیندهایی را که نمیخواهید kill کنید با وارد کردن no از بین نبرید. شکل کلی آن صورت زیر است.

fuser -v -k -i <PROGRAM_NAME>
1)
Maped File
2)
Shared Library
terminal/f/how_to_use_the_linux_fuser_command.txt · آخرین ویرایش: 2018/12/27 17:05 توسط phoenix