Aujourd'hui le /tmp
répertoire rempli sur une machine au travail. Le problème était que c'était sur la partition racine qui n'était pas très grande. Afin de résoudre ce problème, un collègue a créé un /new/tmp
Annuaire ailleurs, copié tout le contenu du nouveau répertoire, supprimé l'original /tmp
et fait un lien symbolique /tmp -> /new/tmp
.
Quand il a copié les fichiers (vraiment, c'était quelqu'un d'autre, pas moi!) Il n'a pas utilisé -a
donc le propriétaire de chaque fichier sous /new/tmp
était root
. En outre, il n'a pas fixé les autorisations de la /new/tmp
Répertoire de sorte qu'il s'agissait de la valeur par défaut 0755. Cela n'a provoqué aucune fin de problèmes et même le mode de peaufinage et les bits de propriété n'ont pas réussi à restaurer la machine à un état de fonctionnement de manière acceptable. J'ai fini par avoir à tout Nuke tout dans /tmp
et redémarrez.
Les /tmp
Directory contenait divers sockets et tuyaux et qu'on puisque un groupe de personnes exécutent Gnome via VNC et j'utilise screen
qui a ses propres tuyaux.
Y a-t-il un coffre-fort moyen de déplacer un /tmp
répertoire à un volume différent sur un système d'exécution? Je ne suis pas sûr de ce que j'aurais réellement fait pour tout travailler. Je suis particulièrement curieux de ce qui arrive aux tuyaux et aux sockets.
Sur les machines "client", le moyen sûr de déplacer /tmp
est de redémarrer. Ici, par client, je veux dire tout ce qui dirige des programmes qui mettent des sockets en /tmp
, en particulier X serveurs et écran.
Le nouveau /tmp
Il faut certainement avoir les bonnes autorisations (1777), sinon vous ne pouvez pas espérer avoir un système de travail.
Pour /tmp
, vous ne pouvez pas copier aucun fichier. C'est parce que la plupart du temps, des programmes qui mettent des choses dans /tmp
Ouvrez les fichiers. Si vous copiez le fichier, cela copie le contenu, mais les programmes sont toujours ouverts les anciens fichiers. Vous pourriez être capable de les atteindre avec un débogueur (ptrace
), mais cela sera beaucoup plus compliqué que le redémarrage, et avec de nombreux programmes que vous feriez, c'est de les planter de toute façon.
Si votre /tmp
est plein et vous souhaitez basculer vers une nouvelle Live, vous devez redémarrer tous les programmes qui ont des fichiers ouverts là-bas. Puisque cela signifie redémarrer x et sérigraphies, ce n'est pas beaucoup mieux que le redémarrage.
Vous devriez pouvoir basculer pour de nouveaux programmes, mais conserver des fichiers ouverts existants en place à l'aide d'un nion Mount . (Le principe est sonore, mais je n'ai jamais essayé, il peut donc y avoir des problèmes par moi-inattendus.) Voici un moyen de le faire sur Linux.
/tmp
Sauf pour quelques grands sélectionnés manuellement./tmp.new
(mode 1777)./tmp
sur un chemin différent: mount --bind / /.root.only
. Ceci est nécessaire car la prochaine étape sera Shadow /tmp
. Il peut y avoir différentes implémentations d'union sur le point d'exécution qui ne nécessitent pas cette étape./.root.only/tmp
et /tmp.new
, monté sur /tmp
. De cette façon de nouveaux fichiers créés dans /tmp
sera écrit en /tmp.new
, mais les fichiers de /.root.only/tmp
sont également visibles sous /tmp
. Une possibilité est Unitéfs-fusible : unionfs-Fuse /tmp.new:/.root.only/tmp /tmp
.Si vous ne voulez pas aller à la racine du mont Union (par exemple, car il n'est pas disponible sur votre plate-forme ou parce que c'est trop de problème), au moins ne supprimez pas l'ancien répertoire. Move Cela, de sorte que les programmes en cours d'exécution continueront à utiliser l'ancien répertoire et les nouveaux programmes utiliseront le nouveau. (Bien sûr, de nouveaux programmes ne seront pas en mesure de communiquer avec de vieux programmes à travers des prises ou des tuyaux dans /tmp
Sauf si vous définissez TMPDIR
ou dites-leur autrement où regarder.)
mv /tmp /tmp.old && mkdir /tmp