← Back to team overview

sslug-teknik team mailing list archive

Re: Tjek om en fil er åben

 

ons, 29 11 2006 kl. 13:51 +0100, skrev Robert Larsen:
> Hey
> 
> Jeg har en server process, som skriver en masse log filer. Når log 
> filerne når op på 10MB bliver de lukket og en ny påbegyndt.
> Det kører fint.

Kan du ikke bare finde alle filer der er over 10MB, og pakke dem?
Evt. kun såfremt der også er en fil der er mindre end 10MB? (For at være
sikker på den nu er færdig)

> Jeg har så et cron job, som en gang i timen komprimerer alle XML filer, 
> bortset fra den, som serveren skriver til.
> 
> cron scriptet ser således ud:
> 
> #!/bin/bash
> LOG_PATH=/data/ChatServer/XML_logs
> for file in $LOG_PATH/*.xml; do
>     lsof $file > /dev/null
>     code=$?
>     if [ "$code" == "1" ]; then
>         gzip $file
>     fi
> done
> 
> Det fungerer sådan set godt nok. lsof indikerer, at ingen har en fil 
> åben, ved at returnere med '1' som exit code.
> Men lsof er meget er meget lang tid om at gøre sig færdig:
> [root@xbox scripts]# time lsof 
> /data/ChatServer/XML_logs/Chat_DK_1_ChatLog_2006-11-28_23\:05\:55.xml
> 
> real    0m16.482s
> user    0m0.388s
> sys     0m16.533s
> [root@xbox scripts]#
> 
> Findes der en smartere måde ?
> 



References