Cette question concerne Ubuntu 14.10 sur mon ordinateur portable de développeur.
J'ai un dossier /tmp
qui est utilisé par une application pour y mettre des éléments temporaires. Cette application crée généralement un dossier temporaire dans mon homedir et le supprime ensuite. Pour une raison quelconque, cela ne fonctionne pas lorsque le homedir est crypté. Au lieu de cela, j'ai créé un lien symbolique vers l' /tmp/foo
intérieur de mon homedir. Mon application peut y écrire et en faire un sous-dossier temporaire.
Est maintenant /tmp/foo
supprimé à chaque redémarrage de ma machine. Jusqu'à présent, je viens de recréer le dossier manuellement après le redémarrage. Maintenant, j'ai appris dans Comment le répertoire / tmp est-il nettoyé? qu'il y a un travail à faire.
J'ai regardé /etc/init/mounted-tmp.conf
mais mon bashfu et surtout mon findfu ne suffisent pas à faire ce que je veux. Voici un extrait de ce fichier:
EXCEPT='! -name . ! ( -path ./lost+found -uid 0 ) ! ( -path ./quota.user -uid 0 ) ! ( -path ./aquota.user -uid 0 ) ! ( -path ./quota.group -uid 0 ) ! ( -path ./aquota.group -uid 0 ) ! ( -path ./.journal -uid 0 ) ! ( -path ./.clean -uid 0 ) ! ( -path "./...security*" -uid 0 )' # Remove all old files, then all empty directories find . -depth -xdev $TEXPR $EXCEPT ! -type d -delete find . -depth -xdev $DEXPR $EXCEPT -type d -empty -delete
Ce que je veux faire, c'est ajouter une condition qui fait qu'il supprime tout à l'intérieur /tmp/foo
, mais pas /tmp/foo
lui-même. Comment je fais ça?
/tmp/foo
un répertoire ou un fichier?mkdir /tmp/foo
juste avantend script
?Réponses:
/etc/init/mounted-tmp.conf
fait partie dumountall
package, donc toutes les mises à jour sur ce package et les modifications suggérées seront annulées.Au lieu de cela, selon la norme Filesystem Hierachy (FHS) ;
Concernant / tmp :
Concernant / var / tmp :
Vous devez donc modifier votre lien symbolique pour utiliser à la
/var/tmp
place de/tmp
.la source
/var/tmp
n'est pas une bonne idée?If a person is familiar with ... a certain, single instrument, they may have a confirmation bias to believe that it is the answer to/involved in everything.
Je dis que l'OP utilise / tmp pour quelque chose pour lequel il n'est pas destiné - Utiliser / tmp comme marteau pour son problème de garder tmp-mais-pas-tout-à-fait -tmp truc. / var / tmp est censé être conservé entre les redémarrages, c'est donc la bonne réponse.Pas strictement une réponse à votre question, mais vous pourriez trouver
/var/tmp
un emplacement plus approprié, car il ne sera pas nettoyé lors d'un redémarrage. Il est conçu pour les fichiers temporaires qui ne doivent pas être supprimés automatiquement après un court instant.Ce que je fais souvent, cependant, c'est de créer moi-même un dossier sous / opt pour stocker des choses aléatoires que je ne veux pas à la maison. C'est un endroit approprié pour mettre des choses hors du contrôle du système d'exploitation principal.
la source
Ainsi:
Exemple:
Je suis d'accord avec l'utilisateur aap: vous devez soit vous en occuper dans le logiciel utilisé en recréant le répertoire s'il s'agit de fichiers tmp, soit utiliser un autre répertoire s'il ne s'agit pas de fichiers tmp qui ne sont pas purgés.
la source
find
commande fonctionne comme prévu lorsqu'elle est exécutée manuellement, le répertoire est toujours supprimé après la modification/etc/init/mounted-tmp.conf
. Il semble qu'il se passe autre chose ici.-path ./foo
et même-name '*foo*'
et aucune d'entre elles n'a fonctionné (sur Ubuntu Server 14.04). Je pense que ce n'est tout simplement pas le bon dossier et nous cherchons au mauvais endroit. Ce que vous proposez devrait fonctionner, cela ne semble tout simplement pas.C'est une mauvaise idée d'avoir des fichiers avec une valeur future, d'écrire dans le répertoire / tmp (/ var / tmp, comme suggéré par d'autres, est un meilleur endroit). Cela dit, vous voudrez peut-être donner une chance à chattr. Cela doit être exécuté après la fermeture de l'application, mais avant un arrêt. N'oubliez pas que cette opération ne permet plus rien d' écrire dans ce répertoire.
toucher /tmp/foo/ddmmyy/.001_immute_me chattr + i /tmp/foo/ddmmyy/.001_immute_me
la source
Lance ça:
puis ajoutez ceci à
/ etc / inittabvoir ici: où est le fichier inittab? :Cela créera / etc / foo au démarrage s'il n'existe pas, puis le videra.
Cela fera de même lors de la connexion bash:
la source
/etc/inittab
. Ceci est clairement et sans équivoque indiqué sur sa page de manuel.