Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีใช้คำสั่ง lsof ใน Linux เพื่อแสดงรายการไฟล์ที่เปิดอยู่

วิธีใช้คำสั่ง lsof ใน Linux เพื่อแสดงรายการไฟล์ที่เปิดอยู่

ข้อดีของ 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
วิธีใช้คำสั่ง lsof ใน Linux เพื่อแสดงรายการไฟล์ที่เปิดอยู่

คำสั่งจะแสดงไฟล์ทั้งหมดที่เปิดโดยกระบวนการ firefox

ในการกรองตาม ID กระบวนการ เราสามารถใช้ -p ตัวเลือกและส่ง ID กระบวนการ คุณสามารถใช้ top คำสั่งเพื่อรับ ID กระบวนการของกระบวนการเป้าหมาย

ตัวอย่างเช่น ในการรับ PID ของกระบวนการ firefox เราสามารถใช้คำสั่ง:

sudo ps aux | grep firefox

เมื่อคุณมี PID ของกระบวนการเป้าหมายแล้ว ให้ใช้ lsof เพื่อแสดงไฟล์ที่เปิดอยู่:

sudo lsof -p 2121
วิธีใช้คำสั่ง lsof ใน Linux เพื่อแสดงรายการไฟล์ที่เปิดอยู่

คำสั่งดังกล่าวจะพิมพ์ไฟล์ที่เปิดโดยกระบวนการด้วย PID ที่ระบุ

วิธีการกรองผู้ใช้เฉพาะ

หากต้องการดูเฉพาะไฟล์ที่เปิดโดยผู้ใช้ที่ระบุ เราสามารถใช้ -u ธง. ตัวอย่างเช่น ในการกรองผู้ใช้ Debian ให้ใช้คำสั่ง:

sudo lsof -u debian
วิธีใช้คำสั่ง lsof ใน Linux เพื่อแสดงรายการไฟล์ที่เปิดอยู่

วิธีการกรองไฟล์เฉพาะ

สมมติว่าคุณต้องการทราบกระบวนการและผู้ใช้ที่เปิดไฟล์เฉพาะเท่านั้น ในการดำเนินการนี้ ให้ส่งชื่อไฟล์ไปที่ lsof:

sudo lsof /bin/sleep
วิธีใช้คำสั่ง lsof ใน Linux เพื่อแสดงรายการไฟล์ที่เปิดอยู่

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

บทสรุป

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