یکی از مهمترین تسک های مدیران سیستم های لینوکسی، مدیریت process ها میباشد که شامل چندین عملیات تحت مانیتورینگ، سیگنالینگ پروسس ها و تنظیم اولویت بندی process ها روی سیستم میباشد. fuser یکی از ابزارهای ساده اما قدرتمند به منظور یافتن پراسس ها بر اساس فایل ها، دایرکتوری ها یا سوکتی که یک پراسس مشخص قابل دسترسی است میباشد. به عبارت ساده تر این ابزار به یک کاربر سیستمی در تشخیص پراسس ها با استفاده از فایل ها یا سوکت ها کمک میکند.
همچنین توصیه میشود مطالعه کنید :
پیدا کردن process های در حال اجرا که بیشترین میزان مصرف سی پی یو و مموری را دارند.
نحوه استفاده از fuser در سیستم های لینوکسی
ساختار ساده برای استفاده از دستور fuser به شرح زیر است.
در زیر مثالهایی از دستور fuser به منظور یافتن process ها روی سیستم را مشاهده میفرمایید.
پیدا کردن Process هایی که به یک دایرکتوری دسترسی دارند
اجرا کردن دستور fuser بدون هیچ گونه آپشنی، PID های پروسس هایی که در حال حاضر به دایرکتوری جاری شما (current working directory) دسترسی دارند را نمایش خواهد داد.
برای مثال :
برای یک خروجی واضح تر و با جزییات بیشتر از آپشن -v یا --verbose همانند زیر استفاده میکنیم. در خروجی دستور fuser ابتدا نام دایرکتوری جاری را نمایش میدهد سپس ستون owner پراسس (USER) و سپس در ستون بعد process ID (یا PID) و سپس نوع دسترسی (ACCESS) و سپس نام دستور (COMMAND) را همانند تصویر زیر نمایش میدهد.
مثال :
زیر ستون ACCESS شما مشاهده میکنید که نوع دسترسی (access) با استفاده از حروف زیر مشخص شده است.
c : دایرکتوری جاری (current directory)
e : یک فایل قابل اجرا (executable) در حال اجرا میباشد.
f : باز کردن یک فایل که البته f در خروجی موجود نیست.
F : باز کردن فایل برای نوشتن در آن، که F نیز در خروجی دیده نمیشود.
r : دایرکتوری root
m : فایل های mmap شده یا library های به اشتراک گذاشته شده
پیدا کردن Process هایی که به یک File System دسترسی دارند
شما با استفاده از دستور زیر میتوانید تشخیص دهید که چه process هایی به فایل ~.bashrc شما دسترسی دارند.
آپشن -m به همراه NAME یا --mount به همراه NAME به معنای نام همه process هایست که به فایل NAME دسترسی دارند. در مواردی که شما دایرکتوری NAME داشته باشید برای استفاده از هر فایل سیستمی که ممکن است روی این دایرکتوری مانت شده باشد، خود به خود به /NAME تغییر میکند.
همچنین پیشنهاد میشود مقاله زیر را مطالعه کنید :
آموزش نحوه پیداکردن پروسس در حال اجرا و kill کردن آن در لینوکس
نحوه Kill کردن و Signal پروسس ها با استفاده از fuser
در این بخش ما درباره استفاده از fuser به منظور kill کردن و ارسال سیگنال ها به سمت process ها کار میکنیم.
به منظور kill کردن یک process که به یک file یا socket دسترسی دارد از آپشن -k یا --kill شبیه به زیر استفاده میکنید.
برای اینکه به صورت تعاملی (سوال و پاسخ) یک process را kill کنیم به طوری که از شما برای kill کردن پروسس هایی که به یک فایل یا سوکت دسترسی دارند تاییدیه درخواست شود از آپشن -i یا --interactive استفاده میکنیم.
برای مثال :
دو دستور قبل تمام process هایی که به دایرکتوری جاری شما دسترسی داشتند را kill خواهد کرد، سیگنال پیشفرضی که به سمت process ها ارسال میشود SIGKILL است، به جزء زمانی که SIGNAL استفاده میشود.
پیشنهاد میشود مقاله زیر را مطالعه بفرمایید :
راهنمای دستورات kill, pkill و killall در لینوکس
شما میتوانید تمام سیگنال ها را با استفاده از آپشن های -l یا --list-signals همانند زیر لیست کنید.
برای مثال :
بنابراین شما میتوانید یک سیگنال را به process ها همانند دستور زیر ارسال کنید. که SIGNAL میتواند هر سیگنالی که در خروجی بالا لیست شده باشد.
برای مثال، دستور زیر سیگنال HUP را به همه process هایی که دایرکتوری /boot شما را باز کرده اند ارسال میکند.
همچنین سعی کنید صفحه man (راهنما) دستور fuser برای آپشن های پیشرفته تر آن و همچنین اطلاعات اضافه و با جزییات بیشتر مطالعه کنید.
شما میتوانید نظرات ارزشمند خود را درباره این مقاله با ما به اشتراک بگذارید.
همچنین توصیه میشود مطالعه کنید :
پیدا کردن process های در حال اجرا که بیشترین میزان مصرف سی پی یو و مموری را دارند.
نحوه استفاده از fuser در سیستم های لینوکسی
ساختار ساده برای استفاده از دستور fuser به شرح زیر است.
کد PHP:
# fuser [options] [file|socket]
# fuser [options] -SIGNAL [file|socket]
# fuser -l
پیدا کردن Process هایی که به یک دایرکتوری دسترسی دارند
اجرا کردن دستور fuser بدون هیچ گونه آپشنی، PID های پروسس هایی که در حال حاضر به دایرکتوری جاری شما (current working directory) دسترسی دارند را نمایش خواهد داد.
کد PHP:
$ fuser .
OR
$ fuser /home/tecmint
کد PHP:
[root@callcenter ~]# fuser .
.: 9288c
[root@callcenter ~]#
[root@callcenter ~]# fuser /home/linuxzone/
/home/linuxzone/: 9288c
[root@callcenter ~]#
کد PHP:
$ fuser -v
کد PHP:
[root@callcenter]# fuser -v .
USER PID ACCESS COMMAND
.: root 9288 ..c.. bash
root 11163 ..c.. su
root 11164 ..c.. bash
root 11164 ..c.. upstart
root 11164 ..c.. ibus-daemon
root 11164 ..c.. ibus-dconf
root 11164 ..c.. gnome-session-b
root 11164 ..c.. unity-panel-ser
root 11164 ..c.. gnome-terminal
c : دایرکتوری جاری (current directory)
e : یک فایل قابل اجرا (executable) در حال اجرا میباشد.
f : باز کردن یک فایل که البته f در خروجی موجود نیست.
F : باز کردن فایل برای نوشتن در آن، که F نیز در خروجی دیده نمیشود.
r : دایرکتوری root
m : فایل های mmap شده یا library های به اشتراک گذاشته شده
پیدا کردن Process هایی که به یک File System دسترسی دارند
شما با استفاده از دستور زیر میتوانید تشخیص دهید که چه process هایی به فایل ~.bashrc شما دسترسی دارند.
کد PHP:
$ sudo fuser -k .
همچنین پیشنهاد میشود مقاله زیر را مطالعه کنید :
آموزش نحوه پیداکردن پروسس در حال اجرا و kill کردن آن در لینوکس
نحوه Kill کردن و Signal پروسس ها با استفاده از fuser
در این بخش ما درباره استفاده از fuser به منظور kill کردن و ارسال سیگنال ها به سمت process ها کار میکنیم.
به منظور kill کردن یک process که به یک file یا socket دسترسی دارد از آپشن -k یا --kill شبیه به زیر استفاده میکنید.
کد PHP:
$ sudo fuser -k .
کد PHP:
$ sudo fuser -ki .
کد PHP:
[root@callcenter]# fuser -ki .
.: 9288c 11163c 11164c
Kill process 9288 ? (y/N) y
Kill process 11163 ? (y/N)
پیشنهاد میشود مقاله زیر را مطالعه بفرمایید :
راهنمای دستورات kill, pkill و killall در لینوکس
شما میتوانید تمام سیگنال ها را با استفاده از آپشن های -l یا --list-signals همانند زیر لیست کنید.
کد PHP:
$ sudo fuser --list-signals
کد PHP:
[root@callcenter]# fuser -list-signals
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED
[root@callcenter]#
کد PHP:
$ sudo fuser -k -SIGNAL
کد PHP:
$ sudo fuser -k -HUP /boot
همچنین سعی کنید صفحه man (راهنما) دستور fuser برای آپشن های پیشرفته تر آن و همچنین اطلاعات اضافه و با جزییات بیشتر مطالعه کنید.
شما میتوانید نظرات ارزشمند خود را درباره این مقاله با ما به اشتراک بگذارید.