A menudo uso el /tmpdirectorio en mi máquina Linux para almacenar archivos temporales (por ejemplo, archivos PDF de un sitio que quiere que lo descargue primero, etc.) y a menudo creo un directorio con mi nombre de usuario. Pero en cada inicio se elimina (incluidos todos los archivos). Ahora sé que puedo ponerlo /var/tmp, pero quiero que se elimine todo su contenido, pero que se mantenga el directorio en sí. Entonces:
tmp
|- me # this should stay
| |- foo1 # this should be deleted...
| |- bar1 # ...and this as well
|- other stuff...
¿Hay alguna forma de hacer esto? ¿Quizás con permisos o con una configuración especial?

/tmpEs probable que sea untmpfssistema de archivos. Esos archivos no se eliminan realmente; simplemente se almacenan en la RAM y se pierden al reiniciar. Es por eso que obtienes respuestas que se reducen a "volver a crearlo en el arranque o iniciar sesión"Respuestas:
Una solución sería usar un
@reboottrabajo cron:Agregar esto a su crontab
crontab -eharía que se ejecute siempre que la máquina se inicie.O usar
en el archivo de inicio de su shell.
En cualquier caso, es posible que también desee utilizar
en el archivo de inicio de su shell si desea usar ese directorio como el directorio temporal predeterminado.
fuente
@reboot mkdir -p "/tmp/$USER"al final del crontab no hace nada, mientras que la ejecuciónmkdir -p "/tmp/$USER"realmente crea el directorio. Por cierto, el segundo no me funciona, porque necesito acceder a mi a/tmptravés de otros programas, y@reboottrabajo cron no crea un directorio? ¿Recibes algún correo electrónico enviado a tu cuenta con algún mensaje de error del demonio cron?mail? ¿O eso no es obligatorio?Lo uso
pam-tmpdirpara esto: crea un directorio temporal privado de usuario al iniciar sesión. Para configurarlo, agreguea los servicios PAM apropiados; en un sistema basado en Debian, la instalación del
libpam-tmpdirpaquete ofrecerá hacer esto por usted, o puede agregar la línea/etc/pam.d/common-session. La próxima vez que inicie sesión, encontrará un directorio/tmp/usercon su ID de usuarioTMPyTMPDIRestablecerá adecuadamente.fuente
Si no está ejecutando un sistema con systemd y utiliza systemd-tmpfiles para administrar la limpieza, entonces debe configurar el directorio utilizando ese sistema.
Aquí hay una documentación completa . Es probable que pueda lograr lo que desea creando
/etc/tmpfiles.d/something.confcon contenidos como:fuente
Como se señaló en los comentarios,
/tmpes para archivos que son transitorios y que no se perderán si se eliminan. Si estás en medio de algo y la máquina se reinicia, todo lo que hayas escrito allí desaparecerá y tendrás que comenzar de nuevo, lo que significa que esos archivos podrían no haber sido tan temporales después de todo.Mantuve un directorio temporal en mi directorio de inicio durante muchos años, comenzando cuando un gigabyte era mucho espacio y descubrí que requería una limpieza periódica para deshacerse de los archivos que se habían vuelto viejos y defectuosos. La mayoría de las veces lo que me quedaba después de ese proceso tenía menos de un par de semanas, así que ahora lo limpio con un trabajo cron que se ejecuta una vez al día:
Todo lo que descargo o creo como semi-temporal va allí y el sistema limpia todo lo que dejo. Cualquier cosa que necesite un hogar permanente se obtiene mucho antes de que el trabajo cron se deshaga de él.
fuente
mkdir a a/b; touch a/b/c. Ahora espere hasta que hayan expirado sus 30 días. A medida que lo elimine,cse actualizaráb, lo que significará que tendrá que esperar otros 30 días. Del mismo modo conacuando eliminasb. En segundo lugar, si crea archivosbpero no los tocaadurante 30 días, eladirectorio se verá afectadorm -rfy borrará sus archivos recientesb.find "$HOME"/tmp -mtime +30 -type f -delete; find "$HOME/tmp" -depth -mmin +60 -type d -exec rmdir {} + 2>/dev/nullfunciona para mí