91 votes

Unix shell script pour tronquer un gros fichier

J'essaie d'écrire un script Unix qui va tronquer/vider un fichier qui est continuellement écrit/ouvert par une application quand il atteint disons 3GB d'espace. Je sais que la commande ci-dessous le ferait :

cp /dev/null [filename]

Mais je vais l'exécuter dans un environnement de production automatiquement en tant que tâche cron - je poste ici pour voir si vous avez rencontré des problèmes en faisant quelque chose de similaire.

126voto

chepner Points 54078

Juste pour ajouter une autre réponse,

: > filename

: est un no-op dans bash (conforme à POSIX), donc ceci ouvre essentiellement le fichier pour l'écriture (ce qui bien sûr tronque le fichier) et ensuite le ferme immédiatement.

EDIT : comme shellter l'a commenté, vous n'avez pas besoin d'une commande pour accompagner la redirection :

$ echo foo > foo.txt
$ cat foo.txt
foo
$ > foo.txt
$ cat foo.txt
$

Une simple redirection suffit à effacer le fichier.

68voto

rmarimon Points 4021

J'ai utilisé la commande suivante sur debian

truncate -s 0 filename

12voto

Don Branson Points 7100

Cela me semble raisonnable. Unix, bien sûr, vous permet de faire cela de 50 façons différentes. Par exemple,

echo -n "" >filename
cat /dev/null >filename

3voto

San Points 434

trunc filename

fonctionne sur la version AIX d'UNIX

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X