J'essaye d'écrire un script Unix qui tronquera / videra un fichier qui est continuellement écrit / ouvert par une application quand il atteint, disons 3 Go d'espace. Je sais que la commande ci-dessous le ferait:
cp /dev/null [filename]
Mais je vais l'exécuter automatiquement dans un environnement de production en tant que travail cron - il suffit de poster ici pour voir si vous avez rencontré des problèmes en faisant quelque chose de similaire.
logrotate
, cela pourrait vous fournir une certaine valeur (mais être ennuyeux avec sa configuration (juste deviner)!).Réponses:
Juste pour ajouter une autre réponse,
:
est un no-op dans bash (compatible POSIX), donc cela ouvre essentiellement le fichier pour l'écriture (qui bien sûr tronque le fichier) puis le ferme immédiatement.EDIT: comme l'a commenté le shellter, vous n'avez pas réellement 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.
la source
> filename
(comme je suis sûr que vous le savez). Bonne chance à tous.J'ai utilisé la commande suivante sur debian
la source
sudo sh -c ': > filename'
tronquera égalementfilename
sudo
:sudo cp /dev/null filename
. Est égalementcp
portable tandis quetruncate
Linux moderne est uniquement.Cela me semble raisonnable. Unix, bien sûr, vous permettrait de le faire de 50 façons différentes. Par exemple,
echo -n "" >filename cat /dev/null >filename
la source
trunc filename
fonctionne sur la version AIX d'UNIX
la source