it-swarm-eu.dev

Jak se vyčistí adresář / tmp?

Jak je /tmp odstraněn adresář? Je to automatické? Pokud ano, jak často se uklízí?

316
Olivier Lalonde

Poznámka! 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áže, že jsou správné, pak je zuřivě povzbuzujte. Také přidejte komentář, abych zde mohl vložit odkaz na aktuální správnou odpověď.

Pro 14.04 viz https://askubuntu.com/a/759048/1366

Pro 16.10 viz https://askubuntu.com/a/857154/453746


Stará odpověď z roku 2011:

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

Skript provádí zhruba následující: pokud je soubor v /tmp je starší než $TMPTIME dní bude smazáno.

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

199
lesmana

Adresář je ve výchozím nastavení vymazán při každém spuštění, protože TMPTIME 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 sould ve dnech vymazáván

142
Max Ruf

Zatímco složka /tmp není místem pro dlouhodobé ukládání souborů, občas si chcete ponechat věci trochu déle než při příštím restartování, což je výchozí nastavení pro Ubuntu systémy. Vím, že jsem během testování něco nebo dvakrát stáhl něco do /tmp, restartoval jsem se po provedení změn a znovu jsem ztratil původní data. To lze změnit, pokud si chcete soubory /tmp ponechat trochu déle.

Změna /tmp Frekvence čištění

Výchozí nastavení, které říká vašemu systému, aby při restartu vymazal /tmp, je uloženo v souboru /etc/default/rcS. Hodnota, na kterou se podíváme, je TMPTIME.

Aktuální hodnota TMPTIME=0 říká smazat soubory při restartu navzdory věku souboru. Změnou této hodnoty na jiné (kladné) číslo změníte počet dní, kdy může soubor přežít v /tmp.

TMPTIME=7

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

68
hhlp

Zkontroluji to na Ubuntu 16.10. Mohu potvrdit, že úpravy/etc/default/rcS již nemají žádný účinek a soubory v tmp jsou vymazány restartem bez ohledu na to, co do tohoto souboru vložíte. Jak ostatní zmiňují, tmpreaper se již nepoužívá.

Myslím, že správnou odpovědí je, že Ubuntu 16.10 má nové nastavení. Na stránce man "tmpfiles.d" je dokumentována složka /etc/tmpfiles.d. Do této složky byste měli umístit konfigurační soubor, který určuje, zda se má/tmp vymazat. To je to, co dělám, abych zastavil restartování v mazání souborů v/tmp, pokud nejsou staré 20 dní:

#/etc/tmpfiles.d/tmp.conf

d /tmp 1777 root root 20d

Pokud nikdy nechcete soubory smazat, nahraďte „20d“ za „-“. To je moje nejlepší snaha, že tato stránka je téměř neproniknutelná s detaily.

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

51
pauljohn32

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

V systemd Ubuntu (15.10 a novější) to provádí systémd pomocí systemd-tmpfiles-clean služba a časovač:

$ 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 systemd-tmpfiles-clean běží na vypnutí a jednou denně jinak. Soubory, které čistí, lze rozšířit pomocí /etc/tmpfiles.d uvedeno v další odpověď .

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

11
muru

Před 14.04:

Vyčistí se při každém restartu.

10
Utku Demir

Na jednom z našich serverů, na kterých běží Ubuntu, máme skript pro odstranění souborů v/tmp a běží to každý večer.

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

Jednoduše uložte výše uvedený obsah do souboru chmod 775 a vytvořte položku cron pro jeho spuštění. Protože se jedná o webový server, nechceme jej ze zřejmých důvodů restartovat.

4
Paul