Risposte:
#!/bin/bash
touch /script_logs/test.log
MaxFileSize=2048
while true
do
sh test.sh >> /script_logs/test.log
#Get size in bytes**
file_size=`du -b /script_logs/test.log | tr -s '\t' ' ' | cut -d' ' -f1`
if [ $file_size -gt $MaxFileSize ];then
timestamp=`date +%s`
mv /script_logs/test.log /script_logs/test.log.$timestamp
touch /script_logs/test.log
fi
done
Ho rimosso il "&" in quanto potrebbe causare un problema.
cp
e mv
, posso rimuovere il file di registro, quindi sarà il nuovo file di registro con lo stesso nome? (Il mio requisito è, se il file di registro viene raggiunto un certo limite, voglio rimuovere quel file di registro e quindi creare un nuovo file )
>>
per aggiungere al file di registro, >
sovrascriverlo più e più volte.
>
, visualizzo tail: test.log: file truncated Hello World!
... Se utilizzo >>
, visualizzo il messaggio di registro corretto, ma la dimensione del file aumenta. Nessuna condizione che controlla la condizione ...
che ne dici di usare savelog
?
È disponibile in debian e RH e praticamente ogni altra distribuzione Linux che conosco. È uno script di shell / bin / sh, quindi dovrebbe essere eseguito anche su qualsiasi altro unix.
ad esempio prima di scrivere qualcosa da test.log
eseguire savelog -n -c 7 test.log
. Ciò manterrà le 7 versioni non vuote più recenti di test.log. Per impostazione predefinita, comprime i registri ruotati (ma che possono essere disabilitati con -l
).
Se è necessario, è possibile controllare la dimensione test.log
e solo savelog
se supera una determinata dimensione.
/usr/bin/savelog
script della shell su sources.debian.net/src/debianutils/4.7
savelog
su nessuna delle mie scatole RHEL / CentOS 5/6, quindi l'ho appena scaricato ad hoc e sembra funzionare perfettamente per le mie esigenze.
savelog
è che rinomina il file ma richiede molto tempo per decomprimere quelli vecchi prima di terminare. Nel frattempo il registro .0 riceve già le voci dei prossimi giorni. Idealmente, il tempo tra la rotazione del registro e la segnalazione al processo di riapertura del registro dovrebbe essere minimo. A savelog
causa di ciò disabilito la funzione di compressione.
Ho scritto un logrotee questo fine settimana. Probabilmente non lo farei se avessi letto l' ottima risposta dimultilog
@ JdeBP .
Mi sono concentrato sul fatto che fosse leggero e in grado di bzip2 i suoi blocchi di output come:
verbosecommand | logrotee \
--compress "bzip2 {}" --compress-suffix .bz2 \
/var/log/verbosecommand.log
Tuttavia, c'è ancora molto da fare e testare.
Dato che non posso ancora aggiungere commenti alla risposta accettata , un suggerimento BusyBox , in cui du
non è presente un -b
flag:
du /var/log/file | tr -s '\t' ' ' | cut -d' ' -f1