הקדמה
פקודת fuser
היא כלי ב-Linux המיועד למצוא איזה תהליך משתמש בקובץ, ספרייה או תקשורת נתונים נתונים. היא מספקת גם מידע אודות המשתמש שבבעלותו והסוג של הגישה שלו.
איך להשתמש בכלי ה- fuser
ניתן לראות את עמוד המדריך של fuser
כאן כדי לקבל סקירה על כל האפשרויות לשימוש עם fuser
. ניתן גם להריץ fuser
עם אף אפשרות כדי לקבל סקירה של תחביר ה-fuser
:
- fuser
OutputNo process specification given
Usage: fuser [-fMuv] [-a|-s] [-4|-6] [-c|-m|-n SPACE] [-k [-i] [-SIGNAL]] NAME...
fuser -l
fuser -V
Show which processes use the named files, sockets, or filesystems.
-a,--all display unused files too
-i,--interactive ask before killing (ignored without -k)
-k,--kill kill processes accessing the named file
-l,--list-signals list available signal names
-m,--mount show all processes using the named filesystems or block device
-M,--ismountpoint fulfill request only if NAME is a mount point
-n,--namespace SPACE search in this name space (file, udp, or tcp)
-s,--silent silent operation
-SIGNAL send this signal instead of SIGKILL
-u,--user display user IDs
-v,--verbose verbose output
-w,--writeonly kill only processes with write access
-V,--version display version information
-4,--ipv4 search IPv4 sockets only
-6,--ipv6 search IPv6 sockets only
- reset options
udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]
איך לראות תהליכים ברקע בתיקייה
ניתן גם להשתמש ב- fuser
עם האפשרות -v, שמפעילה את הכלי במצב פרטני. אפשרות הפרטיות משמשת ליצירת יותר פלט כך שהמשתמש יכול לצפות בפעולות של fuser
. הריצו את fuser
על התיקייה הנוכחית, .
, כשכוללים את האפשרות -v
:
- fuser -v .
Output USER PID ACCESS COMMAND
/home/sammy: sammy 17604 ..c.. bash
במקרה זה, התהליך היחיד שרץ בתיקייה זו הוא מעטפת ה-bash
האינטראקטיבית שאתה מפעיל ממנה פקודות כרגע.
כאשר מופעל במצב verbose, כלי ה-fuser
מספק מידע אודות ה-USER
, PID
, ACCESS
ו־COMMAND
של תהליך. התו c
מתחת ל־ACCESS
מציין את סוג הגישה, במקרה זה משמעו התיקייה הנוכחית. ישנם סוגי גישה נוספים, כמו executable בהרצת קובץ, rאת תיקיית השורש, fפתיחת קובץ, ו־mפתח קובץ ממופה או ספריה משותפת.
איך למצוא תהליכים המשתמשים בקפיצי רשת
כדאי גם לחפש תהליכים המשתמשים בקפיצי רשת TCP ו-UDP. לדוגמה, תשתמש תחילה ב־nc
כדי ליצור תוך-כדי מאזין TCP על פתח 8002, כך שיהיה תהליך רץ שאתה יכול לצפות בו:
- nc -l -p 8002
זה יחסום את הטרמינל כל עוד הוא רץ. בחלון טרמינל נוסף, השתמש ב־fuser
כדי למצוא את התהליך הרץ על פתח 8002 באמצעות אופציה -n
:
- fuser -v -n tcp 8002
Output USER PID ACCESS COMMAND
8002/tcp: sammy 17985 F.... nc
הערה: כלי ה־fuser
יבדוק באופן ברירת מחדל גם קפיצי רשת IPv4 ו־IPv6, אך תוכל לשנות זאת באמצעות אופציות -4
ו־-6
כדי לבדוק רק חיבורי IPv4 או IPv6 בהתאם.
הפלט הזה מציג שה־Process ID (PID
) של התהליך שמשתמש ב־netcat הוא 17985
והפקודה שנעשה בשביל להפעיל אותו היא 'nc'. ה־Process ID (PID) ניתן לשימוש בכמה דרכים, כולל עצירת או הריגת תהליך רץ. אפשר ללמוד עוד על ניהול תהליכים על ידי קריאת How To Use ps, kill, and nice to Manage Processes in Linux. ניתן גם להשתמש ב־fuser
עצמו כדי להרוג תהליכים שרצים על פורטים מסוימים באמצעות הדגל -k
:
- fuser -k 8002/tcp
Output8002/tcp: 18056
אם תעבו חזרה לחלון הטרמינל הראשון שלכם, תגלו שהתוכנית nc
נהרגה וחזרה לשאל.
כלי ה־fuser יכול גם לשלוח אותות ספציפיים לתהליך. כאשר משתמשים באפשרות ה־-k
, פקודת ה־fuser שולחת את האות KILL לתהליך. קיימים עוד אותות רבים שניתן לשלוח לתהליך רץ ספציפי. ניתן לרשום את אלו בעזרת fuser -l
:
- fuser -l
OutputHUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT
CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
מסקנה
במאמר הזה, למדתם כמה דוגמאות לשימוש ב־fuser
כדי לצפות בפורטים ובספריות בשימוש במערכת Linux. fuser
יכול להיות מועיל במיוחד כאשר אתם מנסים להבין אילו תהליכים לא ידועים רצים במערכת שלכם.
הבא, ייתכן ותרצה ללמוד איך להשתמש ב־netstat
ו־du
כדי לנטר משאבי שרתים אחרים.
Source:
https://www.digitalocean.com/community/tutorials/how-to-use-the-linux-fuser-command