web-dev-qa-db-fra.com

Script Unix Shell pour tronquer un fichier volumineux

J'essaie d'écrire un script Unix qui tronque/vide un fichier continuellement écrit/ouvert par une application lorsqu'il atteint 3 Go d'espace. Je sais que la commande ci-dessous le ferait:

cp /dev/null [filename]

Mais je vais exécuter cela automatiquement dans un environnement de production en tant que tâche cron. Je poste ici pour voir si vous rencontrez des problèmes tout en faisant quelque chose de similaire.

80
peedee

Juste pour ajouter une autre réponse,

: > filename

: est un non-op de bash, donc cela ouvre simplement le fichier en écriture (ce qui bien sûr le tronque) et le ferme immédiatement.

EDIT: comme le corrige le commentaire, 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 à elle seule effacera le fichier.

108
chepner

J'ai utilisé la commande suivante sur debian

truncate -s 0 filename
62
Ricardo Marimon

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

echo -n "" >filename
cat /dev/null >filename
11
Don Branson

trunc filename

fonctionne sur la version AIX d'UNIX

2
San