Jak je adresář / tmp vyčištěn?

262

Jak je adresář/tmp vyčištěn? Je to automatické? Pokud ano, jak často to je vyčištěno?

    
dané Olivier Lalonde 09.01.2011 20:26

8 odpovědí

178

Upozornění! Tato odpověď je zastaralá, protože alespoň ubuntu 14.04. Podívejte se na další odpovědi na aktuální situaci a pokud se ukáží správné, pak je zuřivě zvete. Také post komentář, takže mohu dát odkaz na aktuální správnou odpověď.

Pro 14.04 viz Odkaz

Pro 16.10. naleznete Odkaz

Stará odpověď od roku 2011:

Čistění/tmp je prováděno skriptem upstart/etc/init/mounted-tmp.conf. Skript je spuštěn vždy po spuštění/tmp. Prakticky to znamená při každém spuštění.

Skript dělá zhruba následující: Pokud je soubor v/tmp starší než$TMPTIME dnů, bude odstraněn.

Výchozí hodnota$TMPTIME je 0, což znamená, že každý soubor a adresář v/tmp bude smazán. $TMPTIME je proměnná prostředí definovaná v/etc/default/rcS.

    
odpověděl lesmana 10.01.2011 01:17
135

Adresář je ve výchozím nastavení vymazán při každém zavádění, protožeTMPTIME je ve výchozím nastavení 0.

Zde můžete změnit čas v následujícím souboru:

/etc/default/rcS

TMPTIME říká, jak často bude tmp dir vymazán ve dnech

    
odpověděl Max Ruf 09.01.2011 20:35
59

Zatímco složka/tmp není místo pro dlouhodobé ukládání souborů, příležitostně chcete zachovat věci déle než při příštím restartování , což je výchozí nastavení pro systémy Ubuntu . Vím, že v době testování jsem něco stáhl (/tmp), restartoval (a) po provedení změn a znovu jsem ztratil původní data. To může být změněno, pokud chcete zachovat vaše soubory/tmp trochu déle.

Změna/tmp Čistící frekvence

Výchozí nastavení, které sděluje systému vymazání/tmp při restartování, je uloženo v souboru/etc/default/rcS. Hodnota, na kterou se podíváme, jeTMPTIME.

Aktuální hodnotaTMPTIME=0 říká, že při restartování souborů dochází k vymazání souborů i přes věk souboru. Změna této hodnoty na jiné (kladné) číslo změní počet dní, po kterých může soubor přežít v/tmp.

TMPTIME=7

Toto nastavení by umožnilo souborům zůstat v/tmp, dokud nejsou starý týden, a poté je při dalším restartu odstraní. Záporné číslo (TMPTIME=-1) říká, že systém nikdy nevymaže nic v/tmp. To pravděpodobně není něco, co chcete, ale je k dispozici.

    
odpověděl hhlp 09.01.2011 20:35
30

Zkouším to na Ubuntu 16.10. Mohu potvrdit, že editační / etc / default / rcS již vůbec nemá žádný vliv a soubory v tmp jsou zničeny restartováním bez ohledu na to, co jste vložili do tohoto souboru. Jak jiní zmínili, tmpreaper se již nepoužívá.

Myslím, že správná odpověď je, že Ubuntu 16.10 má nové nastavení. Jedná se o složku /etc/tmpfiles.d, která je dokumentována v manuálové stránce "tmpfiles.d". V této složce byste měli umístit konfigurační soubor, který bude kontrolovat, zda má být / tmp vymazán. To je to, co dělám, abych zastavil restartování ze smazání souborů v / tmp, pokud nejsou starší 20 dnů:

#/etc/tmpfiles.d/tmp.conf

d /tmp 1777 root root 20d

Nahraďte "20d" znakem "-", pokud nechcete odstranit soubory. To je moje nejlepší snaha, že stránka člověka je téměř neproniknutelná s podrobnostmi.

Výhodou nového nastavení je, že čistič souborů může stále fungovat i v případě, že systém není restartován (jako vždy v případě serveru). To je velký plus, myslím.

    
odpověděl pauljohn32 05.12.2016 05:10
26

V Ubuntu 14.04 je to provedeno tmpreaper , které se nazývá denně cron (od/etc/cron.daily). Program lze konfigurovat pomocí/etc/default/rcS a/etc/tmpreaper.conf.

    
odpověděl Martin Schröder 19.04.2016 14:00
10

Před 14.04:

Vyčistí se při každém restartování počítače.

    
odpověděl Utku Demir 09.01.2011 20:34
5

Na jednom z našich serverů se systémem Ubuntu máme skript pro odstranění souborů v / tmp a běží v noci.

Skript je:

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

Stačí uložit obsah na soubor chmod 775 a vytvořit cron položku pro jeho spuštění. Vzhledem k tomu, že se jedná o webový server, nechceme ho ze zřejmých důvodů restartovat.

    
odpověděl Paul 28.09.2011 06:54
4

Vsystemd Ubuntu (15.10 a novějších) se to provádí pomocí systemd, pomocí službysystemd-tmpfiles-clean a časovače:

$ 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

A

$ 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

Takžesystemd-tmpfiles-clean běží při vypnutí a jednou za den jinak. Soubory, které vyčistí, lze rozšířit pomocí/etc/tmpfiles.d uvedeného v jiné odpovědi .

Můžete změnit samotné chování časovače pomocísystemctl edit systemd-tmpfiles-clean.timer a pomocí různých systémových možnostíTimer (viz man 5 systemd.timer ).

    
odpověděl muru 06.12.2017 18:11