ค้นหาเว็บไซต์

เรียนรู้วิธีใช้คำสั่ง 'fuser' พร้อมตัวอย่างใน Linux


งานที่สำคัญที่สุดอย่างหนึ่งในการดูแลระบบ Linux คือการจัดการกระบวนการ โดยเกี่ยวข้องกับการดำเนินการหลายอย่างภายใต้การตรวจสอบ กระบวนการส่งสัญญาณ ตลอดจนการตั้งค่าลำดับความสำคัญของกระบวนการบนระบบ

มีเครื่องมือ/ยูทิลิตี้ Linux มากมายที่ออกแบบมาสำหรับการตรวจสอบ/จัดการกระบวนการต่างๆ เช่น top, ps, pgrep, kill, killall, nice ควบคู่ไปกับเครื่องมืออื่นๆ อีกมากมาย

ในบทความนี้ เราจะมาเปิดเผยวิธีการค้นหากระบวนการโดยใช้ยูทิลิตี Linux อันทรงประสิทธิภาพที่เรียกว่า fuser

การอ่านที่แนะนำ: ค้นหากระบวนการที่ทำงานสูงสุดตามหน่วยความจำและการใช้งาน CPU สูงสุด

fuser เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่เรียบง่ายแต่ทรงพลัง มีจุดมุ่งหมายเพื่อค้นหากระบวนการตามไฟล์ ไดเร็กทอรี หรือซ็อกเก็ตที่กระบวนการใดกำลังเข้าถึง กล่าวโดยย่อคือ จะช่วยให้ผู้ใช้ระบบระบุกระบวนการโดยใช้ไฟล์หรือซ็อกเก็ต

วิธีการใช้ฟิวเซอร์ในระบบ Linux

ไวยากรณ์ทั่วไปสำหรับการใช้ fuser คือ:

fuser [options] [file|socket]
fuser [options] -SIGNAL [file|socket]
fuser -l 

ด้านล่างนี้เป็นตัวอย่างบางส่วนของการใช้ ฟิวเซอร์ เพื่อค้นหากระบวนการในระบบของคุณ

ค้นหากระบวนการใดที่เข้าถึงไดเร็กทอรี

การรันคำสั่ง fuser โดยไม่มีตัวเลือกใด ๆ จะแสดง PIDs ของกระบวนการที่เข้าถึงไดเร็กทอรีการทำงานปัจจุบันของคุณ

fuser .
OR
fuser /home/tecmint

หากต้องการผลลัพธ์ที่มีรายละเอียดและชัดเจนยิ่งขึ้น ให้เปิดใช้งาน -v หรือ --verbose ดังต่อไปนี้ ในเอาต์พุต fuser จะพิมพ์ชื่อของไดเร็กทอรีปัจจุบัน จากนั้นคอลัมน์ของเจ้าของกระบวนการ (USER), ID กระบวนการ (PID) ประเภทการเข้าถึง (ACCESS) และคำสั่ง (COMMAND) ดังภาพด้านล่าง

fuser -v

ใต้คอลัมน์ ACCESS คุณจะเห็นประเภทการเข้าถึงที่ระบุด้วยตัวอักษรต่อไปนี้:

  1. c – ไดเรกทอรีปัจจุบัน
  2. e – ไฟล์ปฏิบัติการที่กำลังรันอยู่
  3. f – เปิดไฟล์ แต่ f จะไม่อยู่ในเอาต์พุต
  4. F – เปิดไฟล์สำหรับการเขียน F ก็ถูกแยกออกจากเอาต์พุตเช่นกัน
  5. r – ไดเรกทอรีราก
  6. m – ไฟล์ mmap'ed หรือไลบรารีที่ใช้ร่วมกัน

ค้นหากระบวนการใดที่เข้าถึงระบบไฟล์

จากนั้น คุณสามารถกำหนดได้ว่ากระบวนการใดกำลังเข้าถึงไฟล์ ~.bashrc ของคุณ ดังนี้:

fuser -v -m .bashrc

ตัวเลือก -m NAME หรือ --mount NAME หมายถึงตั้งชื่อกระบวนการทั้งหมดที่เข้าถึงไฟล์ NAME ในกรณีที่คุณสะกดไดเร็กทอรีเป็น NAME ไดเร็กทอรีนั้นจะถูกเปลี่ยนเป็น NAME/ โดยอัตโนมัติ เพื่อใช้ระบบไฟล์ใดๆ ที่อาจติดตั้งอยู่ในไดเร็กทอรีนั้น

การอ่านที่แนะนำ: ค้นหากระบวนการ 15 อันดับแรกตามการใช้หน่วยความจำใน Linux

วิธีการฆ่าและส่งสัญญาณกระบวนการโดยใช้ฟิวเซอร์

ในส่วนนี้ เราจะทำงานผ่านการใช้ ฟิวเซอร์ เพื่อฆ่าและส่งสัญญาณไปยังกระบวนการ

เพื่อที่จะฆ่ากระบวนการที่เข้าถึงไฟล์หรือซ็อกเก็ต ให้ใช้ตัวเลือก -k หรือ --kill ดังนี้:

sudo fuser -k .

หากต้องการฆ่ากระบวนการแบบโต้ตอบ โดยที่คุณจะถูกขอให้ยืนยันความตั้งใจที่จะฆ่ากระบวนการที่เข้าถึงไฟล์หรือซ็อกเก็ต ให้ใช้ตัวเลือก -i หรือ --interactive:

sudo fuser -ki .

คำสั่งก่อนหน้าสองคำสั่งจะ ฆ่า กระบวนการทั้งหมดที่เข้าถึงไดเร็กทอรีปัจจุบันของคุณ สัญญาณเริ่มต้นที่ส่งไปยังกระบวนการคือ SIGKILL ยกเว้นเมื่อใช้ -SIGNAL .

แนะนำให้อ่าน: คำแนะนำในการสั่ง Kill, Pkill และ Killall ใน Linux

คุณสามารถแสดงรายการสัญญาณทั้งหมดโดยใช้ตัวเลือก -l หรือ --list-signals ดังต่อไปนี้:

sudo fuser --list-signals 

ดังนั้น คุณสามารถส่งสัญญาณไปยังการประมวลผลเช่นเดียวกับในคำสั่งถัดไป โดยที่ SIGNAL คือสัญญาณใดๆ ที่แสดงอยู่ในเอาต์พุตด้านบน

sudo fuser -k -SIGNAL

ตัวอย่างเช่น คำสั่งด้านล่างนี้จะส่งสัญญาณ HUP ไปยังกระบวนการทั้งหมดที่เปิดไดเรกทอรี /boot ของคุณ

sudo fuser -k -HUP /boot 

ลองอ่านคู่มือ fuser เพื่อดูตัวเลือกการใช้งานขั้นสูง ข้อมูลเพิ่มเติมและรายละเอียดเพิ่มเติม

เพียงเท่านี้ คุณสามารถติดต่อเราผ่านทางส่วนคำติชมด้านล่างเพื่อขอความช่วยเหลือใด ๆ ที่คุณต้องการหรือข้อเสนอแนะที่คุณต้องการ