Tips en Trucs 2012

Proc bestandssysteem

Het proc bestandssysteem is een speciaal bestandssysteem en komt voor in de meeste op UNIX gebaseerde systemen. Het bevat zeer veel informatie in tekstformaat, waarvan het overgrote deel voor de doorsnee gebruiker niet erg gebruiksvriendelijk wordt weergegeven.

De bestanden in de /proc map worden niet bewaard op een fysiek apparaat, waardoor ze bij elke herstart opnieuw worden aangemaakt. Eigenlijk zijn het zelfs geen bestanden, maar pseudo-bestanden die enkel in het werkgeheugen (RAM) van de computer bestaan.

Een overzicht van de meest bruikbare /proc bestanden.

/proc/[pid]/

De map /proc bevat per opgestart proces een map met als naam het PID (Process IDentification getal). Laten we een paar van de in deze mappen voorkomende bestanden bekijken.

/proc/[pid]/cmdline

Bevat de opdrachtregel waarmee het proces is opgestart.
dany@linux-bxth:~> more /proc/1021/cmdline 
/usr/sbin/cupsd
Of
dany@linux-bxth:~> cat -v /proc/1021/cmdline 
/usr/sbin/cupsd^@-C^@/etc/cups/cupsd.conf^@
De tweede opdracht toont de speciale karakters die door sommige terminals niet correct worden weergegeven. De tweede uitvoer moet je dus lezen als /usr/sbin/cupsd -C /etc/cups/cupsd.conf waarbij de speciale karakters spaties zijn.

/proc/[pid]/cwd

Dit is een koppeling (symbolic link, verbinding) naar de werkmap van het proces.
ls /proc/6945/cwd/

/proc/[pid]/status

Dit bestand bevat informatie over de proces status, zoals zijn naam, status, pid, parent pid, eigenaar, enz.
dany@linux-bxth:~> more /proc/6945/status 
Name:   bash
State:  S (sleeping)
Tgid:   6945
Pid:    6945
PPid:   6943
TracerPid:      0
Uid:    1000    1000    1000    1000
Gid:    100     100     100     100
FDSize: 256
Groups: 33 100 
VmPeak:    14904 kB
VmSize:    14904 kB
VmLck:         0 kB
VmHWM:      3792 kB
VmRSS:      3792 kB
VmData:     1928 kB
VmStk:       136 kB
VmExe:       616 kB
VmLib:      2248 kB
VmPTE:        48 kB
VmSwap:        0 kB
Threads:        1
SigQ:   0/79903
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000010000
SigIgn: 0000000000384004
SigCgt: 000000004b813efb
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff
Cpus_allowed:   ff
Cpus_allowed_list:      0-7
Mems_allowed:   00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,000
00000,00000001
Mems_allowed_list:      0
voluntary_ctxt_switches:        1346
nonvoluntary_ctxt_switches:     8

/proc/cmdline

Bevat alle argumenten die bij het opstarten aan de kernel zijn doorgegeven.
dany@linux-bxth:~> more /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz root=/dev/sda7 resume=/dev/sda6 splash=silent quiet showopt

/proc/cpuinfo

Bevat informatie over de processor, zoals de architectuur, kloksnelheid en buffergrootte.
dany@linux-bxth:~> more /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 42
model name      : Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz
stepping        : 7
cpu MHz         : 3401.000
cache size      : 8192 KB
physical id     : 0
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall
 nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est t
m2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 x2apic popcnt aes xsave avx lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 6784.74
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:
...

/proc/filesystems

Bevat een lijst met alle door de kernel ondersteunde bestandssystemen. Regels die beginnen met nodev zijn bestandssystemen zonder fysiek apparaat, zoals netwerk bestandssystemen en proc.
dany@linux-bxth:~> more /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   cgroup
nodev   cpuset
nodev   tmpfs
nodev   devtmpfs
nodev   debugfs
nodev   securityfs
nodev   sockfs
nodev   usbfs
nodev   pipefs
nodev   anon_inodefs
nodev   devpts
        ext3
        ext2
        ext4
nodev   ramfs
nodev   hugetlbfs
        iso9660
nodev   pstore
nodev   mqueue
nodev   autofs
nodev   fuse
        fuseblk
nodev   fusectl

/proc/loadavg

Bevat informatie over de belasting van het systeem. De eerste drie velden tonen hoeveel processen de afgelopen minuut, drie minuten en 15 minuten er gemiddeld actief waren.

Het volgende veld bestaat uit twee door een slash gescheiden getallen. Het eerste getal bevat het aantal op dit ogenblik actieve processen/threats. Dit getal kan nooit hoger zijn dan het aantal kernen in uw processor. Het tweede getal (na de slash) het huidig aantal gestarte processen.

Het vijfde en laatste getal is de PID van het allerlaatst gestarte proces. Dit is meestal het PID van het proces waarmee je deze informatie opvraagt (in het voorbeeld de opdracht more).
dany@linux-bxth:~> more /proc/loadavg
1.50 1.38 1.20 2/471 13414

/proc/meminfo

Bevat informatie in verband met het gebruik van het geheugen.
dany@linux-bxth:~> more /proc/meminfo
MemTotal:       10242256 kB
MemFree:         2246596 kB
Buffers:         4421872 kB
Cached:          1917964 kB
SwapCached:           84 kB
Active:          1767904 kB
Inactive:        5462016 kB
Active(anon):     783444 kB
Inactive(anon):   109148 kB
Active(file):     984460 kB
Inactive(file):  5352868 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:      10485756 kB
SwapFree:       10485644 kB
Dirty:               124 kB
Writeback:             0 kB
AnonPages:        890052 kB
Mapped:           175748 kB
Shmem:              2484 kB
Slab:             553788 kB
SReclaimable:     409968 kB
SUnreclaim:       143820 kB
KernelStack:        3832 kB
PageTables:        35200 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    15606884 kB
Committed_AS:    3840596 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      348888 kB
VmallocChunk:   34359385780 kB
HardwareCorrupted:     0 kB
AnonHugePages:    286720 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      677888 kB
DirectMap2M:     9791488 kB

/proc/net/

Deze map bevat bestanden in verband met het netwerk.

/proc/net/arp

Bevat de arp tabel.
dany@linux-bxth:~> more /proc/net/arp
IP address       HW type     Flags       HW address            Mask     Device
192.168.1.1      0x1         0x2         00:26:91:a5:12:34     *        eth0

/proc/net/dev

Bevat voor elk netwerk apparaat het totaal verzonden en ontvangen pakketten.
dany@linux-bxth:~> more /proc/net/dev
Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
    lo:   21795     155    0    0    0     0          0         0    21795     155    0    0    0     0       0          0
  eth0: 412915029  937039    0    0    0     0          0         0 5778906386 4007381    0    0    0     0       0          0
 wlan0: 1075926   14205    0    0    0     0          0         0 76428101   50386    0    0    0     0       0          0
vmnet1:       0       0    0    0    0     0          0         0        0      37    0    0    0     0       0          0
vmnet8:       0       0    0    0    0     0          0         0        0      37    0    0    0     0       0          0

/proc/net/route

Bevat de routing tabel in hexadecimaal formaat.
dany@linux-bxth:~> more /proc/net/route
Iface   Destination     Gateway         Flags   RefCnt  Use     Metric  Mask            MTU     Window  IRTT                                     
                  
eth0    00000000        0101A8C0        0003    0       0       0       00000000        0       0       0                                        
                                       
lo      0000007F        00000000        0001    0       0       0       000000FF        0       0       0                                        
                                         
eth0    0000FEA9        00000000        0001    0       0       0       0000FFFF        0       0       0                                        
                                       
vmnet1  009C10AC        00000000        0001    0       0       0       00FFFFFF        0       0       0                                        
                                     
eth0    0001A8C0        00000000        0001    0       0       0       00FFFFFF        0       0       0                                        
                                       
vmnet8  0051A8C0        00000000        0001    0       0       0       00FFFFFF        0       0       0

/proc/net/wireless

Bevat informatie over de huidige draadloze verbinding, zoals de kwaliteit en het aantal verworpen pakketten.
dany@linux-bxth:~> more /proc/net/wireless
Inter-| sta-|   Quality        |   Discarded packets               | Missed | WE
 face | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22

/proc/swaps

Toont de grootte van de in gebruik zijnde swapruimte en de prioriteit van de gedefinieerde swap partities.
dany@linux-bxth:~> more /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/sda6                               partition       10485756        112     0

/proc/sys/kernel/hostname

Bevat de naam van het systeem.
dany@linux-bxth:~> more /proc/sys/kernel/hostname
linux-bxth
Met de opdracht
echo ‘nieuwenaam’ > /proc/sys/kernel/hostname
kun je het systeem een nieuwe naam geven.

/proc/sys/kernel/threads-max

Bevat het maximum aantal processen/threads die er op een gegeven ogenblik op het systeem mogelijk zijn. Vergelijk dit getal met het getal na de slash in het vierde veld van het /proc/loadavg bestand.
dany@linux-bxth:~> more /proc/sys/kernel/threads-max
159806

/proc/sys/vm/swappiness

De waarde in dit bestand bepaald hoe snel de kernel het geheugen wisselt (swapt). Bij het verhogen van deze waarde wil de kernel vaker swappen, deze waarde verlagen zorgt voor het verlagen van kernel's neiging tot swappen. De standaard waarde is 60.
dany@linux-bxth:~> more /proc/sys/vm/swappiness
60

/proc/uptime

Bevat twee getallen, de eerste bevat de tijd in seconden dat het systeem actief is, het tweede getal de tijd dat het systeem in rust is (niets doet).
dany@linux-bxth:~> more /proc/uptime
17787.26 124795.12
Om het in rust percentage van het systeem te berekenen, kun je de volgende opdracht gebruiken:
dany@linux-bxth:~> echo `cut -d' ' -f2 /proc/uptime` / `cut -d' ' -f1 /proc/uptime` | bc -l
7.02635592629648798034

/proc/vmstat

Bevat informatie in verband met het virtueel geheugen.
dany@linux-bxth:~> more /proc/vmstat
nr_free_pages 548927
nr_inactive_anon 27184
nr_active_anon 206658
nr_inactive_file 1337217
nr_active_file 248875
nr_unevictable 0
nr_mlock 0
nr_anon_pages 152816
nr_mapped 45315
nr_file_pages 1586738
nr_dirty 110
nr_writeback 0
nr_slab_reclaimable 102582
nr_slab_unreclaimable 36217
nr_page_table_pages 8954
nr_kernel_stack 492
nr_unstable 0
nr_bounce 0
nr_vmscan_write 43
nr_writeback_temp 0
nr_isolated_anon 0
nr_isolated_file 0
nr_shmem 625
nr_dirtied 586634
nr_written 532276
numa_hit 26951870
numa_miss 0
numa_foreign 0
numa_interleave 16516
numa_local 26951870
numa_other 0
...

/proc/sys/net/ipv4/conf/default/forwarding

Bepaalt of de kernel tcp forwarding toelaat. De standaard waarde is 0 wat geen forwarding toelaat.
dany@linux-bxth:~> more /proc/sys/net/ipv4/conf/default/forwarding
0
Deze waarde op 1 zetten laat tcp forwarding toe. Denk aan het zonder wachtwoord delen van een internet verbinding.