GNU/Linux >> Linux Esercitazione >  >> Linux

Timestamp dei file Linux spiegati con esempi

Questo tutorial spiega i tipi di timestamp dei file Linux e come visualizzare e modificare i timestamp di un file utilizzando touch comando con esempi.

Una breve introduzione ai timestamp dei file Linux

In Linux e Unix in generale, ogni file ha tre tipi di timestamp:atime (tempo di accesso), mtime (tempo di modifica) e ctime (cambiare tempo). Come suggerisce il nome, i timestamp vengono utilizzati per scoprire quando è stato effettuato l'accesso, la modifica e la modifica di un file.

Il timestamp del tempo di accesso (o in breve atime) è l'ultima volta che un file è stato letto. Ad esempio, potresti aver aperto il file. Al file potrebbe essere stato eseguito l'accesso da qualche altro programma o da una macchina remota. Potresti aver letto il contenuto di un file usando un comando (ad es. cat command) o un programma (es. gedit, vim ecc.). Il file non viene né modificato né modificato. È stato effettuato solo dall'utente o da un altro utente da un sistema remoto.

Il timestamp dell'ora di modifica (o mtime) indica l'ultima volta che un file (o una directory) è stato modificato. In altre parole, mtime indica l'ora in cui il contenuto di un file è stato modificato. Ad esempio, potresti aver aggiunto qualcosa nel file o eliminato qualcosa dal file o potresti aver modificato il contenuto del file.

Un timestamp dell'ora di modifica (o ctime) mostra l'ultima volta che è stato modificato il contenuto del file o i metadati del file (ad esempio gli attributi del file, come la proprietà del file, le autorizzazioni del file o il gruppo).

In sintesi,

  • atime - indica l'ora dell'ultimo accesso archiviare per la lettura dei contenuti.
  • mtime:indica l'ora dell'ultima modifica per archiviare i contenuti.
  • ctime - indica l'ora dell'ultima modifica per archiviare contenuti o metadati di file (proprietario, gruppo o autorizzazioni).

I timestamp possono essere utili in varie situazioni. Ecco alcuni casi d'uso per i timestamp:

  • Trova e ordina i file in base al tempo di accesso o di modifica.
  • Trova ed elimina file più vecchi di X giorni. Utile per ripulire i vecchi file nel disco rigido.
  • Controlla quando è stato modificato un file di configurazione.
  • Verifica se è stato effettuato l'accesso a un file.
  • Verifica se una directory è stata aggiornata.
  • Trova file più vecchi o più recenti di X giorni.

Visualizza timestamp dei file Linux con stat e ls comandi

Possiamo visualizzare i timestamp dei file in Linux usando stat comando. Secondo le pagine man, il stat comando visualizza lo stato del file o del file system in Linux. Il comando stat fa parte di GNU Coreutils , quindi non dedichiamoci all'installazione.

Ora controlliamo i timestamp di un file di testo chiamato ostechnix.txt utilizzando stat comando:

$ stat ostechnix.txt

Risultato di esempio:

  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:31:01.484504149 +0530
Modify: 2020-11-11 17:31:01.484504149 +0530
Change: 2020-11-11 17:31:01.484504149 +0530
 Birth: -

Le ultime tre righe nell'output sopra mostrano rispettivamente l'ora di accesso, l'ora di modifica e la data e ora di modifica. Quando creiamo un nuovo file, tutti i timestamp sono gli stessi.

Hai notato la riga "Birth: " alla fine dell'output? Indica il timestamp dell'ora di creazione del file. Lo standard POSIX non definisce un timestamp per la creazione del file. Alcuni filesystem (es. ext4, JFS, Btrfs) memorizzano questo valore, ma al momento non esiste l'API del kernel Linux per accedervi. Quindi, vediamo un trattino "-" invece di un timestamp nella riga "Nascita:".

Puoi anche ottenere i timestamp atime, mtime e ctime singolarmente usando ls comando.

Per visualizzare il timestamp dell'ora di modifica (mtime), utilizzare ls -l comando:

$ ls -l ostechnix.txt 
-rw-rw-r-- 1 sk sk 21 Nov 11 17:31 ostechnix.txt

Per visualizzare il timestamp dell'ora di modifica (ctime), eseguire ls -lc comando:

$ ls -lc ostechnix.txt 
-rw-rw-r-- 1 sk sk 21 Nov 11 17:31 ostechnix.txt

Qui, il c flag viene utilizzato per visualizzare l'ora dell'ultima modifica ai metadati del file o agli attributi del file.

Visualizza il timestamp dell'ora di accesso (atime) con ls -lu comando:

$ ls -lu ostechnix.txt 
-rw-rw-r-- 1 sk sk 21 Nov 11 17:31 ostechnix.txt

Qui, il u flag mostra l'ora dell'ultimo accesso al file.

Cambia i timestamp dei file Linux con touch comando

Il touch Il comando viene utilizzato per modificare i timestamp dei file e per creare nuovi file vuoti in Linux. Proprio come stat comando, il touch il comando fa anche parte di GNU coreutils , quindi non è nemmeno necessario installarlo.

Prima di modificare i timestamp, otteniamo i timestamp correnti del file denominato ostechnix.txt per riferimento:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:31:01.484504149 +0530
Modify: 2020-11-11 17:31:01.484504149 +0530
Change: 2020-11-11 17:31:01.484504149 +0530
 Birth: -

Come puoi vedere nell'output sopra, il file ostechnix.txt è stato effettuato l'accesso. modificato e modificato nella stessa data e ora, ovvero 11 novembre 2020 alle 17:31:01.

Cambiamo i timestamp di questo file usando touch comando come di seguito:

$ touch ostechnix.txt

Il comando precedente cambierà tutti i timestamp (ad esempio atime, mtime e ctime) nell'ora corrente del tuo computer.

Ora diamo un'occhiata ai timestamp del file con stat comando:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:39:59.430610787 +0530
Modify: 2020-11-11 17:39:59.430610787 +0530
Change: 2020-11-11 17:39:59.430610787 +0530
 Birth: -

Vedere? Tutti i timestamp sono stati modificati con l'ora corrente del mio sistema, ad esempio 2020-11-10 17:51:02 .

È anche possibile modificare i singoli timestamp separatamente. Ad esempio, puoi modificare solo il timestamp dell'ora di accesso (atime) con -a bandiera:

$ touch -a ostechnix.txt

Il comando precedente imposterà il timestamp dell'ora di accesso sull'ora corrente.

Ora controlla il timestamp di ostechnix.txt file con stat comando:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:43:46.555428706 +0530
Modify: 2020-11-11 17:39:59.430610787 +0530
Change: 2020-11-11 17:43:46.555428706 +0530
 Birth: -

Come si vede nell'output sopra, l'ora di accesso viene modificata nell'ora corrente. Viene aggiornato anche l'orario di modifica.

Per modificare solo il timestamp dell'ora di modifica (mtime), usa -m bandiera:

$ touch -m ostechnix.txt

Verifica se l'mtime è cambiato con stat comando:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:43:46.555428706 +0530
Modify: 2020-11-11 17:47:17.577722187 +0530
Change: 2020-11-11 17:47:17.577722187 +0530
 Birth: -

Ora i timestamp mtime e ctime sono cambiati mentre atime è rimasto così com'è.

Come avrai notato quando cambiamo il tempo di accesso o il tempo di modifica, anche il ctime viene aggiornato.

Se desideri modificare simultaneamente i timestamp atime e mtime, usa -d opzione.

$ touch -d "2020-11-11 17:50:01" ostechnix.txt

Verifica se i timestamp atime e mtime sono stati modificati o meno con stat comando:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:50:01.000000000 +0530
Modify: 2020-11-11 17:50:01.000000000 +0530
Change: 2020-11-11 17:51:17.024213698 +0530
 Birth: -

Ora abbiamo impostato l'ora di accesso e l'ora di modifica su un'ora specifica, ad esempio 2020-11-11 17:50:01 . E anche il timestamp ctime è stato aggiornato all'ora corrente.

È anche possibile utilizzare un timestamp specifico invece dell'ora corrente con -t segnala anche:

$ touch -t 2011111754 ostechnix.txt

Questo comando imposterà i timestamp atime e mtime su 2020-11-11 17:54:00 . Verificalo con stat comando come di seguito:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:54:00.000000000 +0530
Modify: 2020-11-11 17:54:00.000000000 +0530
Change: 2020-11-11 17:56:20.844405239 +0530
 Birth: -

Come già affermato, ctime viene aggiornato quando atime e mtime vengono modificati. Se vuoi modificare solo il timestamp ctime, non c'è un flag dedicato in touch comando. Quindi è necessario modificare manualmente il ctime modificando i metadati del file o gli attributi del file. Ad esempio, assegnerò autorizzazione eseguibile a ostchnix.txt file con chmod comando:

$ chmod +x ostechnix.txt

Controlla se ctime viene aggiornato con stat comando:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:54:00.000000000 +0530
Modify: 2020-11-11 17:54:00.000000000 +0530
Change: 2020-11-11 17:57:21.022720776 +0530
 Birth: -

Vedere? Il timestamp ctime è cambiato ma i tempi atime e mtime no. Poiché il file non è né accessibile né modificato. Ho modificato solo l'autorizzazione del file.

Modifica i timestamp dei file visualizzando o accedendo o modificando i file

Come già affermato, il timestamp atime viene modificato quando accediamo al file per la lettura. Prova ad accedere al file per la lettura usando cat comanda e guarda cosa succede.

$ cat ostechnix.txt
This is a text file.

Ora controlla se il timestamp dell'ora di accesso è aggiornato:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 18:00:16.005323521 +0530
Modify: 2020-11-11 17:54:00.000000000 +0530
Change: 2020-11-11 17:57:21.022720776 +0530
 Birth: -

Vedere? Il valore dell'ora è cambiato ora.

Il mtime viene aggiornato quando aggiungiamo o rimuoviamo dati da un file.

Fammi aggiungere una riga nel ostechnix.txt file:

$ echo "modify this file" >> ostechnix.txt

Controlla i timestamp del file:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 38        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 18:00:16.005323521 +0530
Modify: 2020-11-11 18:01:49.072771458 +0530
Change: 2020-11-11 18:01:49.072771458 +0530
 Birth: -

Poiché il contenuto del file è cambiato, sono cambiati entrambi mtime e ctime.

Modifica timestamp del collegamento simbolico

Per impostazione predefinita, se utilizzi touch comando su un link simbolico (o collegamento simbolico), cambierà anche i timestamp del file di riferimento.

Se vuoi modificare solo il timestamp di un collegamento simbolico, usa -h , (--no-dereference ) opzione:

$ touch -h <path-to-symlink>

[Suggerimento bonus] Copia i timestamp da un altro file

Il comando touch ha un'opzione chiamata -r, (--reference=) che ti consente di copiare timestamp da un file all'altro.

Il comando seguente copierà i timestamp di file1 in file2.

$ touch -r file1.txt file2.txt

Per maggiori dettagli, fare riferimento alle pagine man di stat e touch comandi:

$ man stat
$ man touch

Conclusione

In questa guida, abbiamo discusso tre tipi di timestamp dei file Linux, ovvero atime, mtime e ctime, come visualizzare i timestamp dei file usando stat e ls comandi e infine come modificare i timestamp dei file con touch comando. Spero che questo aiuti.


Linux
  1. Spiegazione del comando di taglio di Linux con 6 esempi

  2. Ordina il comando in Linux con esempi

  3. Comando Traceroute di Linux, spiegato con esempi

  4. Come utilizzare il comando Vmstat in Linux spiegato con esempi

  5. Timestamp dei file in Linux:spiegazione di atime, mtime, ctime

Utilizzo del comando Linux mv con esempi

Spiegazione del comando tee di Linux (con esempi)

Spiegazione del comando csplit di Linux (con esempi)

Comando di montaggio Linux con esempi

Comando gawk Linux con esempi

Linux make Command con esempi