Per rispondere alle domande:
- È
/tmp
dovrebbe essere svuotato automaticamente:Sì - Dobbiamo eliminare i file in
/tmp
regolarmente e manualmente:No , il tuo sistema se ne occuperà.
Se ti puoi chiedere:
- Posso eliminare i file da
/tmp
per qualsiasi motivo (bisogno di spazio, voglia di togliere tracce, ecc.):Dipende , continua a leggere .
Filesystem Hierarchy Standard (FHS) dichiara:
La directory /tmp deve essere resa disponibile per i programmi che richiedono file temporanei.
I programmi non devono presumere che i file o le directory in /tmp vengano preservati tra le invocazioni del programma.
/var/tmp/
ha uno scopo simile, ma non deve essere cancellato durante il riavvio.
non è garantito quel /tmp/
o /var/tmp/
vengono regolarmente ripuliti. Ciò può dipendere dalla distribuzione e dalle impostazioni, sebbene la maggior parte dei sistemi esegua alcune operazioni di pulizia di volta in volta. Vedi il commento di mike
.
Se è necessario eliminare un file in /tmp , vedere prima se il file è in uso. Puoi farlo facilmente con:
lsof /tmp/file_to_delete
Se hai i diritti per farlo, questo mostrerà il processo che detiene l'handle di quel file, come nome del processo, PID e tipo di file. Per mostrare davvero tutti i processi, anteponi sudo
o esegui come utente root .
lsof +D /tmp
ti mostrerà tutti i file in /tmp
e le directory sottostanti (+D
) che sono attualmente aperti.Ovviamente non dovresti eliminare questi file.
Infatti quando elimini un file che è ancora aperto - se hai i diritti per farlo - diventa inaccessibile dallo spazio dei nomi del filesystem, ma esiste ancora per i processi che hanno un handle di file aperto per esso. Dopo aver chiuso quell'handle, il file non è più accessibile per quel processo e se nessun processo ha più aperto il file, viene finalmente eliminato. Un processo non dovrebbe supporre che il file sopravviva tra open
successivi chiamate, ma i programmatori sono sciatti e non si sa mai. Per questo motivo non è così intelligente per eliminare i file che sono ancora in uso da alcuni programmi.
Penso che questo dipenda dal sistema operativo. Immagino che /tmp venga in genere cancellato al riavvio, e in effetti non sarebbe sicuro per il sistema ripulirsi a metà sessione poiché non saprebbe quali file sono attivi.
Se sei coraggioso potresti voler lanciare un comando in crontab che cancella i file più vecchi di una certa età, ma questo potrebbe causare alcuni problemi se cancella i file ancora utilizzati. Potresti provare un comando (non l'ho provato) come
find /tmp -type f -ctime +10 -exec rm {} +
Che teoricamente rimuoverà tutti i file in /tmp più vecchi di 10 giorni.
Le directory /tmp e /var/tmp vengono pulite con una pianificazione normale. Questo può dipendere dalla tua distribuzione. Sul mio sistema CentOS (un clone di RedHat) è programmato un lavoro cron per eseguire tmpwatch, un tmp dir cleaner, su base giornaliera. I file in /var/tmp possono rimanere un po' più a lungo dei file in /tmp/. Ho anche visto script che eliminano /tmp (ma esplicitamente non /var/tmp) al riavvio, sapendo che non può esserci nulla che tenga aperto quel file poiché tutti i processi sono nuovi.
Quindi, sì, /tmp ha la manutenzione dagli script di base. Può ancora riempirsi al di fuori di quei tempi di manutenzione. Se hai scelto di pulire le cose manualmente, la migliore pratica dell'amministratore di sistema è fare attenzione. La tradizione dell'amministratore di sistema parla di collegamenti simbolici in /tmp che puntano ai file di sistema necessari che sono stati eliminati quando gli amministratori di sistema n00b hanno eseguito un semplice find
script.