Het Proc bestandssysteem leren begrijpen



Vergelijkbare documenten
Gentoo linux. Introductie. Gentoo is anders. LinuxFocus article number door Guido Socher (homepage) Over de auteur:

Unix Console Gebruik

De Linux Boom structuur

DocBook XML documenten bewerken

Zelftest UNIX/Linux basiscursus

Keuzevak Linux - Week 3

Korte uitleg: Wie mag wat met welk bestand

Interview met Jeff Dike

We beginnen met een strikvraag: Welk van de volgende zijn bestanden?

4/4 Bestandssystemen

MS Virtual pc 2007 Handleiding

Een Samba fileserver onder Ubuntu Edgy Server

Linux op de desktop: een computer voor mam

Permanente netwerkverbinding leggen naar je NAS

Automail voor fli4l. Korte beschrijving van de Omgeving. Het Probleem. LinuxFocus article number 308

Korte uitleg: Mounten van filesystemen

Een Minolta Dimage 5 camera gebruiken onder Linux

Hoofdstuk 3: Processen: Beschrijving en Besturing. Wat is een proces? Waarom processen? Wat moet het OS ervoor doen? Is het OS zelf een proces?

RAM optimaliseren: Cacheman

Arjen Glas Stage: Viaict. Opdracht virtualisatie I44

Het opzetten van deze applicatie

Installeer Apache2: Landstede februari 2009 versie 3 1 Bertil Hoentjen

Analyse probleem remote execution

Zelftest UNIX/Linux basiscursus

Aandachtspunten voor installatie suse in vmware server

Friesland College Leeuwarden

Applicaties op afstand draaien met X11

Korte uitleg: Mounten van filesystemen door de desktopgebruiker

Basis UNIX commando's - overzicht

Chapter 4. eenvoudige webserver opzetten

Installatie instructies. UBplus. Voor Linux / Samba. 12-sep-11. Datum: Ref erentie: Versie: 1.1

Xampp Web Development omgeving opzetten onder Windows.

Waarmaken van Leibniz s droom

1 Excercises on /proc

Rhino versnellen met RAM-disk

schoollan Post Installatie Handleiding

Inleiding Practicum Operating Systems

Studietaak 5 Hoe installeer ik software? ProFTPD FTP-Server

Ontdek het universum. Wat is Celestia? LinuxFocus article number door Katja Socher <katja/at/linuxfocus.

Operating Systems Linux Blok 7a Partities Erik Seldenthuis

Linux voor S/390 (IBM z-series)

Kijk eerst in Computer (Mijn Computer) van je werkplek. Welke stationsletters zie je op de PC?

Dia, een programma voor het maken van diagrammen

Erik Poll Martijn Warnier.

Korte uitleg: File descriptors en redirection in de shell (en pipes)

DB architectuur.

Overzichten genereren in het FMIS

Computerarchitectuur en netwerken Toets 1 4 okt

man-pagina s schrijven

De MySQL C API. Variabelen in C Functies in C Pointers in C

ESA Week 4a: Unix. Vandaag: versiebeheer (RCS, CVS, SVN) Donderdag: Compilatiebeheer, SSH en nog het een en ander

Installatiehandleiding

8 bits: Link file parsing

Ubuntu : gebruikers en bestandsbeheer

Rhino: Back-up maken. RsyncBackup

Werken met OneNote. Gert Cuppens Gertcuppens.com

Microsoft Windows 98 installatiegids.

Linux in de computerklas

FAQ. Responsive Design. Auteur Tim Ariesen Serviceteam Fulfilment Allrounder Datum Versie 1.0

ICT Infrastructuren: Processen en Threads. 18 november 2013 David N. Jansen

Grafisch programmeren met GTK

Oefening 1: hardware block devices (zoals harde schijven) herkennen

Een ISDN fax met Linux

Hoofdstuk 2 Een route downloaden en kopiëren naar uw TomTom

TiPisch Rhino Download opruimen

Handleiding VirtualBox

XAMPP Web Development omgeving opzetten onder Windows.

Huiswerk Linux: Apache groepsrechten

SOFTLOK 12.5x. Update met behoudt van gegevens en het instellen van het EMS geheugen bereik

4+2+3 tips om een Mac sneller te maken. The Ten Commandments for an Fast Mac

Voor op afstand os installatie moeten de volgende onderdelen geïnstalleerd zijn op de Windows 2000 server.

API...1 Identificatie...1 Opties...2 Acties...3 Webserver...6 Heartbeat...6 Buffer groottes...8

Les 4 Installeren Apache2 Php MySQL

UBizz-UBizz Exchange For more information visit our website at

DIGITALE MODE MET POWER SDR

HTML beheren met Perl, HTML::TagReader

Handleiding voor Zotero versie 2.0

9/2.11 Virtuele webservers aanmaken in Apache

Remote Administration System PDA (RASmobile)

TSMS Lite, Professional and Enterprise vergelijking

Hulplink:

Handleiding Sonus Communicator voor Rion NL-22 - NL-32

Multi user Setup. Firebird database op een windows (server)

4/5 Installatieservers

Standaard Asta Powerproject Client Versie 12 Installatiedocument v1

SYSTEEMBEHEER AS/400

Dit zijn latency s die voorkomen bij het selecteren van het juiste geheugenadres in de RAM.

Instellen van IP-Aliasing op een Linux Machine Mini-HOWTO

BOB 50 School Edition Installaties netwerk en Terminal Server/Citrix

Omzeil het gebruik van mappen en bestanden over Wiki s en het werken in de 21 e eeuw

Sara-2 kan worden geïnstalleerd op de volgende operating systemen:

Hoofdstuk 1 I NSTALLATIE

Software. Opdrachten - Deel 1. Naam: Klas: 2015 versie:concept-3.4.2

Pervasive Server V9 Installatiegids

Installatiehandleiding TiC Narrow Casting Manager

Hoe partitioneer ik een hardeschijf?

Waar bevindt zich belangrijke data in mijn computer? Hoeveel Gb aan data heb ik in mijn computer?

rev Samsung SecretZone Gebruikshandleiding

Transcriptie:

LinuxFocus article number 324 http://linuxfocus.org Het Proc bestandssysteem leren begrijpen door Sandeep Grover <sandeep<at>magma-da.com> Over de auteur: Sandeep Grover werkt voor Magma Design Automation in India, het snelst groeiende EDA (Electronic Design Automation) bedrijf. In zijn vrije tijd verkent hij de interne keuken van Linux -- ooit hoopt hij er zelf ook zijn steentje toe bij te dragen. Vertaald naar het Nederlands door: Floris Lambrechts <nothanks.floris(at)linuxfocus.org> Kort: Met het /proc bestandssysteem kun je de onderliggende datastructuren van de Linux kernel bekijken en kernel parameters van een draaiend systeem veranderen. We zullen het /proc systeem beschrijven voor de Intel x86 architectuur, maar de achterliggende concepten zijn hetzelfde voor alle Linux kernels ongeacht het platform waarop ze draaien. /proc - een Virtueel Bestandssysteem Het /proc bestandssysteem (file system) is een mechanisme dat door de kernel en zijn modules gebruikt wordt om informatie aan te bieden aan processen (vandaar de naam /proc). Dit pseudo bestandssysteem laat je toe om de interne datastructuren van de kernel te beïnvloeden en om instellingen (kernel parameters) on the fly te veranderen. In tegenstelling tot andere bestandssystemen, die op de schijf worden opgeslagen, bevindt /proc zich in het geheugen. Als je het bestand /proc/mounts bekijkt (dat alle gemounte bestandssystemen weergeeft - cfr. het commando mount ), dan zou je iets moeten zien zoals:

grep proc /proc/mounts /proc /proc proc rw 0 0 /proc staat onder controle van de kernel en is niet verbonden met een fysiek apparaat (device). Omdat het vooral status-informatie bevat die beheerd wordt door de kernel, is het voor de hand liggend dat deze data in het RAM geheugen wordt bijgehouden. Een ls -l opdracht op /proc toont dan ook aan dat de meeste bestanden 0 bytes groot zijn. Nochtans blijken ze ze veel informatie te bevatten als je ze geopend hebt. Hoe is dit mogelijk? Dit valt te verklaren doordat het /proc bestandssysteem, zoals elk ander bestandssysteem, zichzelf registreert bij de Virtual File System layer (VFS). Wanneer VFS aanvragen doet aan /proc dan vraagt het eigenlijk i-nodes op voor bestanden of directories. De truc is nu dat die i-nodes eigenlijk fysiek helemaal niet bestaan; het /proc systeem maakt ze dynamisch aan aan de hand van informatie uit de kernel. Het proc File System mounten Voor zover dat niet reeds gebeurd is, kun je het proc bestandssysteem mounten met de volgende opdracht mount -t proc proc /proc De bovenstaande opdracht zou een gemount proc systeem moeten opleveren. Voor meer informatie kan je de man page van mount nalezen. De /proc bestanden bekijken /proc bestanden kunnen je veel leren over de toestand van de kernel, de configuratie van de machine, de status van de draaiende processen, enzoverder. De meeste bestanden in /proc bieden een actuele blik op de fysieke toestand van een systeem. Alhoewel deze /proc bestanden virtueel zijn, kun je ze wel gewoon openen in een editor of in programma s zoals more, less of cat. Wanneer een programma een proc bestand probeert te openen, wordt dit bestand on the fly aangemaakt met informatie uit de kernel. Hier volgen een paar interessante resultaten van op mijn eigen systeem: $ ls -l /proc/cpuinfo -r--r--r-- 1 root root 0 Dec 25 11:01 /proc/cpuinfo $ file /proc/cpuinfo /proc/cpuinfo: empty $ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 8 model name : Pentium III (Coppermine) stepping : 6 cpu MHz : 1000.119 cache size : 256 KB

fdiv_bug hlt_bug sep_bug f00f_bug coma_bug fpu fpu_exception cpuid level : 2 wp flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr xmm bogomips : 1998.85 processor : 3 vendor_id : GenuineIntel cpu family : 6 model : 8 model name : Pentium III (Coppermine) stepping : 6 cpu MHz : 1000.119 cache size : 256 KB fdiv_bug hlt_bug sep_bug f00f_bug coma_bug fpu fpu_exception cpuid level : 2 wp flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr xmm bogomips : 1992.29 Deze resultaten zijn afkomstig van een PC met twee processoren. De meeste variabelen spreken voor zich en geven nuttige informatie over het systeem. Sommige informatie in /proc bestanden is gecodeerd en er bestaan verschillende hulpmiddelen om deze om te zetten in een meer leesbare vorm. Enkele voorbeelden: top, ps, apm,... Nuttige systeem- en kernel informatie opvragen Je kunt via het Proc File System informatie opvragen over het systeem en de kernel die erop draait. We vermelden enkele belangrijke bestanden. /proc/cpuinfo - informatie over de processor (CPU): model, familie, cache-grootte etc. /proc/meminfo - informatie over fysiek RAM-geheugen, swap space etc. /proc/mounts - lijst van gemounte bestandssystemen /proc/devices - lijst van beschikbare apparaten /proc/filesystems - ondersteunde bestandssystemen /proc/modules - lijst van ingeladen modules /proc/version - kernel versie /proc/cmdline - parameters gegeven aan de kernel tijdens het opstarten

Er zijn uiteraard nog veel meer bestanden te vinden in /proc. De nieuwsgierige lezer kan alle bestanden in /proc een keer bekijken, of [1] lezen voor meer informatie over de verschillende bestanden. Om wat rond te neuzen raad ik aan om more te gebruiken in de plaats van cat want sommige bestanden (bvb. kcore) kunnen zeer groot zijn. Informatie over draaiende processen Het /proc bestandssysteem bevat informatie over elk draaiend proces. In /proc zul je een aantal genummerde subdirectories terugvinden, die elk overeenkomen met een process id (PID) van een lopend programma. Van elk lopend proces kun je via /proc dus de belangrijkste kenmerken opvragen. Voor een voorbeeld gaan we eerst op zoek naar een lopend proces: $ ps -aef grep mozilla root 32558 32425 8 22:53 pts/1 00:01:23 /usr/bin/mozilla Het bovenstaande leert ons dat mozilla een draaiend proces is met een PID van 32558. In /proc zouden we dus een directory moeten vinden met het nummer 32558. $ ls -l /proc/32558 total 0 -r--r--r-- 1 root root 0 Dec 25 22:59 cmdline -r--r--r-- 1 root root 0 Dec 25 22:59 cpu lrwxrwxrwx 1 root root 0 Dec 25 22:59 cwd -> /proc/ -r-------- 1 root root 0 Dec 25 22:59 environ lrwxrwxrwx 1 root root 0 Dec 25 22:59 exe -> /usr/bin/mozilla* dr-x------ 2 root root 0 Dec 25 22:59 fd/ -r--r--r-- 1 root root 0 Dec 25 22:59 maps -rw------- 1 root root 0 Dec 25 22:59 mem -r--r--r-- 1 root root 0 Dec 25 22:59 mounts lrwxrwxrwx 1 root root 0 Dec 25 22:59 root -> // -r--r--r-- 1 root root 0 Dec 25 22:59 stat -r--r--r-- 1 root root 0 Dec 25 22:59 statm -r--r--r-- 1 root root 0 Dec 25 22:59 status Het bestand "cmdline" bevat het commando waarmee het proces opgestart werd. Het bestand "environ" bevat de omgevingsvariabelen voor dit programma. "status" heeft status-informatie over het proces, waaronder de user (UID) en group (GID) identificatie van de gebruiker met wiens rechten het proces draait. Ook het parent process ID (PPID; het programma dat het huidige programma heeft opgestart) en de huidige toestand van het proces, zoals "Sleeping" of "Running", vind je hierin terug. Daarnaast bevat elke directory ook nog een paar symbolische links. "cwd" verwijst naar de huidige werk-directory van het proces, "exe" naar het uitvoerbare programma-bestand van het proces. "root" is een link naar de directory die door het proces gezien wordt als de root directory (meestal "/"). De map "fd" bevat links naar de file descriptors die het proces in gebruik heeft. De "cpu" link verschijnt enkel op SMP Linux kernels voor systemen met meerder processoren. Het bevat een opdeling van verlopen proces-tijd verdeeld per processor. /proc/self is een interessante subdirectory: hierin kunnen processen informatie opzoeken over zichzelf. Dit wordt bereikt doordat /proc/self is een symbolische link is die verwijst naar de /proc directory met het PID van het proces dat de link volgt.

De kernel beïnvloeden via /proc De meeste hierboven vermelde /proc bestanden zijn read-only: je kunt ze niet veranderen. Er zijn echter /proc bestanden die dat wel toelaten. Door te schrijven naar deze bestanden kun je parameters in de kernel veranderen - onnodig te zeggen dat voorzichtigheid hier geboden is. Alle schrijfbare bestanden bevinden zich in /proc/sys. /proc/sys/kernel - Deze directory bevat informatie over het gedrag van de kernel. /proc/sys/kernel/{domainname, hostname} bevat de domein- en hostnaam voor je machine of netwerk. Hier kun je deze namen dus aanpassen. $ hostname machinenaam.domeinnaam.com $ cat /proc/sys/kernel/domainname domeinnaam.com $ cat /proc/sys/kernel/hostname machinenaam $ echo "nieuwe-machinenaam" > /proc/sys/kernel/hostname $ hostname nieuwe-machinenaam.domeinnaam.com Dus, door een bestand aan te passen in /proc, veranderen we de hostname van het systeem. Er zijn nog vele andere bestanden in /proc/sys/kernel/ die je kunt aanpassen. Ook hier weer kunnen we ze niet allemaal behandelen, dus het kan interessant zijn om ze zelf eens te bekijken. Een andere configureerbare directory is /proc/sys/net. Via de bestanden daarin kun je de netwerkeigenschappen aanpassen. Je kunt er bijvoorbeeld heel snel voor zorgen dat je machine onzichtbaar wordt in het netwerk. $ echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all Hiermee wordt je machine een beetje minder zichtbaar doordat hij niet meer zal antwoorden op icmp_echo aanvragen. Met andere woorden: je machine zal niet meer reageren op ping queries van andere machines. $ ping machinenaam.domeinnaam.com no answer from machinenaam.domeinnaam.com Om de oude situatie te herstellen doe je $ echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all Via [1] en [2] kun je kennis maken met de vele andere subdirectories in /proc/sys waar je aanpassingen kan doen.

Conclusie Het /proc File System biedt een blik op de interne keuken van Linux via virtuele bestanden. Het kan een hulp zijn bij het onderzoeken van de status en configuratie van de verschillende apparaten en processen op een systeem. Kennis van en praktische ervaring met dit bestandssysteem is daarom van groot belang om je Linux systeem optimaal te kunnen gebruiken. Bibliografie [1] Documentatie over het Linux proc bestandssysteem is beschikbaar op: /usr/src/linux/documentation/filesystems/proc.txt [2] Red Hat Guide: The /proc File System: http://www.redhat.com/docs/manuals/linux/rhl-7.3-manual/ref-guide/ch-proc.html Site onderhouden door het LinuxFocus editors team Sandeep Grover "some rights reserved" see linuxfocus.org/license/ http://www.linuxfocus.org Vertaling info: en --> -- : Sandeep Grover <sandeep<at>magma-da.com> en --> nl: Floris Lambrechts <nothanks.floris(at)linuxfocus.org> 2005-01-14, generated by lfparser_pdf version 2.51