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

ใช้ /proc Filesystem สำรวจภายใน Linux

Linux โปร่งใสมาก ไดเรกทอรี /proc เป็น virtual filesystem ที่ kernel สร้างขึ้นใหม่ทุกครั้งที่บูท และอัปเดตตลอดเวลา ไม่ได้เก็บบนดิสก์จริง แต่อ่านได้เหมือนไฟล์ข้อความ ทำให้ดูข้อมูลระบบได้ง่ายโดยไม่ต้องใช้ library พิเศษ

ไฟล์สำคัญใน /proc

/proc/cpuinfo

ข้อมูล CPU แบบละเอียด: model name, cores, threads, cache, flags (avx, sse, vmx), bogomips

cat /proc/cpuinfo

/proc/meminfo

ข้อมูลหน่วยความจำและ swap: MemTotal, MemFree, MemAvailable, Buffers, Cached, SwapTotal, SwapFree

cat /proc/meminfo

/proc/cmdline

Kernel boot parameters ที่ใช้บูทครั้งนี้ (รวม kernel parameter เช่น quiet, splash, nomodeset, module_blacklist)

cat /proc/cmdline

/proc/filesystems

รายการ filesystem ที่ kernel รองรับ (nodev = virtual fs เช่น proc, sysfs, tmpfs)

cat /proc/filesystems

/proc/<PID>/

แต่ละ process มีโฟลเดอร์ย่อยใน /proc ตาม PID ไฟล์สำคัญ:

  • cmdline: คำสั่งเริ่มต้น (null-separated)
  • environ: environment variables
  • fd/: file descriptors ที่เปิดอยู่
  • status: สถานะ process (state, memory, threads, capabilities)
  • exe: symlink ไปยัง binary จริง
  • cwd: working directory

/proc/modules

Kernel modules ที่โหลดอยู่ (เหมือน lsmod)

cat /proc/modules

/proc/mounts

รายการ mount points ปัจจุบัน (เหมือน findmnt หรือ cat /etc/mtab)

cat /proc/mounts

/proc/sys/

Kernel runtime parameters ที่ปรับได้ระหว่างรัน (sysctl) เช่น:

  • /proc/sys/vm/swappiness
  • /proc/sys/net/ipv4/ip_forward
  • /proc/sys/kernel/hostname

แก้ไขได้ด้วย echo value | sudo tee /proc/sys/.../param หรือ sysctl -w

อื่นๆ ที่น่าสนใจ

  • /proc/version: kernel version, gcc version
  • /proc/uptime: uptime วินาที, idle time
  • /proc/loadavg: load average 1, 5, 15 นาที
  • /proc/interrupts: IRQ interrupts ต่อ CPU
  • /proc/partitions: block devices และ partitions

การใช้งานจริง

เขียนสคริปต์อ่าน /proc เพื่อ monitoring, alerting, หรือ debug kernel/hardware issues ได้ง่าย เพราะเป็น text file ธรรมดา

# ตัวอย่าง: ดู CPU temperature (หากมี sensor)
cat /proc/acpi/thermal_zone/*/temperature 2>/dev/null || sensors

สำรวจ /proc เองจะค้นพบข้อมูลมากมายที่ช่วยเข้าใจ Linux ลึกขึ้น!