Come viene /tmpripulita la directory? È automatico? In tal caso, con che frequenza viene pulita?
Come viene /tmpripulita la directory? È automatico? In tal caso, con che frequenza viene pulita?
Risposte:
Nota! Questa risposta è obsoleta da almeno Ubuntu 14.04. Vedi le altre risposte per la situazione attuale e se si rivelano corrette, votale furiosamente. Pubblica anche un commento così posso mettere il link qui alla risposta corretta corrente.
Per 14.04 consultare https://askubuntu.com/a/759048/1366
Per il 16.10 consultare https://askubuntu.com/a/857154/453746
Vecchia risposta dal 2011:
La pulizia di /tmpviene eseguita dallo script upstart /etc/init/mounted-tmp.conf. Lo script viene eseguito da upstart ogni volta che /tmpviene montato. Praticamente ciò significa ad ogni avvio.
Lo script esegue all'incirca quanto segue: se un file /tmpè più vecchio di $TMPTIMEgiorni verrà eliminato.
Il valore predefinito $TMPTIMEè 0, il che significa che tutti i file e tutte le directory /tmpvengono eliminati. $TMPTIMEè una variabile d'ambiente definita in /etc/default/rcS.
La directory viene cancellata per impostazione predefinita ad ogni avvio, perché TMPTIMEè 0 per impostazione predefinita.
Qui è possibile modificare l'ora nel seguente file:
/etc/default/rcS
TMPTIME indica la frequenza con cui la directory tmp potrebbe essere cancellata in pochi giorni
tmpreaperuna possibilità.
tmpwatchdovrebbe essere uno strumento appropriato.
Mentre la /tmpcartella non è un posto dove archiviare i file a lungo termine, a volte vuoi mantenere le cose un po 'più a lungo rispetto al prossimo riavvio , che è l'impostazione predefinita sui sistemi Ubuntu. Conosco una o due volte in cui ho scaricato qualcosa /tmpdurante il test, riavviato dopo aver apportato modifiche e quindi perso di nuovo i dati originali. Questo può essere modificato se desideri mantenere i tuoi /tmpfile un po 'più a lungo.
Modifica della /tmpfrequenza di pulizia
L'impostazione predefinita che dice al sistema di cancellare /tmpal riavvio è contenuta nel /etc/default/rcSfile. Il valore che vedremo è TMPTIME.
Il valore corrente di TMPTIME=0dice eliminare i file al riavvio nonostante l'età del file. La modifica di questo valore in un numero diverso (positivo) cambierà il numero di giorni in cui un file può sopravvivere /tmp.
TMPTIME=7
Questa impostazione consentirebbe ai file di rimanere /tmpfino a quando non sono trascorsi una settimana, quindi eliminarli al successivo riavvio. Un numero negativo ( TMPTIME=-1) indica al sistema di non eliminare mai nulla in /tmp. Questo probabilmente non è qualcosa che vuoi, ma è disponibile.
/etc/init/mounted-temp.conf, ma ha la linea start on mounted MOUNTPOINT=/tmpche mi fa pensare che non sia applicabile.
/var/tmpinvece di /tmp.
Sto verificando questo su Ubuntu 16.10. Posso certificare che la modifica di / etc / default / rcS non ha più alcun effetto e che i file in tmp vengono cancellati dal riavvio, indipendentemente da ciò che si inserisce in quel file. Come altri menzionano, tmpreaper non viene più utilizzato.
Penso che la risposta giusta sia che Ubuntu 16.10 ha una nuova configurazione. C'è una cartella /etc/tmpfiles.d, documentata nella pagina man "tmpfiles.d". In quella cartella, si dovrebbe posizionare un file di configurazione per controllare se / tmp deve essere cancellato. Questo è quello che sto facendo per impedire ai riavvii di cancellare i file in / tmp a meno che non abbiano 20 giorni:
#/etc/tmpfiles.d/tmp.conf
d /tmp 1777 root root 20d
Sostituisci "20d" con "-" se non vuoi mai cancellare i file. Questo è il mio miglior sforzo, quella pagina man è quasi impenetrabile con i dettagli.
Il vantaggio della nuova configurazione è che un pulitore di file può ancora essere eseguito anche se il sistema non viene riavviato (come nel caso di un server sempre attivo). Questo è un grande vantaggio, penso.
man tmpfiles.d
d /tmp/ - - - 20d
systemctl start systemd-tmpfiles-clean
In Ubuntu 14.04 questo viene fatto da tmpreaper, che viene chiamato quotidianamente da cron (da /etc/cron.daily). Il programma può essere configurato tramite /etc/default/rcSe /etc/tmpreaper.conf.
Viene ripulito ogni volta che si riavvia.
tmpreaper.
In un systemdUbuntu (15.10 e successivi), questo viene fatto da systemd, usando il systemd-tmpfiles-cleanservizio e il timer:
$ systemctl cat systemd-tmpfiles-clean.service
# /lib/systemd/system/systemd-tmpfiles-clean.service
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs.target time-sync.target
Before=shutdown.target
[Service]
Type=oneshot
ExecStart=/bin/systemd-tmpfiles --clean
IOSchedulingClass=idle
E
$ systemctl cat systemd-tmpfiles-clean.timer
# /lib/systemd/system/systemd-tmpfiles-clean.timer
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
Quindi systemd-tmpfiles-cleanviene eseguito allo spegnimento e, una volta al giorno, altrimenti. I file che pulisce possono essere estesi usando /etc/tmpfiles.dmenzionato in un'altra risposta .
È possibile modificare il comportamento del timer stesso utilizzando systemctl edit systemd-tmpfiles-clean.timere utilizzando varie Timeropzioni di configurazione del sistema (vedere man 5 systemd.timer).
/tmpnon è stato ancora pulito. e ho bisogno che venga ripulito. anche l'avvio manuale sudo systemctl start systemd-tmpfiles-cleannon fa il trucco. Qualche idea sul perché?
Su uno dei nostri server che eseguono Ubuntu, abbiamo uno script per rimuovere i file in / tmp e funziona di notte.
Lo script è:
#!/bin/sh
# Clean file and dirs more than 3 days old in /tmp nightly
/usr/bin/find /tmp -type f -atime +2 -mtime +2 |xargs /bin/rm -f &&
/usr/bin/find /tmp -type d -mtime +2 -exec /bin/rm -rf '{}' \; &&
/usr/bin/find /tmp -type l -ctime +2 |xargs /bin/rm -f &&
/usr/bin/find -L /tmp -mtime +2 -print -exec rm -f {} \;
Basta salvare il contenuto sopra in un file chmod 775 e creare una voce cron per eseguirlo. Dato che si tratta di un server Web, non vogliamo riavviarlo per ovvi motivi.
ln -s /usr /tmp/kaboomo addirittura ln -s /* /tmp/...
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0/ etc / fstab.