Inode
Ogni file in un sistema operativo Linux/Unix ha un inode ad esso associato, ad eccezione di Solaris ZFS, che non ha inode. Gli inode funzionano fondamentalmente in modo molto simile a un'appendice di un libro. Ogni Inode avrà sotto le informazioni sul file.
1. proprietario2. autorizzazioni
3. taglia
4. ora dell'ultimo accesso
5. tempo di creazione
6. ID gruppo
7. Puntatori a blocchi di dati associati al contenuto del file
Nota:Inode tuttavia non fornisce il nome del file.
Tipi di file
Esistono fondamentalmente 5 tipi di file in qualsiasi sistema operativo Unix.
1. Regolare
2. Elenco
3. Link simbolici (hard link e soft link)
4. File dispositivo (carattere speciale e blocco dispositivo speciale)
5. Tubi con nome
Il carattere nella prima colonna del comando ls -l identifica il tipo di file.
# cd / # ls -l bin lrwxrwxrwx 1 root root 9 Sep 19 15:41 bin -> ./usr/bin
- Regular files d Directories l Symbolic links b Block-special device files c Character-special device files p Named pipes
File e directory
I file normali possono memorizzare diversi tipi di dati e possono essere facilmente creati utilizzando il comando touch o l'editor vi. Le directory contengono l'associazione tra file e/o directory e numeri di inode.
Collegamenti soft
Come mostrato nel diagramma, i collegamenti software o simbolici puntano semplicemente a un altro file. Contiene solo il percorso del file a cui punta
1. Metodo di creazione
# touch file1 # ln -s file1 link1 # ls -l -rw-r--r-- 1 root root 0 Sep 19 14:41 link1 lrwxrwxrwx 1 root root 5 Sep 19 15:41 link1 -> file1
2. La dimensione del collegamento software creato nell'esempio sopra è il numero di caratteri nel nome del percorso (file1), che è 5 (può essere assoluto o relativo).
3. Se elimini il file originale (file1), il collegamento software diventa inutile.
4. I soft link possono risiedere su diversi file system.
Collegamenti reali
Ogni file utilizza almeno un collegamento fisico. Quindi, quando crei un nuovo file, viene creata una nuova voce di directory chiamata conteggio dei collegamenti. Quindi, quando crei un nuovo collegamento reale a questo file, il conteggio del collegamento aumenta di 1.
1. metodo di creazione
# touch file1 # ls -l -rw-r--r-- 1 root root 0 Sep 23 13:19 file1 # ln file1 file2 # ls -l -rw-r--r-- 2 root root 0 Sep 23 13:19 file1 -rw-r--r-- 2 root root 0 Sep 23 13:19 file2 # ls -li 1282 -rw-r--r-- 2 root 0 root 0 Sep 23 13:19 file1 1282 -rw-r--r-- 2 root 0 root 0 Sep 23 13:19 file2 # find . -inum 1282 ./file1 ./file2
2. Il conteggio dei link aumenta di uno, ogni volta che crei un nuovo hard link al file come mostrato sopra.
3. Anche se elimini uno qualsiasi dei file, non ha alcun effetto sull'altro file. Solo il conteggio dei link diminuisce
4. Gli hard link non possono attraversare il file system.
File dispositivo
Nel sistema operativo UNIX qualsiasi dispositivo fisico ha un file ad esso associato chiamato file dispositivo . È un'interfaccia che interagisce con i driver di dispositivo. A differenza di altri tipi di file, non contengono dati nei blocchi di dati, ma usano gli inode per memorizzare il no maggiore e minore per qualsiasi file del dispositivo.
# cd /dev/ # ls -l crw-r----- 1 root tty 4, 0 Sep 23 12:51 tty0 brw-rw----- 1 root disk 8, 1 Sep 23 12:51 sda0
Dispositivo principale n. – È necessario un driver di dispositivo specifico per accedere a un dispositivo
dispositivo secondario n. – unità specifica del tipo controllata dal driver di dispositivo.
Ad esempio, se disponi di 10 stampanti HP, il numero maggiore sarà il driver dei dispositivi della stampante HP e il numero minore sarà l'istanza della stampante (1,2 .. fino a 10).
I file del dispositivo sono di 2 tipi
1. Personaggio speciale
2. Blocca speciale
File dispositivo con caratteri speciali
1. Il carattere "c" nella prima colonna dell'output del comando ls -l identifica un file dispositivo speciale carattere
2. Si accede ai dati come flusso di dati (carattere per carattere , 1 byte alla volta)
3. Esempio:terminali tty, seriali, virtuali
# ls -l crw-r----- 1 root tty 4, 0 Sep 23 12:51 tty0
Blocca file dispositivo speciale
1. Il carattere "b" nella prima colonna dell'output del comando ls -l identifica un file dispositivo speciale carattere
2. Si accede ai dati in base alla dimensione del blocco definita per quel dispositivo
3. Esempio:disco rigido, CD/DVD
# ls -l brw-rw----- 1 root disk 8, 1 Sep 23 12:51 sda0
Pipe denominate
– Le pipe con nome sono file speciali utilizzati per le comunicazioni tra processori. A differenza delle pipe normali, puoi leggere e scrivere nelle pipe con nome. Per questo motivo sono anche chiamati FIFO (file in file out).
– mknod() o mkfifio() sono esempi comuni che fanno uso di named pipe per accedere alla pipe per nome.
– Come mostrato nell'esempio seguente, 2 processi (gzip e cat) possono accedere contemporaneamente alla Named pipe per scrivere e leggere i dati da essa.
# mkfifo test_pipe # gzip -9 -c > test_pipe < out.gz # cat file1 > test_pipe # ls -l test_pipe prw-rw----- 1 root root 0 Sep 23 12:51 test_pipe