====== Gérer les fichiers fantômes ======
--- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2020/09/09 16:30//
===== Définition =====
Il peux arriver lors de la suppression d'un fichier, manuellement ou via un process comme ''logrotate'', que l'espace occupé ne soit pas libéré. Pire, il peut arriver, pour les logs notamment, que le flux de données, écrit auparavant dans le fichier supprimé, ne soit pas écrit dans le fichier de remplacement. On parle dans ce cas de fichier fantôme. Le fichier est supprimé de la table des matière mais toujours présent en mémoire et verrouillé par un processus.
===== Commandes utiles =====
* Afficher les fichiers fantômes (qui apparaitront alors avec la mention ''(deleted)''). Cette commande donne aussi le PID (//**P**rocessus **ID**entifier//) du processus qui verrouille le fichier et le FD (//**F**ile **D**escriptor//) du fichier :
lsof +L1
* Récupérer le contenu d'un fichier fantôme (en ayant récupérer au préalable son PID et son FD) :
cp /proc//fd/ /tmp/recovered_file
* Arrêter le processus qui verrouille le fichier et ainsi supprimer définitivement le fichier et libérer l'espace disque :
kill -9
* Copier automatiquement les modifications apportées au fichier fantôme dans un autre fichier (pratique pour les logs si le processus ne peut pas être arrêter) :
tail -c +0 -f /proc//fd/ > /new/path/to/file &
* Libérer l'espace sans arrêter le processus :
echo > /proc//fd/
~~DISCUSSION~~