ความรู้เบื้องต้นเกี่ยวกับ Lsof

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

โปรดทราบว่าขณะที่ BSD มีสาธารณูปโภคที่แตกต่างกันสำหรับงานนี้fstatหลายรสชาติอื่น ๆ ของระบบปฏิบัติการยูนิกซ์ (Solaris, ตัวอย่างเช่น) lsofนอกจากนี้ยังมี ตัวเลือกและค่าสถานะจะแตกต่างกันในแพลตฟอร์มอื่น ๆ รวมถึงรูปลักษณ์ของผลลัพธ์ แต่โดยทั่วไปความรู้ในบทความนี้ควรนำไปใช้กับพวกเขาด้วยเช่นกัน

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

COMMAND    PID  TID       USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
init         1            root  cwd       DIR              254,1      4096          2 /
init         1            root  rtd       DIR              254,1      4096          2 /
init         1            root  txt       REG              254,1     36992    7077928 /sbin/init
init         1            root  mem       REG              254,1     14768    7340043 /lib/x86_64-linux-gnu/libdl-2.13.so
init         1            root  mem       REG              254,1   1603600    7340040 /lib/x86_64-linux-gnu/libc-2.13.so
init         1            root  mem       REG              254,1    126232    7340078 /lib/x86_64-linux-gnu/libselinux.so.1
init         1            root  mem       REG              254,1    261184    7340083 /lib/x86_64-linux-gnu/libsepol.so.1
init         1            root  mem       REG              254,1    136936    7340037 /lib/x86_64-linux-gnu/ld-2.13.so
init         1            root   10u     FIFO               0,14       0t0       4781 /run/initctl

คอลัมน์เหล่านี้หมายถึงสิ่งต่อไปนี้:

  • COMMAND - initกระบวนการที่เปิดไฟล์เป็นในตัวอย่างนี้ทุกอย่างที่เกี่ยวข้องกับ
  • PID - หมายเลขกระบวนการของกระบวนการดังกล่าว
  • USER - ผู้ใช้ที่กระบวนการทำงาน สำหรับก็เกือบเสมอinitroot
  • FD - ตัวอธิบายไฟล์ของไฟล์ที่พบบ่อยที่สุด:
    • cwd- ไดเรกทอรีการทำงานปัจจุบัน (คุณอาจสังเกตเห็นความคล้ายคลึงกันกับpwdคำสั่งที่พิมพ์ไดเรกทอรีการทำงานปัจจุบัน)
    • rtd - ไดเรกทอรีรากของกระบวนการ
    • txt- A text fileอาจหมายถึงไฟล์การกำหนดค่าที่เกี่ยวข้องกับกระบวนการหรือ "ซอร์สโค้ด" ที่เกี่ยวข้องกับ (หรือเป็นของ) กระบวนการ
    • mem - "หน่วยความจำที่แมปไฟล์" ซึ่งหมายถึงส่วนของหน่วยความจำเสมือน (อ่าน: RAM) ที่ได้รับมอบหมายให้ไฟล์
    • A number - ตัวเลขแสดงถึง file descriptor จริงตัวละครหลังตัวเลขคือโหมดที่เปิดไฟล์:
    • r - อ่าน
    • w - เขียน
    • u - อ่านและเขียน.
  • TYPE - ระบุประเภทที่แท้จริงของไฟล์โดยทั่วไปคือ:
    • REG - ไฟล์ปกติ
    • DIR - ไดเรกทอรี
    • FIFO - เข้าก่อนออกก่อน
  • DEVICE - หมายเลขหลักและรองของอุปกรณ์ที่เก็บไฟล์
  • SIZE - ขนาดของไฟล์หน่วยเป็นไบต์
  • NODE - หมายเลข inode ของไฟล์
  • NAME - ชื่อของไฟล์

ตอนนี้อาจจะล้นหลามไปหน่อย แต่ถ้าคุณทำงานกับlsofสองสามครั้งมันจะซึมซาบเข้าสู่สมองของคุณอย่างรวดเร็ว

ดังที่ได้กล่าวมาแล้วผลลัพธ์ของlsofสั้นลงที่นี่ หากไม่มีข้อโต้แย้งหรือตัวกรองlsofจะสร้างบรรทัดเอาต์พุตจำนวนหลายร้อยบรรทัดซึ่งจะทำให้คุณสับสนเท่านั้น

มีวิธีการพื้นฐานสองวิธีในการแก้ปัญหานี้:

  • ใช้lsofตัวเลือกบรรทัดคำสั่งหนึ่งรายการขึ้นไปเพื่อ จำกัด ผลลัพธ์ให้แคบลง
  • grepท่อผ่านการส่งออกเช่น

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

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

lsof /path/to/your/file

สิ่งนี้จะสร้างผลลัพธ์คล้ายกับสิ่งนี้:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
vim 2679 root    5w   REG  254,1   121525 6035622 /root/lsof.txt

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

lsof +D /path/to/your/directory/

สังเกตุเห็นว่ามีการทับส่วนท้ายที่สำคัญ มิฉะนั้นlsofจะถือว่าคุณหมายถึงไฟล์ปกติ อย่าสับสนโดย+ในด้านหน้าของธง - lsofมีตัวเลือกบรรทัดคำสั่งจำนวนมากเพื่อที่จะตอบสนองความต้องการนอกเหนือจากการร่วมกันมากขึ้น+ -ผลลัพธ์จะเป็นดังนี้:

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
mocp    5637  music    4r   REG   0,19 10147719 102367344 /home/Music/RMS_GNU_SONG.ogg

นั่นหมายความว่ากระบวนการmocpที่มี PID 5637เป็นของผู้ใช้ที่ได้เปิดไฟล์ที่เรียกว่าmusic RMS_GNU_SONG.oggอย่างไรก็ตามแม้หลังจากปิดกระบวนการดังกล่าวแล้วยังคงมีปัญหาอยู่ - วอลุ่ม NFS ไม่สามารถยกเลิกการต่อเชื่อมได้

lsofมีการ-cตั้งค่าสถานะที่แสดงไฟล์ที่เปิดชื่อกระบวนการโดยพลการ

lsof -c mocp

ที่จะสร้างผลลัพธ์เช่นนี้:

mocp    9383  music    4r   REG   0,19 10147719 102367344 /home/Music/ANOTHER_RMS_GNU_SONG.ogg

ในตัวอย่างนี้มีอินสแตนซ์อื่นของการmocpทำงานทำให้คุณไม่ต้องถอนการติดตั้งการแชร์ หลังจากปิดกระบวนการดังกล่าวคุณต้องแน่ใจว่าผู้ใช้musicไม่มีไฟล์ที่อาจเป็นปัญหาอื่น ๆ เปิดอยู่ lsofมีการ-uตั้งค่าสถานะสำหรับการแสดงไฟล์ที่เปิดโดยผู้ใช้เฉพาะ โปรดจำไว้ว่าไฟล์ไม่ได้เป็นเพียงไฟล์ปกติในฮาร์ดดิสก์ของคุณ!

lsof -u music

คุณสามารถส่งต่อผู้ใช้หลายคนโดยคั่นด้วยเครื่องหมายจุลภาค:

lsof -u music,moremusic

สำคัญหมายเหตุเกี่ยวกับการทำงานเริ่มต้นของlsof: ผลลัพธ์ที่หรือ -based ซึ่งหมายความว่าคุณจะเห็นผลไฟล์เปิดโดยกระบวนการที่เป็นเจ้าของโดยทั้งผู้ใช้หรือผู้ใช้music moremusicหากคุณต้องการเห็นกระบวนการจับคู่ผลลัพธ์ที่ผู้ใช้ทั้งสองเป็นเจ้าของคุณจะต้องผ่านการตั้งค่าสถานะ-a:

lsof -au music, moremusic

เนื่องจากผู้ใช้ทั้งสองอยู่ในกลุ่มmusicusersคุณจึงสามารถแสดงรายการไฟล์ตามกลุ่ม:

lsof -g musicusers

คุณยังสามารถรวมการตั้งค่าสถานะบรรทัดคำสั่ง:

lsof -u music,moremusic -c mocp

or

lsof -u ^music +D /home/Music

ในบรรทัดสุดท้ายที่เราเพิ่มอีกธง - พิเศษ^ซึ่งย่อมาจากตรรกะไม่ หากเอาต์พุตว่างหลังจากรันคำสั่งนั้นการ unmounting จะประสบความสำเร็จมากที่สุด

ในตัวอย่างก่อนหน้าเราส่วนใหญ่ดูไฟล์ปกติ ซ็อกเก็ตและการเชื่อมต่อเครือข่ายเป็นอย่างไร

ในการแสดงรายการการเชื่อมต่อเครือข่ายปัจจุบันทั้งหมดlsofมีการ-iตั้งค่าสถานะ:

lsof -i

ผลลัพธ์ดูเหมือนกับสิ่งที่เราเคยเห็น ...

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
owncloud  3509  myuser   25u  IPv4  44946      0t0  TCP strix.local:34217->myserver.vultr.com:https (ESTABLISHED)
firefox   3612  myuser   82u  IPv4  49663      0t0  TCP strix.local:43897->we-in-f100.1e100.net:https (ESTABLISHED)
ssh       3784  myuser    3u  IPv4  10437      0t0  TCP strix.local:51416->someserver.in:ssh (ESTABLISHED)
wget      4140  myuser    3w  IPv4  45586      0t0  TCP strix.local:54460->media.ccc.de:http (CLOSE_WAIT)

... ยกเว้นข้อแตกต่าง: แทนที่ชื่อไฟล์หรือไดเรกทอรีNAMEตอนนี้คอลัมน์จะแสดงข้อมูลการเชื่อมต่อ แต่ละการเชื่อมต่อประกอบด้วยส่วนต่าง ๆ ดังต่อไปนี้:

  • มาตรการ.
  • ชื่อโฮสต์ท้องถิ่น
  • พอร์ตต้นทางของการเชื่อมต่อ
  • ชื่อ DNS ปลายทาง
  • พอร์ตปลายทาง.
  • สถานะของการเชื่อมต่อ

เช่นเดียวกับเครื่องมืออื่น ๆ มากมายคุณอาจเลือกที่จะไม่ระบุชื่อและพอร์ต DNS ( -nและ-Pตามลำดับ) การตั้งค่าสถานะ-iใช้พารามิเตอร์เพิ่มเติม คุณสามารถระบุหรือไม่ที่จะแสดงให้เห็นtcp, udpหรือicmpการเชื่อมต่อหรือพอร์ตบาง:

lsof -i :25
or
lsof -i :smtp

สามารถรวมพารามิเตอร์ได้อีกครั้ง ตัวอย่างต่อไปนี้ ...

lsof -i tcp:80

... จะแสดงการเชื่อมต่อ TCP โดยใช้พอร์ต 80 เท่านั้นคุณสามารถรวมเข้ากับตัวเลือกที่คุณรู้จักจากไฟล์ "classic":

lsof -a -u httpd -i tcp

นี้จะแสดงการเชื่อมต่อ TCP httpdทั้งหมดเปิดโดยผู้ใช้ หมายเหตุการ-aตั้งค่าสถานะซึ่งเปลี่ยนลักษณะการทำงานเริ่มต้นของlsof(ตามที่กล่าวไว้ก่อนหน้านี้) เช่นเดียวกับเครื่องมือบรรทัดคำสั่งส่วนใหญ่คุณสามารถลงลึกได้อย่างมาก ต่อไปนี้จะแสดงการเชื่อมต่อ TCP ที่มีสถานะเป็น "ESTABLISHED" เท่านั้น:

lsof -i -s TCP:ESTABLISHED

ณ จุดนี้คุณควรมีความเข้าใจพื้นฐานเกี่ยวกับวิธีการlsofทำงานพร้อมกับกรณีการใช้งานทั่วไปบางอย่าง สำหรับการอ่านเพิ่มเติมดู manpage ของlsofในระบบของคุณ

ฝากความเห็น

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

เรียนรู้วิธีการตั้งค่า Nginx บน Ubuntu สำหรับการสตรีมวิดีโอสด HLS ด้วยคำแนะนำที่ชัดเจนและเป็นประโยชน์

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

เรียนรู้การใช้ Percona XtraBackup สำหรับการสำรองข้อมูลด้วยวิธีที่เป็นระบบและง่ายดายบน WordPress ออนไลน์ของคุณ

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true