Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

ดูกิจกรรมไฟล์ของแอพแบบเรียลไทม์บน Linux โดยใช้คำสั่งง่ายๆ เพียงคำสั่งเดียว

ดูกิจกรรมไฟล์ของแอพแบบเรียลไทม์บน Linux โดยใช้คำสั่งง่ายๆ เพียงคำสั่งเดียว

เผยแพร่เมื่อวันที่ 19 เมษายน 2026 เวลา 14:00 น. EDT

ประสบการณ์ของ Afam ในการเผยแพร่เทคโนโลยีย้อนกลับไปในปี 2018 เมื่อเขาทำงานให้กับ Make Tech Easier ในช่วงหลายปีที่ผ่านมา เขาได้สร้างชื่อเสียงจากการเผยแพร่คำแนะนำ บทวิจารณ์ เคล็ดลับ และบทความอธิบายคุณภาพสูง ครอบคลุมถึง Windows, Linux และเครื่องมือโอเพ่นซอร์ส ผลงานของเขาได้รับการนำเสนอบนเว็บไซต์ชั้นนำ รวมถึง Technical Ustad, Windows Report, Guiding Tech, Alphr และ Next of Windows

เขาสำเร็จการศึกษาระดับปริญญาตรีสาขาวิทยาการคอมพิวเตอร์และเป็นผู้สนับสนุนอย่างแข็งขันในด้านความเป็นส่วนตัวและความปลอดภัยของข้อมูล พร้อมด้วยเคล็ดลับ วิดีโอ และบทช่วยสอนมากมายเกี่ยวกับหัวข้อที่เผยแพร่บนช่อง YouTube ของ Fuzo Tech

เมื่อเขาไม่ได้ทำงาน เขาชอบที่จะใช้เวลาอยู่กับครอบครัว ปั่นจักรยาน หรือดูแลสวน 

เมื่อฉันตั้งค่า Linux โดยทั่วไประบบจะทำงานตามที่คาดไว้ ที่ไหนสักแห่งในเบื้องหลังจะสร้างไฟล์ อัปเดตการกำหนดค่า และสร้างแคช อย่างไรก็ตาม ฉันไม่ค่อยได้แอบดูกระบวนการเหล่านี้เลยหากไม่มีสิ่งใดเสียหาย

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

คุณลักษณะ Linux ที่ติดตามทุกสิ่ง

กิจกรรมของไฟล์นั้นง่ายต่อการตรวจสอบมากกว่าที่คุณคิด

ดูกิจกรรมไฟล์ของแอพแบบเรียลไทม์บน Linux โดยใช้คำสั่งง่ายๆ เพียงคำสั่งเดียว

Inotify เป็นระบบย่อยระดับเคอร์เนลที่เพิ่มลงใน Linux ในเวอร์ชัน 2.6.13 คุณสมบัตินี้จะบันทึกเหตุการณ์ระบบไฟล์แบบเรียลไทม์และรายงานเหตุการณ์ที่เกิดขึ้น มันเป็นเพียงเคอร์เนลที่แจ้งให้คุณทราบถึงการเปลี่ยนแปลง

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

คุณไม่สามารถโต้ตอบกับ inotify ได้โดยตรง และนั่นคือเหตุผลที่คุณต้องการ inotify-tools โดยมียูทิลิตีพื้นที่ผู้ใช้สองรายการที่ทำให้คุณลักษณะเคอร์เนลสามารถใช้งานได้จากเทอร์มินัล

<หัว>

ส่วนประกอบ

มันทำอะไร

ไม่แจ้ง

ระบบย่อยเคอร์เนลที่สร้างเหตุการณ์ระบบไฟล์

ไม่แจ้งรอ

สตรีมกิจกรรมเหล่านั้นแบบสดๆ ไปยังเทอร์มินัลของคุณ

ไม่แจ้งให้ทราบ

นับจำนวนเหตุการณ์แต่ละประเภทที่เกิดขึ้นในช่วงเวลาที่กำหนด

จากส่วนประกอบเหล่านี้ inotifywait เป็นตัวเลือกที่ช่วยให้สามารถเข้าถึงการตรวจสอบแบบเรียลไทม์

คำสั่งเดียวที่ให้คุณรับชมแอพถ่ายทอดสด

จากศูนย์ถึงการติดตามไฟล์แบบเรียลไทม์ในไม่กี่วินาที

ดูกิจกรรมไฟล์ของแอพแบบเรียลไทม์บน Linux โดยใช้คำสั่งง่ายๆ เพียงคำสั่งเดียว

ในการเริ่มต้น คุณเพียงใช้คำสั่งเดียวในการตั้งค่า inotify-tools เนื่องจาก inotify มีอยู่ในเคอร์เนลแล้ว

<หัว>

ดิสโทร

คำสั่ง

อูบุนตู/เดเบียน

sudo apt ติดตั้ง inotify-tools

เฟโดร่า

sudo dnf ติดตั้ง inotify-tools

อาร์คลินุกซ์

sudo pacman -S inotify-tools

openSUSE

sudo zypper ติดตั้ง inotify-tools

เมื่อติดตั้งแล้ว คุณสามารถยืนยันได้ว่าพร้อมใช้งานโดยเรียกใช้ inotifywait --version แล้วเรียกใช้ inotifywait -m ~/Documents สิ่งสำคัญคือต้องรวมแฟล็ก -m เพื่อว่าเมื่อคำสั่งรัน คำสั่งจะไม่ออกหลังจากเหตุการณ์แรก ทันที คุณจะเริ่มเห็นการเปลี่ยนแปลงในไดเร็กทอรี ซึ่งในกรณีนี้คือไดเร็กทอรี "Documents" เหตุการณ์ที่คุณเห็นเป็นไปตามรูปแบบ:ไดเรกทอรีที่ดู/ประเภทเหตุการณ์/ไฟล์ที่ทำให้เกิดเหตุการณ์ ตัวอย่างเช่น คุณอาจมี /home/user/Documents/ MODIFY notes.txt .

เมื่อคุณมีกิจกรรม คุณสามารถใช้แฟล็กเพื่อทำให้รายงานมีประโยชน์มากขึ้น

<หัว>

ตั้งค่าสถานะ

วัตถุประสงค์

-ม

ทำงานต่อไปอย่างต่อเนื่องแทนที่จะออกหลังจากเหตุการณ์หนึ่ง

-r

ดูไดเรกทอรีย่อยทั้งหมดแบบวนซ้ำ

-e

กรองสำหรับประเภทเหตุการณ์เฉพาะ เช่น -e สร้าง แก้ไข ลบ

--รูปแบบ

ควบคุมโครงสร้างเอาต์พุตเพื่อให้สามารถอ่านหรือบันทึกได้

--timefmt

เพิ่มการประทับเวลาให้กับแต่ละเหตุการณ์

นี่คือคำสั่งพื้นฐานที่คุณจะใช้ คุณเพียงแค่ต้องชี้ให้พวกเขาเห็นสิ่งที่เป็นจริง

สิ่งที่ฉันเห็นจริง ๆ เมื่อใช้กับแอปจริง

ลักษณะการทำงานของไฟล์ที่ปกติคุณไม่เคยสังเกตเห็น

หากต้องการดูว่าเกิดอะไรขึ้นบนคอมพิวเตอร์ของฉัน ฉันใช้แอปในลักษณะปกติโดยชี้ inotifywait ไปยังไดเร็กทอรีเฉพาะ สิ่งที่ทำให้ฉันประหลาดใจจริงๆ ไม่ใช่สิ่งที่แสดงให้ฉันเห็น แต่เป็นกิจกรรมเบื้องหลังจำนวนมหาศาล

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

จากนั้นฉันก็เปลี่ยนไปใช้ ~/.mozilla/firefox/ ไดเร็กทอรีที่ฉันตรวจสอบ Firefox เมื่อฉันเปิดเบราว์เซอร์ การเขียนก็พุ่งเข้ามาทันที ภายในไม่กี่วินาที ฉันมี places.sqlite สำหรับบุ๊กมาร์กและประวัติการเรียกดู จากนั้น sessionstore.jsonlz4 สำหรับแท็บที่เปิดอยู่ อย่างไรก็ตาม สิ่งที่ฉันพบว่าน่าสนใจคือการเขียนอย่างต่อเนื่องแม้ในขณะที่เบราว์เซอร์ไม่ได้ใช้งานก็ตาม นี่ดูเหมือนจะเป็นพฤติกรรมปกติของเบราว์เซอร์ ฉันสังเกตเห็นว่าการเขียนที่ไม่ได้ใช้งานคล้ายกันกับ Chrome กิจกรรมพื้นหลังจำนวนมากใน Firefox มีความสำคัญเนื่องจากจะล้างข้อมูลเซสชันไปยังดิสก์อย่างต่อเนื่อง เพื่อให้มั่นใจว่าแท็บสามารถกู้คืนได้หลังจากการขัดข้อง

อย่างไรก็ตาม จากทั้งหมดนี้ การติดตั้งแพ็คเกจทำให้เกิดเสียงรบกวนมากที่สุด ฉันรัน การติดตั้ง apt ขณะดู /var/lib/dpkg/ และฉันเห็นไฟล์ lock-frontend ปรากฏขึ้นก่อน นี่เป็นกลไกสำคัญที่ช่วยให้แน่ใจว่าการดำเนินงานของแพ็คเกจไม่ได้ทำงานพร้อมกัน หลังจากนั้น มีการเขียนจำนวนมากเกิดขึ้นในฐานข้อมูลแพ็กเกจ

สิ่งที่สอดคล้องกันในทั้งสามไดเร็กทอรีที่ฉันสังเกตคือไม่มีการดำเนินการล้างไฟล์เลยแม้แต่ครั้งเดียว ทั้งหมดมาพร้อมกับเลเยอร์

เมื่อสิ่งนี้มีประโยชน์อย่างแท้จริงในชีวิตจริง

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

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

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