fuser - از این دستور برای شناسایی فرآیندها با استفاده از فایل ها و سوکتها استفاده میشود.
شکل کلی دستور:
$ fuser [options] name
همانطور که از نام آن مشخص است، نام فایل هایی را که کاربر(ان) یا فرایند(ها) در حال استفاده از آن هستند را نمایش میدهد.اما قابلیت های fuser تنها محدود به دادن اطلاعات در مورد فرایندها نیست. در ادامه به توضیح آن میپردازیم.
سادهترین استفاده از این دستور به شکل زیر است:
$ fuser /
/: 1582r 1620rc 1621rc 1633r 1639rc
1641rc 1648r 1651rc 1653rc 1655r 1656r 1657r 1660r
1661r 1673rc 1685rc 1687rc 1695rc 1700rc 1704rc 1707rc
1716rc 1720rc 1724rc 1728rc 1729rc 1744rc 1751rc 1757rc
1758rc 1759rc 1760rc 1788rc 1800r 1801r 1804rc 1818r 1822r
1828rc 1833rc 1838r 1846rc 1854rc 1860rc 1886rc 1920r 1942rc
1945rc 1947rc 1948rc 1987r 2009rc 2014rc 2016rc 2190r 2208rc
2266r 2555r 2646r 2657r 2712r 2721r 2729r 2740r 2758r 2759r 2766r
در مورد این مثال، در واقع ما میخواهیم بدانیم کدام فرایند(ها) دارد از این مسیر استفاده میکند. در واقع دستور بالا، PID فرایند را به ما نشان میدهد. قبل از اینکه به کاراکتر(ها) آخری آن را مورد بحث قرار دهیم بیایید صحت این موضوع را با دستور top بررسی کنیم.
ساده ترین شکل دستور top به شکل زیر است :
$ top
به خروجی آن، ستون PID دقت کنید (خروجی خلاصه شده است):
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2190 yourname 20 0 704m 193m 38m S 11 4.8 5:07.09 firefox 2759 yourname 20 0 92288 16m 10m S 1 0.4 0:01.46 gnome-terminal 1648 yourname 20 0 250m 66m 32m S 1 1.6 0:38.90 compiz 2555 yourname 20 0 154m 23m 15m S 1 0.6 0:07.76 plugin-containe
همینطور که مشاهده میکنید این شماره PIDها که در خروجی دستور top مشاهده میکنید در خروجی دستور fuser هم مشاهده میکنید.
دیدید که در خروجی fuser، کاراکتر(ها) در انتهای PIDها دیده میشود. هر کدام از این کاراکترها نشان دهندهی یک خصوصیت هستند که در زیر توضیح داده شده است:
- c : دایرکتوری جاری
- e : قابل اجرا شدن است
- f : فایل باز که به صورت پیش فرض، درحالت نمایش حذف شده است.
- F : باز شدن فایل برای نوشتن که به صورت پیش فرض، درحالت نمایش حذف شده است.
- r : دایرکتوری ریشه
- m : نشانگر فایل نگاشت شده «Maped File»یا کتابخانه های اشتراکی «Shared Library»
در بیشتر مواقع شما در انتهای PIDها کاراکتر c را مشاهده خواهید کرد. در واقع اگر بخواهیم توضیح بیشتر در مورد آن بدهیم به این معناست که این فرآیندها با استفاده از این دایرکتوری به عنوان دایرکتوری جاری خود، در حال استفاده اند.
با گزینه اختیاری v-
شما اطلاعات کاملتری را خواهید دید(خروجی خلاصه شده است) :
$ fuser -v /
USER PID ACCESS COMMAND
/: root kernel mount /
www.30li.ir 1582 .r... gnome-session
www.30li.ir 1620 .rc.. dbus-launch
www.30li.ir 1621 .rc.. dbus-daemon
www.30li.ir 1633 .r... gnome-settings-
www.30li.ir 1639 .rc.. gvfsd
www.30li.ir 1641 .rc.. gvfs-fuse-daemo
www.30li.ir 1648 .r... compiz
www.30li.ir 1651 .rc.. gconfd-2
www.30li.ir 1653 .rc.. gvfsd-metadata
www.30li.ir 1655 .r... nm-applet
www.30li.ir 1656 .r... nautilus
www.30li.ir 1657 .r... bluetooth-apple
www.30li.ir 1660 .r... polkit-gnome-au
www.30li.ir 1661 .r... gnome-fallback-
www.30li.ir 1673 .rc.. gvfs-gdu-volume
www.30li.ir 1685 .rc.. gvfs-gphoto2-vo
www.30li.ir 1687 .rc.. gvfs-afc-volume
www.30li.ir 1695 .rc.. gvfsd-trash
www.30li.ir 1700 .rc.. pulseaudio
www.30li.ir 1704 .rc.. gconf-helper
www.30li.ir 1707 .rc.. bamfdaemon
www.30li.ir 1716 .rc.. notify-osd
www.30li.ir 1720 .rc.. gnome-screensav
www.30li.ir 1724 .rc.. gvfsd-burn
www.30li.ir 1728 .rc.. hud-service
www.30li.ir 1729 .rc.. unity-panel-ser
www.30li.ir 1744 .rc.. indicator-sessi
www.30li.ir 1751 .rc.. indicator-datet
www.30li.ir 1757 .rc.. indicator-messa
www.30li.ir 1758 .rc.. indicator-appli
همینطور که در خروجی بالا مشاهده میکنید اطلاعات نسبتاً کاملی از فرایندها را مشاهده میکنید که در حال استفاده از مسیر ریشه هستند خروجی این دستور شبیه به خروجی دستور ps میباشد.
قدرت این دستور فقط به خروجی اطلاعات نیست، شما میتوانید مانند دستور top، با اضافه کردن گزینهی اختیاری k-
فرایندی را از بین ببرید:
$ fuser /usr/lib/firefox/firefox
/usr/lib/firefox/firefox: 2190e
خروجی بالا نشان میدهد که یک فرایند با PID به شماره 2190 که یک فایل اجرایی است (به علت وجود کاراکتر e) در حال استفاده میباشد.
$ fuser -k /usr/lib/firefox/firefox
که در این صورت مرورگر فایرفاکس شما بسته خواهد.
با گزینه اختیاری u-
شما میتوانید مالک یک فرایند را مشاهده کنید :
$ fuser /usr/lib/firefox/firefox /usr/lib/firefox/firefox: 5663e $ fuser -u /usr/lib/firefox/firefox /usr/lib/firefox/firefox: 5663e(yourname)
با گزینهی اختیاری i-
از شما سوال پرسیده خواهد شد که آیا میخواهید این فرایند بسته شود ؟ برای مثال :
$ fuser -k -i /usr/lib/firefox/firefox
/usr/lib/firefox/firefox: 5663e
Kill process 5663 ? (y/N)
با این وجود مشخص است که شما میتوانید تمامی فرایندها را به صورت یک جا از بین ببرید :
$ fuser -kv -i /
USER PID ACCESS COMMAND
/: root kernel mount /
www.30li.ir 1582 .r... gnome-session
www.30li.ir 1620 .rc.. dbus-launch
www.30li.ir 1621 .rc.. dbus-daemon
www.30li.ir 1633 .r... gnome-settings-
www.30li.ir 1639 .rc.. gvfsd
www.30li.ir 1641 .rc.. gvfs-fuse-daemo
www.30li.ir 1648 .r... compiz
www.30li.ir 1651 .rc.. gconfd-2
www.30li.ir 1653 .rc.. gvfsd-metadata
www.30li.ir 1655 .r... nm-applet
Kill process 1582 ? (y/N) n
Kill process 1620 ? (y/N) n
Kill process 1621 ? (y/N) n
Kill process 1633 ? (y/N) n
Kill process 1639 ? (y/N) n
Kill process 1641 ? (y/N) n
Kill process 1648 ? (y/N) n
Kill process 1651 ? (y/N) n
Kill process 1653 ? (y/N) n
Kill process 1655 ? (y/N) n
شما میتوایند یک فرایند را با یک سیگنال مشخص بکشید. با گزینه اختیاری l-
شما میتوانید لیست سیگنالهایی که دستور fuser از آن پشتیبانی میکند را ببینید :
$ fuser -l
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
شما میتوانید هم از شماره و هم از نام آنها برای کشتن یک فرایند استفاده کنید :
$ fuser -i -k -KILL /usr/lib/firefox/firefox /usr/lib/firefox/firefox: 5663e Kill process 5663 ? (y/N) n $ fuser -i -k -9 /usr/lib/firefox/firefox /usr/lib/firefox/firefox: 5663e
دو دستور بالا شبیه به یکدیگر بوده به این منظور که عدد 9 معادل سیگنال KILL میباشد.
همچنین شما میتوانید از سوکتها هم به شکل زیر اطلاعاتی بدست آورید :
$ fuser -v -n TCP_UDP PORT_NUMBER
برای مثال :
# fuser -v -n tcp 631
USER PID ACCESS COMMAND
631/tcp: root 665 F.... cupsd