J'utilise souvent le /tmp
répertoire sur ma machine Linux pour stocker des fichiers temporaires (par exemple des PDF à partir d'un site qui veut que je le télécharge d'abord, etc.) et je crée souvent un répertoire avec mon nom d'utilisateur. Mais à chaque démarrage, il (y compris tous les fichiers) est supprimé. Maintenant, je sais que je peux le mettre /var/tmp
, mais je veux que tout son contenu soit supprimé, mais que le répertoire lui-même soit conservé. Donc:
tmp
|- me # this should stay
| |- foo1 # this should be deleted...
| |- bar1 # ...and this as well
|- other stuff...
Est-ce qu'il y a un moyen de faire ça? Peut-être avec des autorisations ou avec une configuration spéciale?
/tmp
est probablement untmpfs
système de fichiers. Ces fichiers ne sont pas vraiment supprimés; ils sont simplement stockés dans la RAM et perdus lors d'un redémarrage. C'est pourquoi vous obtenez des réponses qui se résument à «le recréer au démarrage ou à la connexion»Réponses:
Une solution serait d'utiliser une
@reboot
tâche cron:L'ajouter à votre crontab avec le
crontab -e
ferait exécuter à chaque démarrage de la machine.Ou utiliser
dans le fichier de démarrage de votre shell.
Dans les deux cas, vous pouvez également utiliser
dans le fichier de démarrage de votre shell si vous souhaitez utiliser ce répertoire comme répertoire temporaire par défaut.
la source
@reboot mkdir -p "/tmp/$USER"
à la fin de la crontab ne fait rien, tandis que l'exécutionmkdir -p "/tmp/$USER"
crée réellement le répertoire./tmp
@reboot
travail cron ne crée pas de répertoire? Recevez-vous des e-mails envoyés à votre compte avec des messages d'erreur du démon cron?mail
? Ou n'est-ce pas obligatoire?J'utilise
pam-tmpdir
pour cela: il crée un répertoire temporaire privé à la connexion. Pour le configurer, ajoutezaux services PAM appropriés; sur un système basé sur Debian, l'installation du
libpam-tmpdir
paquet offrira de le faire pour vous, ou vous pouvez ajouter la ligne à/etc/pam.d/common-session
. La prochaine fois que vous vous connecterez, vous trouverez un répertoire sous/tmp/user
avec votre identifiant utilisateur etTMP
etTMPDIR
définissez de manière appropriée.la source
Si vous n'utilisez aucun système avec systemd et qu'il utilise systemd-tmpfiles pour gérer le nettoyage, vous devez configurer le répertoire à l'aide de ce système.
Voici une documentation complète . Vous pouvez probablement réaliser ce que vous voulez en créant
/etc/tmpfiles.d/something.conf
avec des contenus comme:la source
Comme indiqué dans les commentaires,
/tmp
concerne les fichiers transitoires et ne seront pas manqués s'ils sont supprimés. Si vous êtes au milieu de quelque chose et que la machine redémarre, tout ce que vous y avez écrit disparaîtra et vous devrez recommencer, ce qui signifie que ces fichiers n'étaient peut-être pas si temporaires après tout.J'ai conservé un répertoire temporaire dans mon répertoire personnel pendant de nombreuses années, à partir d'un gigaoctet, c'était beaucoup d'espace et j'ai constaté qu'il fallait un nettoyage périodique pour se débarrasser des fichiers qui étaient devenus vieux et cruels. La plupart du temps, ce qui me restait après ce processus était âgé de moins de quelques semaines, donc je le nettoie maintenant avec un travail cron qui s'exécute une fois par jour:
Tout ce que je télécharge ou crée comme semi-temporaire y va et le système nettoie tout ce que je laisse derrière moi. Tout ce qui a besoin d'une maison permanente en obtient une bien avant que le travail cron ne s'en débarrasse.
la source
mkdir a a/b; touch a/b/c
. Attendez maintenant l'expiration de vos 30 jours. Au fur et à mesure que vous le supprimez,c
il sera mis à jourb
, ce qui signifie qu'il devra attendre 30 jours supplémentaires. De même aveca
lorsque vous supprimezb
. Deuxièmement, si vous créez des fichiersb
mais ne les touchez pasa
pendant 30 jours, lea
répertoire sera touchérm -rf
et effacera vos fichiers récents sousb
.find "$HOME"/tmp -mtime +30 -type f -delete; find "$HOME/tmp" -depth -mmin +60 -type d -exec rmdir {} + 2>/dev/null
travaille pour moi