Vraag Hoe wordt de / tmp-map opgeruimd?


Hoe is de /tmp map opgeschoond? Is het automatisch? Zo ja, hoe vaak wordt dit opgeschoond?


262
2018-01-09 19:26


oorsprong


Mijn tijdelijke bestanden worden nooit naar de schijf geschreven. Ze worden naar een RAM-schijf geschreven. Ik heb gedaan tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 in / etc / fstab. - Anonymous


antwoorden:


Notitie! Dit antwoord is verouderd sinds ten minste ubuntu 14.04. Zie andere antwoorden voor de huidige situatie en als ze goed blijken te zijn, moet je ze woedend overtroeven. Plaats ook een opmerking zodat ik hier een link naar het juiste antwoord kan plaatsen.

Zie voor 14.04 https://askubuntu.com/a/759048/1366

Voor 16.10 uur https://askubuntu.com/a/857154/453746


Oud antwoord vanaf 2011:

Het schoonmaken van /tmp wordt gedaan door het upstart-script /etc/init/mounted-tmp.conf. Het script wordt altijd door opstart gerund /tmp is bereden. Praktisch betekent dat bij elke opstart.

Het script doet ruwweg het volgende: als een bestand in /tmp is ouder dan $TMPTIME dagen zal het worden verwijderd.

De standaardwaarde van $TMPTIME is 0, dus elk bestand en elke map /tmp wordt verwijderd. $TMPTIME is een omgevingsvariabele gedefinieerd in /etc/default/rcS.


178
2018-01-10 00:17



Dat is niet meer waar voor 14.04 (het script bestaat niet meer). - Martin Schröder
@Martin Schröder - het script staat op mijn systeem en het is een schone installatie van 14.04 en tmPreaper bestaat niet! - Lance Holland
Ik gebruik nu arch Linux, dus ik kan het niet verifiëren. Sorry. Alsjeblieft, iemand kan dit verifiëren en commentaar geven of mijn antwoord bewerken. - lesmana
in ubuntu 16.04 wordt tminkoper verlaten als niet-beveiligd, zie: fossies.org/linux/tmpreaper/debian/README.security - Tamerlaha


De map wordt standaard gewist bij elke start, omdat TMPTIME is standaard 0.

Hier kunt u de tijd in het volgende bestand wijzigen:

/etc/default/rcS

TMPTIME zegt hoe vaak de tmp-map in dagen kan worden gewist


135
2018-01-09 19:35



Wissen bij elke opstart is niet ideaal voor een machine die nooit opnieuw wordt opgestart, zoals een server. Ik heb meer dan 500.000 bestanden die 5 Gb ruimte innemen in mijn / tmp omdat mijn server 378 dagen bedrijfstijd heeft. Ik ben terughoudend om het opnieuw op te starten, simpelweg omdat het wissen van die bestanden bij het opnieuw opstarten uren duurt. - rjmunro
In jouw geval zou je moeten geven tmpreaper een kans. - qbi
Een CRON-taak kan dat gemakkelijk oplossen. - Ken Sharp
Ook tmpwatch moet een geschikt hulpmiddel zijn. - ArekBulski
Het lijkt erop dat Ubuntu / systemd al een oplossing biedt. Ik zou meer zeggen dan .... systemd. - Ken Sharp


Terwijl de /tmp map is geen plaats om bestanden op lange termijn op te slaan, af en toe wil je dingen een beetje langer dan de volgende keer dat u opnieuw opstart, wat de standaard is op Ubuntu-systemen. Ik weet een paar keer dat ik iets heb gedownload /tmp tijdens het testen opnieuw opgestart na het aanbrengen van wijzigingen en vervolgens de oorspronkelijke gegevens opnieuw verloren. Dit kan worden gewijzigd als u uw account wilt behouden /tmp bestanden een beetje langer.

De. Wijzigen /tmp Opschrijffrequentie

De standaardinstelling die aangeeft dat uw systeem moet worden gewist /tmp bij reboot wordt gehouden in de /etc/default/rcS het dossier. De waarde die we zullen bekijken is TMPTIME.

De huidige waarde van TMPTIME=0 zegt verwijder bestanden bij reboot ondanks de leeftijd van het bestand. Als u deze waarde wijzigt in een ander (positief) getal, verandert het aantal dagen dat een bestand kan overleven /tmp.

TMPTIME=7

Met deze instelling kunnen bestanden blijven staan /tmp totdat ze een week oud zijn en verwijder ze bij de volgende herstart. Een negatief getal (TMPTIME=-1) vertelt het systeem om nooit iets te verwijderen /tmp. Dit is waarschijnlijk niet iets dat u wilt, maar is beschikbaar.


58
2018-01-09 19:35



goede uitleg. Maar in welk script is het opruimcommando? ik heb gezien /etc/init/mounted-temp.conf, maar het heeft de zin start on mounted MOUNTPOINT=/tmp dat doet me denken dat het niet van toepassing is. - enzotib
Als u niet wilt dat een bestand automatisch wordt verwijderd, zet het dan in /var/tmp in plaats van /tmp. - Gilles
Het is ook handig om bestanden te bewaren die u niet kwijt wilt (gerenderde videoframes) wanneer uw machine vastloopt, mogelijk als gevolg van OOM. Een betere oplossing zou natuurlijk zijn om het probleem op te lossen. :-) - Ken Sharp
Kan dit binnen Cygwin worden gedaan? - CMCDragonkai


Ik controleer dit op Ubuntu 16.10. Ik kan bevestigen dat het bewerken van / etc / default / rcS helemaal geen effect meer heeft en de bestanden in tmp worden gewist door opnieuw opstarten, ongeacht wat je in dat bestand stopt. Zoals anderen al zeggen, wordt tminkoper niet meer gebruikt.

Ik denk dat het juiste antwoord is dat Ubuntu 16.10 een nieuwe setup heeft. Er is een map /etc/tmpfiles.d, gedocumenteerd in de manpage "tmpfiles.d". In die map moet men een configuratiebestand plaatsen om te bepalen of de / tmp moet worden gewist. Dit is wat ik doe om te stoppen met het opnieuw opstarten van bestanden in / tmp, tenzij ze 20 dagen oud zijn:

#/etc/tmpfiles.d/tmp.conf

d /tmp 1777 root root 20d

Vervang "20d" door "-" als u nooit bestanden wilt verwijderen. Dit is mijn beste poging, die man-pagina is bijna ondoordringbaar met detail.

Het voordeel van de nieuwe setup is dat een bestandsreiniger nog steeds kan worden uitgevoerd, zelfs als het systeem niet opnieuw wordt opgestart (zoals in het geval van een altijd werkende server). Dat is een groot pluspunt, denk ik.


29
2017-12-05 04:10



man tmpfiles.d - Martin Schröder
Ik heb geconstateerd dat je de originele bestandsrechten en -eigenaar kunt behouden door koppeltekens te gebruiken: d /tmp/ - - - 20d - Dave Yarwood
Ook vermeldenswaard: u kunt uw configuratie testen door de opschoningstaak handmatig uit te voeren: systemctl start systemd-tmpfiles-clean - Dave Yarwood


In Ubuntu 14.04 is dit gedaan door tmpreaper, die dagelijks door cron wordt genoemd (uit /etc/cron.daily). Het programma kan via worden geconfigureerd /etc/default/rcS en /etc/tmpreaper.conf.


26
2018-04-19 12:00



op mijn systeem was tmpreaper niet in /etc/cron.daily - maar ik was in staat om het te installeren met apt-get - Joe Germuska


Voor 14.04:

Het wordt opgeruimd elke keer dat u opnieuw opstart.


10
2018-01-09 19:34



Verschijnt met 14.04+ het gebruikt alleen tmpreaper, niet het "per boot" script FWIW - rogerdpack
Mijn 14.04-systemen worden allemaal schoongemaakt bij opnieuw opstarten. Nog nooit van gehoord tmpreaper. - Ken Sharp
wat als je nooit het systeem opnieuw start? - phuclv


Op een van onze servers waarop Ubuntu draait, hebben we een script om bestanden in / tmp te verwijderen en het wordt 's nachts uitgevoerd.

Het script is:

#!/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 {} \;

Sla de bovenstaande inhoud op in een bestand chmod 775 en maak een cron-item om het uit te voeren. Aangezien dit een webserver is, willen we deze om duidelijke redenen niet opnieuw opstarten.


5
2017-09-28 04:54



Misschien ben je beter af met gebruiken tmpwatch. - poolie
De laatste regel is extreem gevaarlijk. Normaal gesproken kan iedereen rennen ln -s /usr /tmp/kaboom of zelfs ln -s /* /tmp/ ... - Daniel Alder


In een systemd Ubuntu (15.10 en nieuwer), dit wordt gedaan door systemd, met behulp van de systemd-tmpfiles-clean service en 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

En

$ 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

Zo systemd-tmpfiles-clean werkt op shutdown en anders eenmaal per dag. De bestanden die worden gereinigd kunnen worden uitgebreid met /etc/tmpfiles.d vermeld in nog een antwoord.

U kunt het gedrag van de timer zelf wijzigen met systemctl edit systemd-tmpfiles-clean.timeren met behulp van verschillende systemd Timer configuratie-opties (zie man 5 systemd.timer).


3
2017-12-06 17:11