Question

J'ai fait ce qui suit:

nohup find / &

rm nohup.out

Curieusement, la Command NoHup a continué à courir. J'ai attendu une création d'un nouveau fichier. Pour ma surprise, il n'y avait pas de tel fichier. Où est passée le stdout de la commande?

Était-ce utile?

La solution

La suppression d'un fichier dans Unix fait deux choses:

  • Il supprime l'entrée du répertoire pour cela.
  • Si aucun processus ne l'a ouvert et qu'aucune autre entrée de répertoire ne le pointe (liens durs), il libère l'espace.

Votre processus NoHupped continuera volontiers à écrire dans le fichier qui s'appelait NoHup.out, mais n'est maintenant connu comme un descripteur de fichiers dans ce processus.

Vous pouvez même avoir un autre processus à créer un noHup.out, il n'interférera pas avec le premier.

Lorsque tous les liens durs sont partis et que tous les processus l'ont fermé, l'espace disque sera récupéré.

Autres conseils

Si vous supprimez le nohup.out Fichier, la poignée sera perdue et il n'écrira que dans le descripteur de fichier, mais si vous souhaitez nettoyer le nohup.out fichier puis exécutez-le

true > nohup.out

Il supprimera le contenu du fichier mais pas le fichier.

C'est un comportement standard sur Unix.

Lorsque vous avez supprimé le fichier, le dernier lien du système de fichiers a été supprimé, mais le fichier était toujours ouvert et donc la sortie de find (Dans ce cas) a été écrit sur des blocs de disque dans le pool de tampons du noyau, et peut-être même au disque. Mais le fichier n'avait pas de nom. Lorsque find Sortie, aucun processus ou fichier (inode) a référencé le fichier, donc l'espace a été libéré. C'est une façon dont les fichiers temporaires disparaîtront lors de la création d'un programme - en ouvrant le fichier, puis en le supprimant. (Cela suppose que vous n'avez pas besoin d'un nom pour le fichier; clairement, si vous avez besoin d'un nom pour le temporaire, cette technique ne fonctionnera pas.)

cat /dev/null > nohup.out

de ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top