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.
cpe 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.logeseguire 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.loge solo savelogse supera una determinata dimensione.
/usr/bin/savelogscript della shell su sources.debian.net/src/debianutils/4.7
savelogsu 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 savelogcausa 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 dunon è presente un -bflag:
du /var/log/file | tr -s '\t' ' ' | cut -d' ' -f1