ข้อดีของ Linux คือ คุณสามารถดูและจัดการทุกอย่างได้อย่างง่ายดาย ตั้งแต่กระบวนการบู๊ตไปจนถึงการติดตั้งแพ็คเกจซอฟต์แวร์ เราจะพูดถึงวิธีที่คุณสามารถใช้คำสั่ง lsof ใน Linux เพื่อดูไฟล์ที่เปิดอยู่และกระบวนการที่ใช้ การรู้วิธีดูข้อมูลนี้จะช่วยให้คุณเข้าใจวิธีการทำงานของระบบและกระทั่งดำเนินการที่จำเป็นสำหรับกระบวนการเฉพาะ
Lsof Command
ในการดูไฟล์ที่เปิดอยู่และผู้ใช้หรือกระบวนการที่รับผิดชอบ เราใช้ lsof
คุณประโยชน์. โดยค่าเริ่มต้น lsof
มีการติดตั้งไว้ล่วงหน้าในการแจกแจงส่วนใหญ่
อย่างไรก็ตาม หากคุณยังไม่ได้ติดตั้ง คุณสามารถใช้ตัวจัดการแพ็คเกจเพื่อติดตั้งลงในระบบของคุณได้
เดเบียน/อูบุนตู
บน Debian ให้รันคำสั่ง:
sudo apt-get install lsof
Arch/มันจาโร
บน Manjaro และการแจกแจงแบบ Arch-based อื่น ๆ ให้ใช้ pacman โดยรันคำสั่ง:
sudo pacman -S lsof
CentOS/REHL/Fedora
สำหรับ CentOS และตระกูล REHL คุณสามารถใช้ dnf:
sudo dnf install lsof
ใช้คำสั่ง lsof เพื่อแสดงรายการไฟล์ที่เปิดสำหรับกระบวนการ Linux
เช่นเดียวกับคำสั่ง Linux ส่วนใหญ่ ยูทิลิตี้ lsof นั้นใช้งานง่ายอย่างเหลือเชื่อ เริ่มต้นด้วยการพิมพ์คำสั่ง lsof
:
sudo lsof
เมื่อคุณเรียกใช้คำสั่งด้านบนแล้ว lsof ควรส่งคืนข้อมูลเกี่ยวกับไฟล์ที่เปิดอยู่ในระบบ
COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 8,48 4096 2 / init 1 root rtd DIR 8,48 4096 2 / init 1 root txt REG 0,19 632048 281474976743906 /init init 1 root 0u CHR 1,3 0t0 15362 /dev/null init 1 root 1u CHR 1,3 0t0 15362 /dev/null init 1 root 2u CHR 1,3 0t0 15362 /dev/null init 1 root 3w CHR 1,11 0t0 15367 /dev/kmsg init 1 root 4u sock 0,8 0t0 22689 protocol: AF_VSOCK init 1 root 5r REG 0,4 0 4026532185 mnt init 1 root 6r REG 0,4 0 4026532201 mnt init 1 root 7r DIR 8,48 4096 240 /home/cap init 1 root 8u DIR 8,48 4096 2 / init 1 root 9u sock 0,8 0t0 21853 protocol: AF_VSOCK
หมายเหตุ: หากคุณมีสิทธิ์ sudo ให้เรียกใช้คำสั่งด้วย sudo
เพื่อหลีกเลี่ยงข้อผิดพลาด "การอนุญาตถูกปฏิเสธ" ในไฟล์บางไฟล์
ดังแสดงในผลลัพธ์ด้านบน ผลลัพธ์ lsof มีคอลัมน์ต่อไปนี้:
คอลัมน์ | ตัวแทน |
---|---|
คำสั่ง | แสดงชื่อกระบวนการโดยใช้ไฟล์เป้าหมาย |
PID | ตัวระบุเฉพาะสำหรับกระบวนการโดยใช้ไฟล์ |
TID | คอลัมน์แสดงตัวระบุเธรด |
TASKCMD | ชื่อคำสั่งงาน |
ผู้ใช้ | ชื่อผู้ใช้หรือ UID ของผู้ใช้ที่เรียกใช้กระบวนการ |
FD | ตัวอธิบายไฟล์ของไฟล์และโหมด |
ประเภท | โหนดที่เกี่ยวข้องกับไฟล์เป้าหมาย |
อุปกรณ์ | หมายเลขอุปกรณ์คั่นด้วยเครื่องหมายจุลภาค |
ขนาด/ปิด | ขนาดไฟล์เป็นไบต์ของขนาดออฟเซ็ตของไฟล์ |
โหนด | ค่าไอโหนดของไฟล์ในเครื่อง คุณสามารถใช้คำสั่ง stat เพื่อแสดง inode ข้อมูลสำหรับไฟล์ |
NAME | จุดต่อเชื่อมของไฟล์ |
ตอนนี้คุณเข้าใจความหมายของสิ่งที่พิมพ์ออกมาของคำสั่ง lsof แล้ว ให้เราใช้คำสั่งเพื่อกรองข้อมูลเฉพาะ
วิธีการกรองสำหรับกระบวนการเฉพาะ
ในการกรองเฉพาะไฟล์ที่เปิดโดยกระบวนการเฉพาะ เราสามารถใช้ชื่อกระบวนการหรือค่า PID
ตัวอย่างเช่น เพื่อแสดงไฟล์ที่ใช้โดยกระบวนการ firefox เราสามารถใช้คำสั่ง:
sudo lsof -c firefox
คำสั่งจะแสดงไฟล์ทั้งหมดที่เปิดโดยกระบวนการ firefox
ในการกรองตาม ID กระบวนการ เราสามารถใช้ -p
ตัวเลือกและส่ง ID กระบวนการ คุณสามารถใช้ top
คำสั่งเพื่อรับ ID กระบวนการของกระบวนการเป้าหมาย
ตัวอย่างเช่น ในการรับ PID ของกระบวนการ firefox เราสามารถใช้คำสั่ง:
sudo ps aux | grep firefox
เมื่อคุณมี PID ของกระบวนการเป้าหมายแล้ว ให้ใช้ lsof เพื่อแสดงไฟล์ที่เปิดอยู่:
sudo lsof -p 2121
คำสั่งดังกล่าวจะพิมพ์ไฟล์ที่เปิดโดยกระบวนการด้วย PID ที่ระบุ
วิธีการกรองผู้ใช้เฉพาะ
หากต้องการดูเฉพาะไฟล์ที่เปิดโดยผู้ใช้ที่ระบุ เราสามารถใช้ -u
ธง. ตัวอย่างเช่น ในการกรองผู้ใช้ Debian ให้ใช้คำสั่ง:
sudo lsof -u debian
วิธีการกรองไฟล์เฉพาะ
สมมติว่าคุณต้องการทราบกระบวนการและผู้ใช้ที่เปิดไฟล์เฉพาะเท่านั้น ในการดำเนินการนี้ ให้ส่งชื่อไฟล์ไปที่ lsof:
sudo lsof /bin/sleep
ข้อมูลข้างต้นจะกรองเฉพาะไฟล์และส่งคืนข้อมูลที่เกี่ยวข้อง ซึ่งรวมถึงผู้ใช้ รหัสกระบวนการ และอื่นๆ
บทสรุป
ในบทช่วยสอนง่ายๆ นี้ เราได้พูดถึงวิธีการสืบค้นระบบสำหรับข้อมูลเกี่ยวกับไฟล์ที่เปิดอยู่โดยใช้คำสั่ง lsof ใน Linux ต่อไปนี้เป็นคำสั่งเพิ่มเติมสำหรับคุณในการแสดงรายการเนื้อหาของไดเร็กทอรีในเทอร์มินัล