Existe-t-il une command où l'on peut faire quelque chose comme:
someprogram | tee --limit=1MB afile
Où "afile" contiendrait le plus récent 1 Mo de sortie de "someprogram"?
Exactement cela, probablement pas. Une fois qu'il a réchauffé et rempli le file, il réécrit 1 Mo- N octets d'anciennes données, pour les mélanger le long du file, pour chaque N octets de nouveldatatables ajoutées à la fin du tampon. Ce n'est pas exactement un mécanisme idéal, et de plus lire le file en cours d'écriture serait sujet à des problèmes de "déchirure".
Près de cela, de nombreuses commands existent. Augmentez le nombre de files à 2, un file en cours et son prédécesseur immédiat, de sorte qu'à tout moment, vous avez entre 1MiB et 2MiB de la sortie la plus récente, la sortie n'étant pas copiée une fois qu'il a été écrit; et vous avez quelque chose que tout un tas de programmes d'logging daemontools-family font par design. Ils sont, par essence, exactement ce genre de " tee
plus".
multilog
de Dan Bernstein de daemontools et le multilog
de Bruce Guenter de daemontools-encore:
someprogram | multilog n2 s1048576 ./logdir/
s6-log
de Laurent Bercot de s6:
someprogram | s6-log n2 s1048576 ./logdir/
svlogd
de Gerrit Pape de runit avec un file de configuration qui dit n2 s1048576
:
someprogram | svlogd ./logdir/
tinylog
de Wayne Marshall de perp:
someprogram | tinylog -k 1 -s 1048576 ./logdir/
cyclog
de nosh:
someprogram | cyclog --max-file-size 1048576 --max-total-size 1048576 ./logdir/
logrotate
ou newsyslog
dans ce siècle. . Réponses fréquentes. Dans le package apache2-utils
est un utilitaire présent appelé rotatelogs
, il répond entièrement à vos besoins.
Synopsis:
rotatelogs [-l] [-L nom_lien ] [-p programme ] [-f] [-t] [-v] [-e] [-c] [-n nombre-de-files ] taille du file (B | K | M | G) [ offset ]
Manuel complet que vous pouvez lire sur ce lien .