Каталог /proc в операционных системах linux — это настоящий кладезь информации о системе! Так как основной философией UNIX подобных систем является выражение «Всё — файл», разработчики упростили нам задачу получения информации о системе (собственно осталось только прочитать необходимый файл в каталоге /proc).
/proc/cpuinfo
Этот файл содержит подробную информацию о процессорах системы:
processor : 0
vendor_id : AuthenticAMD
cpu family : 17
model : 3
model name : AMD Athlon(tm) X2 Dual-Core QL-65
stepping : 1
cpu MHz : 2100.000
cache size : 512 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow constant_tsc nonstop_tsc extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch osvw skinit lbrv svm_lock nrip_save
bogomips : 4200.65
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management: ts ttp tm stc 100mhzsteps hwpstate
processor : 1
vendor_id : AuthenticAMD
cpu family : 17
model : 3
model name : AMD Athlon(tm) X2 Dual-Core QL-65
stepping : 1
cpu MHz : 2100.000
cache size : 512 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 1
initial apicid : 1
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow constant_tsc nonstop_tsc extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch osvw skinit lbrv svm_lock nrip_save
bogomips : 4189.61
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management: ts ttp tm stc 100mhzsteps hwpstate
Не менее известен файл /proc/meminfo. Он содержит исчерпывающие данные об использовании памяти системы:
MemTotal: 3094896 kB
MemFree: 1755180 kB
Buffers: 98320 kB
Cached: 630408 kB
SwapCached: 0 kB
Active: 665956 kB
Inactive: 462440 kB
Active(anon): 400520 kB
Inactive(anon): 5708 kB
Active(file): 265436 kB
Inactive(file): 456732 kB
Unevictable: 32 kB
Mlocked: 32 kB
HighTotal: 2235144 kB
HighFree: 1087648 kB
LowTotal: 859752 kB
LowFree: 667532 kB
SwapTotal: 2104476 kB
SwapFree: 2104476 kB
Dirty: 96 kB
Writeback: 0 kB
AnonPages: 399692 kB
Mapped: 157932 kB
Shmem: 6568 kB
Slab: 59096 kB
SReclaimable: 42040 kB
SUnreclaim: 17056 kB
KernelStack: 2688 kB
PageTables: 7500 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 3651924 kB
Committed_AS: 1563644 kB
VmallocTotal: 122880 kB
VmallocUsed: 46688 kB
VmallocChunk: 66560 kB
HardwareCorrupted: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 4096 kB
DirectMap4k: 12280 kB
DirectMap4M: 897024 kB
/proc/mounts — содержит список смонтированных в данный момент устройств:
rootfs / rootfs rw 0 0
none /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
none /proc proc rw,nosuid,nodev,noexec,relatime 0 0
none /dev devtmpfs rw,relatime,size=1541852k,nr_inodes=212140,mode=755 0 0
none /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0
/dev/disk/by-uuid/f947e259-461d-467c-9a13-3d4e4728b293 / ext4 rw,relatime,errors=remount-ro,barrier=1,data=ordered 0 0
none /sys/kernel/debug debugfs rw,relatime 0 0
none /sys/kernel/security securityfs rw,relatime 0 0
none /dev/shm tmpfs rw,nosuid,nodev,relatime 0 0
none /var/run tmpfs rw,nosuid,relatime,mode=755 0 0
none /var/lock tmpfs rw,nosuid,nodev,noexec,relatime 0 0
/dev/sda5 /home ext4 rw,relatime,barrier=1,data=ordered 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime 0 0
gvfs-fuse-daemon /home/dimas/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=1000,group_id=1000 0 0
/proc/PID — каталог содержащий информацию о каждом процессе системы. Тут PID — идентификационный номер процесса
Узнать PID можно запустив в терминале команду:
top
Вы увидите подобную картину:
В этой статье описаны далеко не все каталоги и файлы директории /proc ! Это скорее всего просто не реально описать! Но теперь вы знаете что в linux можно обойтись без сложных функции и библиотек для получения данных о процессах и ресурсах системы.