¿Cuándo se borra / tmp?

143

Estoy empezando a poner varios archivos /tmpy me preguntaba sobre las reglas para eliminarlos.

Me imagino que es diferente para diferentes distribuciones, y estoy particularmente interesado en las versiones de escritorio de Ubuntu y Fedora.

Pero una buena forma general de averiguarlo sería una gran cosa.

¡Incluso mejor sería una buena forma general de controlarlo! (Algo así como 'todos los días a las 3 de la mañana, elimine los /tmparchivos anteriores a 60 días, pero no borre el directorio al reiniciar')

John Lawrence Aspden
fuente
Relacionado: askubuntu.com/questions/20783/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Respuestas:

155

Eso depende de tu distribución. En algunos sistemas, se elimina solo cuando se inicia, otros tienen cronjobs que ejecutan la eliminación de elementos anteriores a n horas.

  • En sistemas similares a Debian: en el arranque (las reglas se definen en /etc/default/rcS).
  • En sistemas tipo RedHat: por edad (RHEL6 era /etc/cron.daily/tmpwatch; RHEL7 y tipo RedHat con systemd en el que está configurado /usr/lib/tmpfiles.d/tmp.conf, llamado por systemd-tmpfiles-clean.service).
  • En Gentoo /etc/conf.d/bootmisc.
kba
fuente
19
E independientemente de cuándo sucede esto, el único momento seguro es generalmente en el arranque, justo después de montarlo, ya que los procesos en ejecución pueden tener archivos bloqueados allí, y estos no deben eliminarse.
Adaptr
También hay paquetes disponibles que pueden eliminarlos periódicamente.
Samuel Edwin Ward,
2
En sistemas similares a RedHat con systemd (centos7 / rhel7), está configurado en /usr/lib/tmpfiles.d/tmp.conf. Es llamado por el objetivo de systemd systemd-tmpfiles-clean.service.
Franklin Piat
1
En Debian heredado, puede considerar el tmpreaperpaquete, es una versión bifurcada de tmpwatch.
Věroš K.
Ubuntu 19.04:cat: /etc/default/rcS: No such file or directory
Boris
24

En CentOS (y supongo que Fedora), hay un trabajo en /etc/cron.daily llamado tmpwatch. Esto se ejecuta /usr/sbin/tmpwatch, lo que eliminará los archivos a los que no se haya accedido en el número de horas especificado, es decir, el comportamiento predeterminado es examinar atimeel archivo para evaluar si se ha utilizado recientemente.

http://linux.die.net/man/8/tmpwatch

Otras distribuciones (e instalaciones) pueden tener / tmp montado como tmpfs, que es un sistema de archivos en memoria. Esto se borrará en el arranque.

cjc
fuente
No tengo esto en CentOS 7.4.
Kevin Lemaire
@KevinLemaire La funcionalidad se trasladó a un servicio systemd. lists.centos.org/pipermail/centos/2014-October/147155.html
cjc
Si no encontró el archivo tmpwatch, puede descargar tmpwatch usandoyum install tmpwatch
Ng Sek Long
¿Puedo obtener tmpwatch en otras distribuciones? Suena asombroso. Estoy en una distribución basada en Debian
Jonathan
sudo find /tmp -type f -atime +10 -deleteeliminará los archivos tmp a los que no se haya accedido en 10 días, úselos con cuidado
Jonathan
13

En Ubuntu 11.10 que estoy usando, hay un script de inicio/etc/init/mounted-tmp.conf . El comienzo dice:

# mounted-tmp - Clean /tmp directory
#
# Cleans up the /tmp directory when it does not exist as a temporary
# filesystem.

description "Clean /tmp directory"

start on (mounted MOUNTPOINT=/tmp) or (mounted MOUNTPOINT=/usr)

Puede leer más detalles, sin embargo, en general, /tmpse limpia cuando está montado o /usrmontado. Esto ocurre regularmente en el arranque, por lo que esta /tmplimpieza se ejecuta en cada arranque.

En lo /etc/default/rcSque ha TMPTIMEestablecido, que se usa en el script de inicio anterior para alimentar los dos findcomandos al final, básicamente controla la eliminación de archivos en función de sus tiempos (modificado, modificado, accedido).

icyrock.com
fuente
5

En RHEL 6.2, tmpwatch elimina los archivos en / tmp si no se ha accedido a ellos en 10 días.

El archivo /etc/cron.daily/tmpwatch define la forma en que se llama tmpwatch.

#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
    -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
    -X '/tmp/hsperfdata_*' 10d /tmp

Los argumentos -x son archivos a excluir. El segundo al último argumento es el tiempo de espera después de la última hora accedida. El último argumento es el directorio a examinar.

johnjamesmiller
fuente
5

Desde Fedora 18 en adelante, /tmpestá montado en tmpfs(es decir, RAM) de forma predeterminada, y por lo tanto se borra al apagar.

Este comportamiento se puede deshabilitar emitiendo systemctl mask tmp.mounty reiniciando (y volviendo a habilitar emitiendo systemctl unmask tmp.mounty reiniciando), y luego /tmpse montará en el /sistema de archivos y se puede controlar mediante la /usr/lib/tmpfiles.d/tmp.confconfiguración.

Ver http://fedoraproject.org/wiki/Features/tmp-on-tmpfs y man tmpfiles.dpara más detalles sobre cada caso.

Skippy le Grand Gourou
fuente
3

En openSUSE 13.2, el comportamiento de limpieza podría controlarse con la siguiente variable en sysconfig.

  • MAX_DAYS_IN_TMP
  • MAX_DAYS_IN_LONG_TMP
  • TMP_DIRS_TO_CLEAR
  • LONG_TMP_DIRS_TO_CLEAR
  • OWNER_TO_KEEP_IN_TMP
  • CLEAR_TMP_DIRS_AT_BOOTUP

Puede modificar estas variables por (el uso de cada variable también se puede encontrar allí)

  1. Edite el /etc/sysconfig/cronarchivo manualmente en la línea de comando.
  2. Abra Yast y navegue en Sistema -> / etc / sysconfig Editor -> Sistema -> Cron
leodream
fuente
2

¡Incluso mejor sería una buena forma general de controlarlo! (Algo así como 'todos los días a las 3 de la mañana, elimine cualquier archivo / tmp anterior a 60 días, pero no borre el directorio al reiniciar')

Los archivos de orden temporal que no desea borrar en el arranque van en / var / tmp

Para eso es :-)

nemo
fuente