ไฟล์ที่เปิดโดยกระบวนการ XYZ สามารถพบได้ด้วยคำสั่ง
ls -l /proc/PID/fd
มีอยู่แล้วที่สามารถทำได้ในวิธีการโต้ตอบมากขึ้นเช่นtail
การรีเฟรชอัตโนมัติทุก ๆ x วินาที?
ไฟล์ที่เปิดโดยกระบวนการ XYZ สามารถพบได้ด้วยคำสั่ง
ls -l /proc/PID/fd
มีอยู่แล้วที่สามารถทำได้ในวิธีการโต้ตอบมากขึ้นเช่นtail
การรีเฟรชอัตโนมัติทุก ๆ x วินาที?
คำตอบ:
ลองใช้watch
คำสั่ง:
watch -n 10 ls -l /proc/$$/fd
ดูดี
คุณสามารถใช้โรงเรียนเก่าในขณะที่วง:
while :
do
ls -l /proc/$$/fd
sleep 10
done
watch
อยู่ในแพ็คเกจprocpsบนระบบที่ใช้เดเบียนและprocpsรอบต่อนาทีบนระบบที่ได้รับจาก RedHat
strace
หากคุณต้องการที่จะเห็นแต่ละไฟล์ที่มันจะถูกเปิดคุณสามารถกรองด้วย ตัวอย่างเช่น:
strace -p _pid_of_app_ -e trace=open,close
-y
และ-f
ถ้าคุณพยายามที่จะตรวจแก้จุดบกพร่องสิ่งที่ทำงานในเปลือก เพียงผ่านเชลล์ PID และ-f
จะติดตามส้อมใด ๆ
คุณสามารถรวมlsof
และwatch
.
ตัวอย่างเช่นwatch "lsof -p 1234"
จะให้รายชื่อไฟล์ที่เปิดทั้งหมดของ pid 1234 ทุก 2 วินาที คุณสามารถเปลี่ยนพารามิเตอร์บางอย่างเพื่อตอบสนองความต้องการของคุณ
-r
lsof
ดังนั้นฉันใช้watch
เพื่อดำเนินการlsof
ทุกสองวินาที
ฉันสร้างไฟล์ bash โดยที่ฉันกำลังเขียนเอาต์พุตของคำสั่งไปยังไฟล์ ไฟล์ถูกสร้างขึ้นตามวันที่ปัจจุบัน ที่นี่ฉันกำลังนับจำนวนไฟล์ที่เปิดอยู่
#!/bin/bash
while :
do
cd /proc/<PID>/fd
today=$(date +"%m-%d-%Y")
filename="/tmp/${today}.txt"
ls -l | wc -l >> "${filename}"
sleep 10
done