เรียนรู้วิธีใช้คำสั่ง '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 คุณจะเห็นประเภทการเข้าถึงที่ระบุด้วยตัวอักษรต่อไปนี้:
c
– ไดเรกทอรีปัจจุบันe
– ไฟล์ปฏิบัติการที่กำลังรันอยู่f
– เปิดไฟล์ แต่ f จะไม่อยู่ในเอาต์พุตF
– เปิดไฟล์สำหรับการเขียน F ก็ถูกแยกออกจากเอาต์พุตเช่นกันr
– ไดเรกทอรีราก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 เพื่อดูตัวเลือกการใช้งานขั้นสูง ข้อมูลเพิ่มเติมและรายละเอียดเพิ่มเติม
เพียงเท่านี้ คุณสามารถติดต่อเราผ่านทางส่วนคำติชมด้านล่างเพื่อขอความช่วยเหลือใด ๆ ที่คุณต้องการหรือข้อเสนอแนะที่คุณต้องการ