2009-07-10 9 views
1

J'exécute un travail par lots qui dure depuis de nombreuses heures, et le fichier journal qu'il génère augmente rapidement en taille et je suis inquiet de l'espace disque .Vider par programme un grand fichier texte en cours d'utilisation par un autre processus

Y at-il moyen par la ligne de commande, ou autrement, que je pourrais creuser ce fichier texte (remettre son contenu à rien) avec l'utilitaire ayant toujours un handle sur le fichier?

Je ne souhaite pas arrêter le travail et ne cherche qu'à libérer de l'espace disque via ce fichier.

Im sur Vista, 64 bits.

Merci pour l'aide,

Répondre

1

Eh bien, cela dépend du fonctionnement du travail. Si c'est un bon petit garçon et que ça envoie l'information du journal vers stdout ou stderr, vous pouvez rediriger la sortie vers un programme que vous écrivez, qui pourrait ensuite écrire le contenu sur le disque et gérer les tailles. Si vous avez accès au code du travail, vous pouvez essentiellement lui dire de fermer le fichier après chaque opération d'écriture (j'espère qu'il s'agit d'un ajout), et vous aurez alors un temps dans lequel vous pourriez réellement effacer le fichier.

Si vous n'en avez pas, ça va être un peu difficile. Si quelqu'un a un handle ouvert sur le fichier, il n'y a pas grand-chose que vous puissiez faire, IMO, sans demander au développeur de l'application de vous trouver une meilleure solution, ou tout simplement effacer l'espace disque.

0

dépend de la façon il est en train d'écrire le fichier journal. Vous ne pouvez pas simplement supprimer le début du fichier, car le handle de fichier a un décalage d'où écrire ensuite. Il sera toujours écrit à 100mb dans le fichier même si vous venez de supprimer les premiers 50mb.

Vous pouvez essayer de renommer le fichier en espérant qu'il en crée un nouveau. C'est généralement ainsi que fonctionnent les journaux de roulement.

+0

Merci - mais cela ne me permet pas de renommer le fichier car il dit qu'il est utilisé par un autre processus – barfoon

0

Vous pouvez utiliser une classe de journalisation progressive, qui encapsulera la classe de fichier standard, mais retournera silencieusement au début du fichier lorsque le fichier atteint la taille maximale indiquée.

C'est un emballage très simple, écrivez-le vous-même ou essayez de trouver une implémentation en ligne.

Questions connexes