GNU/Linux >> Tutoriels Linux >  >> Linux

Sommes-nous censés supprimer manuellement le contenu de /tmp ?

Pour répondre aux questions :

  • Est /tmp censé être vidé automatiquement :Oui
  • Sommes-nous censés supprimer des fichiers dans /tmp régulièrement et manuellement :Non , votre système s'en chargera.

Si vous pouvez vous demander :

  • Puis-je supprimer des fichiers de /tmp pour quelque raison que ce soit (besoin d'espace, envie de supprimer des traces, etc.) :Cela dépend , lisez la suite .

La norme FHS (Filesystem Hierarchy Standard) indique :

Le répertoire /tmp doit être disponible pour les programmes nécessitant des fichiers temporaires.

Les programmes ne doivent pas supposer que les fichiers ou répertoires dans /tmp sont conservés entre les appels du programme.

/var/tmp/ a un objectif similaire, mais ne doit pas être supprimé lors du redémarrage.

Ce n'est pas garanti ce /tmp/ ou /var/tmp/ sont régulièrement nettoyés. Cela peut dépendre de votre distribution et de vos paramètres, bien que la plupart des systèmes effectuent un nettoyage de temps en temps. Voir commentaire de mike .

Si vous devez supprimer un fichier dans /tmp , vérifiez d'abord si le fichier est en cours d'utilisation. Vous pouvez le faire facilement avec :

lsof /tmp/file_to_delete

Si vous avez les droits pour le faire, cela montrera le processus qui détient le handle de ce fichier, comme le nom du processus, le PID et le type du fichier. Pour afficher vraiment tous les processus, ajoutez sudo ou exécuter en tant qu'utilisateur root .

lsof +D /tmp

vous montrera tous les fichiers en /tmp et répertoires ci-dessous (+D ) qui sont actuellement ouverts.Bien sûr, vous ne devez pas supprimer ces fichiers.

En fait, lorsque vous supprimez un fichier qui est encore ouvert - si vous avez les droits pour le faire - il devient inaccessible depuis l'espace de noms du système de fichiers, mais il existe toujours pour les processus qui ont un descripteur de fichier ouvert pour lui. Après avoir fermé ce descripteur, le fichier n'est plus accessible pour ce processus, et si aucun processus n'a plus ouvert le fichier, il est finalement supprimé. Un processus ne doit pas supposer que le fichier survit entre les open suivants appels, mais les programmeurs sont bâclés, et on ne sait jamais. Pour cette raison, ce n'est pas si intelligent pour supprimer les fichiers qui sont encore utilisés par certains programmes.


Je pense que cela dépend de la variante du système d'exploitation. J'imagine que /tmp est généralement effacé au redémarrage, et en effet, il ne serait pas sûr pour le système de se nettoyer en cours de session car il ne saura pas quels fichiers sont actifs.

Si vous êtes courageux, vous voudrez peut-être lancer une commande dans crontab qui supprime les fichiers plus anciens qu'un certain âge, mais cela peut causer des problèmes s'il supprime les fichiers encore utilisés. Vous pouvez essayer une commande (je ne l'ai pas essayée) comme

find /tmp -type f -ctime +10 -exec rm {} +

Ce qui supprimera théoriquement tous les fichiers sous /tmp de plus de 10 jours.


Les répertoires /tmp et /var/tmp sont nettoyés selon un calendrier normal. Cela peut dépendre de votre distribution. Sur mon système CentOS (un clone de RedHat), une tâche cron est programmée pour exécuter tmpwatch, un nettoyeur de répertoire tmp, selon un horaire quotidien. Les fichiers dans /var/tmp sont autorisés à rester un peu plus longtemps que les fichiers dans /tmp/. J'ai également vu des scripts qui suppriment /tmp (mais explicitement pas /var/tmp) lors d'un redémarrage, sachant qu'il ne peut y avoir rien qui maintienne ce fichier ouvert puisque tous les processus sont nouveaux.

Donc, oui, /tmp a une maintenance à partir des scripts de base. Il peut toujours se remplir en dehors de ces périodes de maintenance. Si vous avez choisi de nettoyer les choses manuellement, la meilleure pratique de l'administrateur système est d'être prudent. Sysadmin lore parle de liens symboliques dans /tmp pointant vers les fichiers système nécessaires qui ont été supprimés lorsque les administrateurs système n00b ont exécuté un simple find script.


Linux
  1. Comment désactiver la suppression automatique des fichiers dans les répertoires /tmp et /var/tmp dans CentOS / RHEL 5,6

  2. Que sont les fichiers /dev/zero et /dev/null sous Linux

  3. Quand dois-je utiliser /dev/shm/ et quand dois-je utiliser /tmp/?

  4. Quelle est la signification de /usr/sbin, /usr/local/sbin et /usr/local/bin ?

  5. Pourquoi le contenu de /dev/shm/ est-il supprimé automatiquement

Comment supprimer des fichiers et des répertoires sous Linux

Comprendre les fichiers /proc/mounts, /etc/mtab et /proc/partitions

Où est le répertoire temporaire sous Linux ?

Où le contenu de /proc du noyau Linux est-il documenté ?

Les sites Web doivent-ils vivre dans /var/ ou /usr/ selon l'utilisation recommandée ?

Supprimer tout /var/log ?