Linux Professional Institute Learning Logo.
Torna al contenuto principale
  • Home
    • Tutte le Risorse
    • LPI Learning Materials
    • Collabora
    • Publishing Partner
    • Diventa un Publishing Partner
    • FAQ
    • Collaboratori
    • Contatto
  • LPI.org
104.7 Lezione1
Argomento 101: L'Architettura di Sistema
101.1 Determinare e Configurare le Impostazioni dell'Hardware
  • 101.1 Lezione 1
101.2 Avviare il sistema
  • 101.2 Lezione 1
101.3 Modificare runlevel / target di avvio e spegnere o riavviare il sistema
  • 101.3 Lezione 1
Argomento 102: Installazione di Linux e Gestione dei Pacchetti
102.1 Progettare il layout del disco rigido
  • 102.1 Lezione 1
102.2 Installare un boot manager
  • 102.2 Lezione 1
102.3 Gestire le librerie condivise
  • 102.3 Lezione 1
102.4 Utilizzare la gestione dei pacchetti Debian
  • 102.4 Lezione 1
102.5 Utilizzare la gestione dei pacchetti RPM e YUM
  • 102.5 Lezione 1
102.6 Linux come sistema virtualizzato
  • 102.6 Lezione 1
Argomento 103: GNU e Unix Commands
103.1 Lavorare con la Command Line
  • 103.1 Lezione 1
  • 103.1 Lezione 2
103.2 Elaborare flussi di testo utilizzando i filtri
  • 103.2 Lezione 1
103.3 Eseguire la gestione di base dei file
  • 103.3 Lezione 1
  • 103.3 Lezione 2
103.4 Utilizzare flussi, pipe e reindirizzamenti
  • 103.4 Lezione 1
  • 103.4 Lezione 2
103.5 Creare, controllare e terminare i processi
  • 103.5 Lezione 1
  • 103.5 Lezione 2
103.6 Modificare le priorità di esecuzione del processo
  • 103.6 Lezione 1
103.7 Cercare file di testo utilizzando espressioni regolari
  • 103.7 Lezione 1
  • 103.7 Lezione 2
103.8 Modifica base di un file
  • 103.8 Lezione 1
Argomento 104: Dispositivi, il File System Linux, il Filesystem Hierarchy Standard
104.1 Creare partizioni e filesystem
  • 104.1 Lezione 1
104.2 Mantenere l'integrità dei filesystem
  • 104.2 Lezione 1
104.3 Verificare il montaggio e lo smontaggio dei filesystem
  • 104.3 Lezione 1
104.5 Gestire le autorizzazioni e la proprietà dei file
  • 104.5 Lezione 1
104.6 Creare e modificare collegamenti hard e soft
  • 104.6 Lezione 1
104.7 Trovare i file di sistema e collocarli nella posizione corretta
  • 104.7 Lezione1
How to get certified
  1. Argomento 104: Dispositivi, il File System Linux, il Filesystem Hierarchy Standard
  2. 104.7 Trovare i file di sistema e collocarli nella posizione corretta
  3. 104.7 Lezione1

104.7 Lezione1

Certificazione:

LPIC-1

Versione:

5.0

Argomento:

104 Dispositivi, Il Filesystem Linux, Filesystem Hierarchy Standard

Obiettivo:

104.7 Trovare i file di sistema e collocarli nella posizione corretta

Lezione:

1 di 1

Introduzione

Le distribuzioni Linux sono disponibili in tutte le forme e dimensioni, ma una cosa che quasi tutte condividono è che seguono il Filesystem Hierarchy Standard (FHS), che definisce un “layout standard” per il filesystem, rendendo l’interoperabilità e l’amministrazione del sistema molto più semplice . In questa lezione imparerai di più su questo standard e su come trovare file su un sistema Linux.

Il Filesystem Hierarchy Standard

Il Filesystem Hierarchy Standard (FHS) è uno sforzo della Linux Foundation per standardizzare la struttura delle directory e il contenuto delle stesse sui sistemi Linux. La conformità allo standard non è obbligatoria, ma la maggior parte delle distribuzioni la segue.

Note

Chi è interessato ai dettagli dell’organizzazione del filesystem può leggere la specifica FHS 3.0, disponibile in più formati su: http://refspecs.linuxfoundation.org/fhs.shtml

Secondo lo standard, la struttura delle directory di base è la seguente:

/

Questa è la directory principale, la directory più in alto nella gerarchia. Ogni altra directory si trova al suo interno. Un filesystem è spesso paragonato a un “albero”, quindi questa sarebbe “la radice” / “il tronco” a cui sono collegati tutti i rami.

/bin

Binari essenziali, disponibili per tutti gli utenti.

/boot

File necessari al processo di avvio, incluso il disco RAM iniziale (initrd) e il kernel Linux stesso.

/dev

File di dispositivo. Questi possono essere dispositivi fisici collegati al sistema (per esempio, /dev/sda sarebbe il primo disco SCSI o SATA) o dispositivi virtuali forniti dal kernel.

/etc

File di configurazione specifici dell’host. I programmi possono creare sottodirectory in /etc per memorizzare più file di configurazione, se necessario.

/home

Ogni utente nel sistema ha una directory “home” per memorizzare i file e le preferenze personali, e la maggior parte di essi si trova sotto /home. Di solito, la directory home è la stessa del nome utente, quindi l’utente John avrebbe la sua directory in /home/john. Le eccezioni sono il superutente (root), che ha una directory separata (/root) e alcuni utenti di sistema.

/lib

Librerie condivise necessarie per avviare il sistema operativo e per eseguire i binari in /bin e /sbin.

/media

I supporti rimovibili montabili dall’utente, come unità flash, lettori di CD e DVD-ROM, dischi floppy, schede di memoria e dischi esterni sono montati qui dentro.

/mnt

Punto di montaggio per filesystem montati temporaneamente.

/opt

Pacchetti software applicativi.

/root

Directory home per il superutente (root).

/run

Dati variabili di runtime.

/sbin

Binari di sistema.

/srv

Dati forniti dal sistema. Per esempio, le pagine servite da un server web potrebbero essere archiviate in /srv/www.

/tmp

File temporanei.

/usr

Dati utente di sola lettura, inclusi i dati necessari per alcune utilità e applicazioni secondarie.

/proc

File system virtuale contenente dati relativi ai processi in esecuzione.

/var

Dati variabili scritti durante il funzionamento del sistema, inclusi coda di stampa, dati di registro, caselle di posta, file temporanei, cache del browser, ecc.

Tieni presente che alcune di queste directory, come /etc, /usr e /var, contengono un’intera gerarchia di sottodirectory.

I File Temporanei

I file temporanei sono file utilizzati dai programmi per archiviare dati necessari solo per un breve periodo. Questi possono essere dati di processi in esecuzione, registri di arresto anomalo, file temporanei da un salvataggio automatico, file intermedi utilizzati durante una conversione di file, file di cache e simili.

Posizione dei File Temporanei

La versione 3.0 del Filesystem Hierarchy Standard (FHS) definisce le posizioni standard per i file temporanei sui sistemi Linux. Ogni posizione ha uno scopo e un comportamento diverso ed è consigliato agli sviluppatori di seguire le convenzioni impostate dall’FHS quando creano dati temporanei su disco.

/tmp

Secondo l’FHS i programmi non dovrebbero presumere che i file scritti qui all’interno verranno conservati tra un’esecuzione e l’altra di un programma. La raccomandazione è che questa directory venga ripulita (tutti i file cancellati) durante l’avvio del sistema, sebbene ciò non sia obbligatorio.

/var/tmp

Un’altra posizione per i file temporanei, ma questa non dovrebbe essere ripulita durante l’avvio del sistema. I file archiviati qui all’interno, di solito, persistono tra i riavvii.

/run

Questa directory contiene i dati delle variabili di runtime utilizzati dai processi in esecuzione, come i file di identificazione del processo (.pid). I programmi che richiedono più di un file di runtime possono creare sottodirectory qui dentro. Questa posizione deve essere ripulita durante l’avvio del sistema. Lo scopo di questa directory una volta era svolto da /var/run, e ancora oggi, su alcuni sistemi, /var/run potrebbe essere un collegamento simbolico a /run.

Notare che nulla impedisce a un programma di creare file temporanei altrove nel sistema, ma è buona norma rispettare le convenzioni impostate dall’FHS.

Ricerca di File

Per cercare file su un sistema Linux, puoi usare il comando find. Questo è uno strumento molto potente, ricco di opzioni e parametri che possono adattarne il comportamento e modificare l’output esattamente alle tue esigenze.

Per iniziare, find ha bisogno di due argomenti: un punto di partenza e che cosa cercare. Per esempio, per cercare tutti i file nella directory corrente (e nelle sottodirectory) il cui nome termina con .jpg puoi usare:

$ find . -name '*.jpg'
./pixel_3a_seethrough_1.jpg
./Mate3.jpg
./Expert.jpg
./Pentaro.jpg
./Mate1.jpg
./Mate2.jpg
./Sala.jpg
./Hotbit.jpg

Questo corrisponderà a qualsiasi file i cui ultimi quattro caratteri del nome siano “.jpg`, indipendentemente da ciò che viene prima, poiché * è un carattere jolly che indica "`qualsiasi cosa”. Tuttavia, guarda cosa succede se un altro * viene aggiunto alla fine della maschera di ricerca (pattern):

$ find . -name '*.jpg*'
./pixel_3a_seethrough_1.jpg
./Pentaro.jpg.zip
./Mate3.jpg
./Expert.jpg
./Pentaro.jpg
./Mate1.jpg
./Mate2.jpg
./Sala.jpg
./Hotbit.jpg

Il file Pentaro.jpg.zip (evidenziato sopra) non era incluso nell’elenco precedente, perché anche se contiene .jpg nel nome, non corrispondeva al pattern perché c’erano caratteri extra dopo di esso. Il nuovo modello significa “qualsiasi cosa .jpg qualunque cosa”, quindi corrisponde.

Tip

Tieni presente che il parametro -name fa distinzione tra maiuscole e minuscole. Se desideri eseguire una ricerca senza questa distinzione, usa -iname.

L’espressione * .jpg deve essere inserita tra virgolette singole, per evitare che la shell interpreti il pattern stesso. Prova senza virgolette e guarda cosa succede.

Per impostazione predefinita, find inizierà dal punto di partenza e scenderà attraverso tutte le sottodirectory (e le sottodirectory di quelle sottodirectory) trovate. Puoi limitare questo comportamento con i parametri -maxdepth N, dove N è il numero massimo di livelli.

Per cercare solo nella directory corrente, dovresti usare -maxdepth 1. Supponiamo di avere la seguente struttura di directory:

directory
├── clients.txt
├── partners.txt -> clients.txt
└── somedir
    ├── anotherdir
    └── clients.txt

Per cercare all’interno di somedir, dovresti usare -maxdepth 2 (la directory corrente +1 livello in basso). Per cercare all’interno di anotherdir, sarebbe necessario -maxdepth 3 (la directory corrente +2 livelli in basso). Il parametro -mindepth N funziona in modo opposto cercando solo nelle directory almeno i livelli inferiori di N.

Il parametro -mount può essere usato per evitare che find scenda all’interno dei filesystem montati. Puoi anche limitare la ricerca a specifici tipi di filesystem usando il parametro -fstype. Quindi find /mnt -fstype exfat -iname "*report*" cercherà solo all’interno dei filesystem exFAT montati sotto /mnt.

Ricerca di Attributi

È possibile utilizzare i parametri seguenti per cercare file con attributi specifici, come quelli che siano scrivibili dall’utente, abbiano un insieme specifico di autorizzazioni o abbiano una certa dimensione:

-user USERNAME

Corrisponde ai file di proprietà dell’utente USERNAME.

-group GROUPNAME

Corrisponde ai file di proprietà del gruppo GROUPNAME.

-readable

Corrisponde a file leggibili dall’utente corrente.

-writable

Corrisponde a file scrivibili dall’utente corrente.

-executable

Corrisponde ai file eseguibili dall’utente corrente. Nel caso delle directory, questo corrisponderà a qualsiasi directory a cui l’utente può accedere (autorizzazione x).

-perm NNNN

Questo corrisponderà a tutti i file che hanno esattamente l’autorizzazione NNNN. Per esempio, -perm 0664 corrisponderà a qualsiasi file su cui l’utente e il gruppo possono leggere e scrivere e su cui altri possono leggere (o rw-rw-r-).

È possibile aggiungere un - prima di NNNN per verificare la presenza di file che hanno almeno l’autorizzazione specificata. Per esempio, -perm -644 corrisponderebbe a file che hanno almeno i permessi 644 (rw-r-r-). Questo include un file con 664 (rw-rw-r-) o anche 775 (rwxrwx-r-x).

-empty

Corrisponde a file e directory vuote.

-size N

Corrisponde a qualsiasi file di dimensione N, dove N di default è un numero di blocchi da 512 byte. Puoi aggiungere suffissi a N per altre unità: Nc conterà la dimensione in byte, Nk in kibibyte (KiB, multipli di 1024 byte), NM in mebibyte (MiB, multipli di 1024 * 1024) e NG per i gibibyte (GiB, multipli di 1024 * 1024 * 1024).

Di nuovo, puoi aggiungere i prefissi + o - (qui significa più grande di e più piccolo di) per cercare dimensioni relative. Per esempio, -size -10M corrisponderà a qualsiasi file di dimensioni inferiori a 10 MiB.

Per esempio, per cercare i file nella tua home directory che contengono il pattern insensibile al maiuscolo/minuscolo report in qualsiasi parte del nome, hanno i permessi 0644, sono stati acceduti 10 giorni fa e la cui dimensione è almeno 1 Mib, puoi usare:

$ find ~ -iname "*report*" -perm 0644 -atime 10 -size +1M

Ricerche Temporali

Oltre a cercare gli attributi, puoi anche eseguire ricerche temporali, trovando i file a cui è stato effettuato l’accesso, i cui attributi sono stati modificati o sono stati modificati durante un periodo di tempo specifico. I parametri sono:

-amin N, -cmin N, -mmin N

Per trovare file a cui è stato effettuato l’accesso, che hanno avuto attributi modificati o sono stati modificati (rispettivamente) N minuti fa.

-atime N, -ctime N, -mtime N

Per trovare file a cui è stato effettuato l’accesso, a cui sono stati modificati gli attributi o che sono stati modificati N*24 ore fa.

Per -cmin N e -ctime N, qualsiasi modifica di attributo causerà una corrispondenza, inclusa una modifica dei permessi, la lettura o la scrittura del file. Ciò rende questi parametri particolarmente potenti, poiché praticamente qualsiasi operazione che coinvolge il file attiverà una corrispondenza.

Il seguente esempio permette una corrispondenza a qualsiasi file nella directory corrente che è stato modificato meno di 24 ore fa ed è più grande di 100 MiB:

$ find . -mtime -1 -size +100M

Utilizzo di locate e updatedb

locate e updatedb sono comandi che possono essere usati per trovare rapidamente un file che corrisponde a un dato modello su un sistema Linux. Ma a differenza di find, locate non cercherà il pattern nel filesystem: invece, lo cerca su un database costruito eseguendo il comando updatedb. Ciò fornisce risultati molto rapidi, ma che potrebbero essere imprecisi a seconda dell’ultimo aggiornamento del database.

Il modo più semplice per usare locate è semplicemente dargli un pattern da cercare. Per esempio, per trovare ogni immagine JPEG sul tuo sistema, dovresti usare locate jpg. L’elenco dei risultati può essere piuttosto lungo, ma dovrebbe essere simile a questo:

$ locate jpg
/home/carol/Downloads/Expert.jpg
/home/carol/Downloads/Hotbit.jpg
/home/carol/Downloads/Mate1.jpg
/home/carol/Downloads/Mate2.jpg
/home/carol/Downloads/Mate3.jpg
/home/carol/Downloads/Pentaro.jpg
/home/carol/Downloads/Sala.jpg
/home/carol/Downloads/pixel_3a_seethrough_1.jpg
/home/carol/Downloads/jpg_specs.doc

Quando viene richiesto il pattern jpg, locate mostrerà tutto ciò che contiene questo pattern, non importa cosa venga prima o dopo di esso. Puoi vedere un esempio di ciò nel file jpg_specs.doc nell’elenco sopra: contiene il pattern, ma l’estensione non è jpg.

Tip

Ricorda che con locate stai facendo corrispondere i pattern, non le estensioni di file.

Per impostazione predefinita, il pattern fa distinzione tra maiuscole e minuscole. Ciò significa che i file contenenti .JPG non verrebbero visualizzati poiché scritto in minuscolo. Per evitare ciò, passare il parametro -i a locate. Ripetendo il nostro esempio precedente:

$ locate -i .jpg
/home/carol/Downloads/Expert.jpg
/home/carol/Downloads/Hotbit.jpg
/home/carol/Downloads/Mate1.jpg
/home/carol/Downloads/Mate1_old.JPG
/home/carol/Downloads/Mate2.jpg
/home/carol/Downloads/Mate3.jpg
/home/carol/Downloads/Pentaro.jpg
/home/carol/Downloads/Sala.jpg
/home/carol/Downloads/pixel_3a_seethrough_1.jpg

Si noti che il file Mate1_old.JPG, in grassetto sopra, non era presente nell’elenco precedente.

Puoi passare più pattern a locate, semplicemente separandoli con spazi. L’esempio seguente eseguirà una ricerca senza distinzione tra maiuscole e minuscole per tutti i file che corrispondono a zip e jpg:

$ locate -i zip jpg
/home/carol/Downloads/Expert.jpg
/home/carol/Downloads/Hotbit.jpg
/home/carol/Downloads/Mate1.jpg
/home/carol/Downloads/Mate1_old.JPG
/home/carol/Downloads/Mate2.jpg
/home/carol/Downloads/Mate3.jpg
/home/carol/Downloads/OPENMSXPIHAT.zip
/home/carol/Downloads/Pentaro.jpg
/home/carol/Downloads/Sala.jpg
/home/carol/Downloads/gbs-control-master.zip
/home/carol/Downloads/lineage-16.0-20190711-MOD-quark.zip
/home/carol/Downloads/pixel_3a_seethrough_1.jpg
/home/carol/Downloads/jpg_specs.doc

Quando si utilizzano più pattern, è possibile richiedere a locate di mostrare solo i file che corrispondono a tutti i pattern di ricerca. Questo viene fatto con l’opzione -A. Il seguente esempio mostrerebbe qualsiasi file che corrisponde al pattern .jpg e al pattern .zip:

$ locate -A .jpg .zip
/home/carol/Downloads/Pentaro.jpg.zip

Se desideri contare il numero di file che corrispondono a un dato pattern invece di mostrare il loro percorso completo, puoi usare l’opzione -c. Per esempio, per contare il numero di file .jpg su un sistema:

$ locate -c .jpg
1174

Un problema con locate è che mostra solo le voci presenti nel database generato da updatedb (situato in /var/lib/mlocate.db). Se il database è obsoleto, l’output potrebbe mostrare file che invece sono stati eliminati dall’ultima volta che è stato aggiornato. Un modo per evitare questo è aggiungere il parametro -e, che controllerà se il file esiste ancora prima di mostrarlo sull’output.

Ovviamente, questo non risolverà il problema dei file creati dopo l’ultimo aggiornamento del database non visualizzato. Per questo dovrai aggiornare il database con il comando updatedb. Quanto tempo ci vorrà dipenderà dalla quantità di file nel disco.

Controllare il Comportamento di updatedb

Il comportamento di updatedb può essere controllato dal file /etc/updatedb.conf. Questo è un file di testo in cui ogni riga controlla una variabile. Le linee vuote e quelle che iniziano con il carattere #(commenti) vengono ignorate.

PRUNEFS=

Qualsiasi tipo di filesystem indicato dopo questo parametro non verrà scansionato da updatedb. L’elenco dei tipi di filesystem dovrebbe essere separato da spazi e i tipi stessi non fanno distinzione tra maiuscole e minuscole, quindi NFS e nfs saranno considerati allo stesso modo.

PRUNENAMES=

Questo è un elenco separato da spazi di nomi di directory che non dovrebbero essere scansionati da updatedb.

PRUNEPATHS=

Questa è una lista di percorsi che dovrebbero essere ignorati da updatedb. I nomi dei percorsi devono essere separati da spazi e specificati nello stesso modo in cui verrebbero visualizzati da updatedb (per esempio,/var/spool/media)

PRUNE_BIND_MOUNTS=

Questa è una semplice variabile yes o no. Se impostato su yes (le directory montate altrove con il comando mount --bind) verranno ignorate.

Trovare Binari, Pagine di manuale e Codice Sorgente

which è un comando molto utile che mostra il percorso completo di un eseguibile. Per esempio, se vuoi individuare l’eseguibile per bash, potresti usare:

$ which bash
/usr/bin/bash

Se viene aggiunta l’opzione -a, il comando mostrerà tutti i nomi di percorso che corrispondono all’eseguibile. Osserva la differenza:

$ which mkfs.ext3
/usr/sbin/mkfs.ext3

$ which -a mkfs.ext3
/usr/sbin/mkfs.ext3
/sbin/mkfs.ext3
Tip

Per trovare quali directory sono nella variabile PATH usa il comando echo $PATH. Questo visualizzerà (echo) il contenuto della variabile PATH ($PATH) sul tuo terminale.

type è un comando simile che mostrerà le informazioni su un binario, incluso dove si trova e il suo tipo. Usa semplicemente type seguito dal nome del comando

$ type locate
locate is /usr/bin/locate

L’opzione -a funziona allo stesso modo di which, mostrando tutti i nomi di percorso che corrispondono all’eseguibile. Così:

$ type -a locate
locate is /usr/bin/locate
locate is /bin/locate

E l’opzione -t mostrerà il tipo di file del comando che può essere un alias, una keyword, una function, un builtin o un file. Per esempio:

$ type -t locate
file

$ type -t ll
alias

$ type -t type
type is a built-in shell command

Il comando whereis è più versatile e oltre ai binari può anche essere usato per mostrare la posizione delle pagine man o anche il codice sorgente di un programma (se disponibile nel tuo sistema). Basta digitare whereis seguito dal nome del binario:

$ whereis locate
locate: /usr/bin/locate /usr/share/man/man1/locate.1.gz

I risultati sopra includono binari (/usr/bin/locate) e pagine di manuale compresse (/usr/share/man/man1/locate.1.gz).

Puoi filtrare rapidamente i risultati usando le opzioni della riga di comando come -b, che li limiterà solo ai binari, -m, che li limiterà solo alle pagine man, o -s, che li limiterà solo al codice sorgente. Ripetendo l’esempio sopra, otterrai:

$ whereis -b locate
locate: /usr/bin/locate

$ whereis -m locate
locate: /usr/share/man/man1/locate.1.gz

Esercizi Guidati

  1. Immagina che un programma debba creare un file temporaneo monouso che non sarà mai più necessario dopo la chiusura del programma. Quale sarebbe la directory corretta in cui creare questo file?

  2. Qual è la directory temporanea che deve essere cancellata durante il processo di avvio?

  3. Usando find, cerca solo nella directory corrente i file che sono scrivibili dall’utente, sono stati modificati negli ultimi 10 giorni e sono più grandi di 4 GiB.

  4. Usando locate, trova tutti i file che contengono sia i pattern report che updated, update o updating nei loro nomi.

  5. Come puoi trovare dove è memorizzata la pagina di manuale di ifconfig?

  6. Quale variabile deve essere aggiunta a /etc/updatedb.conf per fare in modo che updatedb ignori i filesystem ntfs?

  7. Un amministratore di sistema desidera montare un disco interno (/dev/sdc1). Secondo FHS, in quale directory dovrebbe essere montato questo disco?

Esercizi Esplorativi

  1. Quando viene utilizzato locate, i risultati vengono estratti da un database generato da updatedb. Tuttavia, questo database può essere obsoleto, facendo sì che locate mostri file che non esistono più. Come puoi fare in modo che locate mostri solo i file esistenti sul suo output?

  2. Trova qualsiasi file nella directory corrente o nelle sottodirectory fino a 2 livelli inferiori, esclusi i filesystem montati, che contengono il pattern Status o statute nei loro nomi.

  3. Limitando la ricerca ai filesystem ext4, trova tutti i file all’interno di /mnt che hanno almeno i permessi di esecuzione per il gruppo, sono leggibili per l’utente corrente e hanno avuto un attributo cambiato nelle ultime 2 ore.

  4. Trova i file vuoti che sono stati creati più di 30 giorni fa e sono almeno due livelli più in basso rispetto alla directory corrente.

  5. Considera che gli utenti carol e john fanno parte del gruppo mkt. Trova nella home directory di john tutti i file che sono leggibili anche da carol.

Sommario

In questa lezione hai imparato l’organizzazione di base del filesystem su una macchina Linux, secondo FHS, e come trovare binari e file, sia per nome che per attributi. In questa lezione sono stati discussi i seguenti comandi:

find

Un comando versatile usato per trovare file e cartelle in base a una varietà di criteri di ricerca.

locate

Un’utilità che utilizza un database locale che contiene le posizioni per i file memorizzati localmente.

updatedb

Aggiorna il database locale utilizzato dal comando locate.

which

Visualizza il percorso completo di un eseguibile.

whereis

Visualizza le posizioni delle pagine di manuale, dei binari e del codice sorgente sul sistema.

type

Visualizza la posizione di un binario e che tipo di applicazione è (come un programma installato, un programma Bash integrato e altro).

Risposte agli Esercizi Guidati

  1. Immagina che un programma debba creare un file temporaneo monouso che non sarà mai più necessario dopo la chiusura del programma. Quale sarebbe la directory corretta in cui creare questo file?

    Dato che non ci interessa il file dopo che il programma avrà terminato l’esecuzione, la directory corretta è /tmp.

  2. Qual è la directory temporanea che deve essere cancellata durante il processo di avvio?

    La directory è /run o, su alcuni sistemi, /var/run.

  3. Usando find, cerca solo nella directory corrente i file che sono scrivibili dall’utente, sono stati modificati negli ultimi 10 giorni e sono più grandi di 4 GiB.

    Per questo avrai bisogno dei parametri -writable, -mtime e -size:

    find . -writable -mtime -10 -size +4G
  4. Usando locate, trova tutti i file che contengono sia i pattern report che updated, update o updating nei loro nomi.

    Dal momento che locate deve corrispondere a tutti i pattern, usa l’opzione -A:

    locate -A "report" "updat"
  5. Come puoi trovare dove è memorizzata la pagina di manuale di ifconfig?

    Usa l’opzione -m per whereis:

    whereis -m ifconfig
  6. Quale variabile deve essere aggiunta a /etc/updatedb.conf per fare in modo che updatedb ignori i filesystem ntfs?

    La variabile è PRUNEFS= seguita dal tipo di filesystem: PRUNEFS=ntfs

  7. Un amministratore di sistema desidera montare un disco interno (/dev/sdc1). Secondo FHS, in quale directory dovrebbe essere montato questo disco?

    In pratica, il disco può essere montato ovunque. Tuttavia, l’FHS raccomanda che i montaggi temporanei vengano eseguiti in / mnt.

Risposte agli Esercizi Esplorativi

  1. Quando viene utilizzato locate, i risultati vengono estratti da un database generato da updatedb. Tuttavia, questo database può essere obsoleto, facendo sì che locate mostri file che non esistono più. Come puoi fare in modo che locate mostri solo i file esistenti sul suo output?

    Aggiungi il parametro -e, come in locate -e PATTERN.

  2. Trova qualsiasi file nella directory corrente o nelle sottodirectory fino a 2 livelli inferiori, esclusi i filesystem montati, che contengono il pattern Status o statute nei loro nomi.

    Ricorda che per -maxdepth devi considerare anche la directory corrente, quindi vogliamo tre livelli (l’attuale più 2 livelli in basso):

    find . -maxdepth 3  -mount -iname "*statu*"
  3. Limitando la ricerca ai filesystem ext4, trova tutti i file all’interno di /mnt che hanno almeno i permessi di esecuzione per il gruppo, sono leggibili per l’utente corrente e hanno avuto un attributo cambiato nelle ultime 2 ore.

    Usa il parametro -fstype di mount per limitare la ricerca a specifici tipi di filesystem. Un file leggibile dall’utente corrente avrebbe almeno 4 nella prima cifra dei permessi, e un eseguibile dal gruppo avrebbe almeno 1 nella seconda cifra. Dato che non ci interessano le autorizzazioni per gli altri, possiamo usare 0 per la terza cifra. Usa -cmin N per filtrare le modifiche recenti agli attributi, ricordando che N è specificato in minuti. Così:

    find /mnt -fstype ext4 -perm -410 -cmin -120
  4. Trova i file vuoti che sono stati creati più di 30 giorni fa e sono almeno due livelli più in basso rispetto alla directory corrente.

    Il parametro -mindepth N può essere usato per limitare la ricerca ad almeno N livelli inferiori, ma ricorda che devi includere la directory corrente nel conteggio. Usa -empty per verificare la presenza di file vuoti e -mtime N per verificare l’ora di modifica. Così:

    find . -empty -mtime +30 -mindepth 3
  5. Considera che gli utenti carol e john fanno parte del gruppo mkt. Trova nella home directory di john tutti i file che sono leggibili anche da carol.

    Considerando che sono membri dello stesso gruppo, abbiamo bisogno di almeno una r (4) sui permessi del gruppo e non ci interessa nulla degli altri. Così:

    find /home/john -perm -040

Linux Professional Institute Inc. Tutti i diritti riservati. Visita il sito Learning Materials: https://learning.lpi.org
Quest'opera è sotto la licenza 'Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License'.

Linux Professional Institute Inc. Tutti i diritti riservati. Visita il sito Learning Materials: https://learning.lpi.org
Quest'opera è sotto la licenza 'Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License'.

LPI è una organizzazione non-profit.

© 2023 Linux Professional Institute (LPI) è lo standard di certificazione globale e l'organizzazione di supporto alla carriera per i Professionisti Open Source. Con più di 200,000 titolari di Certificazione, è il primo e il più grande ente di Certificazione Open Source e Linux vendor-neutral. LPI ha professionisti certificati in oltre 180 Paesi, offre i suoi Esami in più lingue e ha centinaia di Partner di formazione in tutto il mondo.

La nostra missione è promuovere l'uso dell'Open Source supportando le persone che vi lavorano.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contattaci
  • Privacy & Cookie Policy

Trovato un errore? Per favore scrivi a contattaci.

© 1999–2023 The Linux Professional Institute Inc. Tutti i diritti riservati.