sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #90060
Tjek om en fil er åben
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.
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 ?
Follow ups