Filesystem Hierarchy Standard

10 marzo 2018

L’idea di strutturare il filesystem Linux attraverso un approccio a gerarchia di directory simile a quello attuale risale al 1996. Venne elaborata una visione d’insieme per tutti i S.O. che derivavano da Unix o con questo assimilabili. La convenzione prese il nome di Filesystem Hierarchy Standard (FHS). Il Filesystem in Linux è quindi nativamente gerarchico, parte da / e da esso fa discendere tutti i suoi rami. E’ importante notare che questi rami possano far riferimento, pur risiedendo a livello logico sullo stesso filesystem, anche a diverse partizioni, dischi e persino differenti device. Ecco un elenco non esaustivo delle principali directory nella root di un filesystem Linux:
  • /bin e /bin64 Contiene alcuni eseguibili disponibili per il single user mode.
  • /boot Qui vengono ospitati i file del boot loader come ad esempio i kernel.
  • /dev In questa directory troviamo i file di device.
  • /etc Contiene i file di configurazione nella loro versione testuale.
  • /home La directory in cui di norma vengono conservati i file personali degli utenti comuni.
  • /lib e /lib64 Librerie per gli eseguibili di /bin e /bin64
  • /local Contenitore di software o versioni di software derivati e compilati localmente. Utile per distinguerli da quelli di provenienza esterna.
  • /lost+found Directory contenente i dati recuperati attraverso il File System Consistency Check (fsck).
  • /media Qui sono ospitati i punti di montaggio dei dispositivi removibili come le chiavette usb.
  • /mnt Directory contenente punti di montaggio da utilizzare in modo temporaneo.
  • /opt Posizione di installazione per suite e collezioni di utilità o applicazioni.
  • /proc Un filesystem generato automaticamente in cui sono presentate tutta una serie di informazioni sui processi, il processore e molto altro.
  • /root La directory in cui sono contenuti i file personali dell’utente root.
  • /run Altro filesystem generato automaticamente per veicolare tutta una serie di informazioni sugli utenti e sui demoni attivi.
  • /sbin Contenitore per file binari essenziali per adoperare il sistema.
  • /srv La directory che contiene i dati dei servizi che la macchina presenta verso l’esterno come a esempio il server web.
  • /sys Ospita dati sul kernel, i driver e i device.
  • /tmp Contenitore temporaneo per file e directory.
  • /usr In essa possiamo trovare gli eseguibili dei principali comandi adoperati quando il sistema è in modalità multi utente.
  • /var Qui vengono conservati i log e molti file modificati di continuo.
Occorre precisare che queste directory nel filesystem di Linux sono spesso ulteriormente modulate in sottodirecotory con funzioni specifiche, in particolare /etc e /usr. Consigliamo di effettuare una veloce esplorazione all’interno di esse per comprendere la pletora di differenti contenuti che possono essere ospitati.

Una delle risorse più interessanti presenti in un filesystem Linux che rispetti lo Filesystem Hierarchy Standard è la directory /proc . Opportuno sottolineare che la directory in questione faccia in realtà primariamente riferimento ai processi in corso. Facendo un parallelo fra quanto visibile attraverso un comando concepito per ottenere informazione sui processi attivi, ovvero top, potremo meglio dare percezione della cosa. Eseguitelo e lasciatelo in esecuzione.

Tasks:  89 total,   1 running,  88 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1525480 total,  1034796 free,    72808 used,   417876 buff/cache
KiB Swap:  1572860 total,  1572860 free,        0 used.  1305192 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                               
 1441 fprinci+  20   0  105604   4528   3500 S  0.3  0.3   0:00.07 sshd                                  
    1 root      20   0   72456   8292   6412 S  0.0  0.5   0:00.97 systemd                               
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd                              
    4 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H                          
    5 root      20   0       0      0      0 S  0.0  0.0   0:00.10 kworker/u2:0                          
    6 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 mm_percpu_wq                          
    7 root      20   0       0      0      0 S  0.0  0.0   0:00.04 ksoftirqd/0                           
    8 root      20   0       0      0      0 S  0.0  0.0   0:00.07 rcu_sched                             
    9 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh                                
   10 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0                           
[...]
 1847 fprinci+  20   0   46204   3864   3324 R  0.0  0.3   0:00.18 top

Ora esplorate /proc attraverso un’altra console.

fprincipe@html1:~$ ls /proc
1     1750  23   403  7          consoles     kpagecgroup   stat
10    1770  24   404  76         cpuinfo      kpagecount    swaps
11    1772  25   405  768        crypto       kpageflags    sys
112   18    26   409  769        devices      loadavg       sysrq-trigger
12    1825  27   410  77         diskstats    locks         sysvipc
13    1826  28   454  78         dma          mdstat        thread-self
1340  183   285  460  79         driver       meminfo       timer_list
1347  1847  30   463  8          execdomains  misc          tty
1363  1849  32   518  80         fb           modules       uptime
1378  19    33   6    804        filesystems  mounts        version
14    2     34   650  81         fs           mtrr          version_signature
1441  20    341  651  834        interrupts   net           vmallocinfo
1442  203   342  652  87         iomem        pagetypeinfo  vmstat
15    204   392  655  9          ioports      partitions    zoneinfo
16    208   397  656  acpi       irq          sched_debug
163   209   399  657  asound     kallsyms     schedstat
1671  21    4    658  buddyinfo  kcore        scsi
1672  211   400  665  bus        keys         self
17    213   401  666  cgroups    key-users    slabinfo
1748  22    402  683  cmdline    kmsg         softirqs

fprincipe@html1:~$ ls /proc/1847
attr             cwd       map_files   oom_adj        schedstat  task
autogroup        environ   maps        oom_score      sessionid  timers
auxv             exe       mem         oom_score_adj  setgroups  timerslack_ns
cgroup           fd        mountinfo   pagemap        smaps      uid_map
clear_refs       fdinfo    mounts      patch_state    stack      wchan
cmdline          gid_map   mountstats  personality    stat
comm             io        net         projid_map     statm
coredump_filter  limits    ns          root           status
cpuset           loginuid  numa_maps   sched          syscall

fprincipe@html1:~$ more /proc/1847/cmdline 
top

Per il momento concentriamoci solo sulle directory con nomi formati da sequenze numeriche. Sono in relazione con i PID ovvero i Process IDentifier. Possiamo notare che nella directory corrispondente al PID 1847 su /proc il file cmdline è un file testuale contente, per l’appunto, il comando che ha generato il processo in questione.

Tutte le lezioni

1 ... 6 7 8 ... 23

Se vuoi aggiornamenti su Filesystem Hierarchy Standard inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Filesystem Hierarchy Standard

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento dei dati per attività di marketing