← Back to team overview

sslug-teknik team mailing list archive

Re: Tjek om en fil er åben

 

Peter Makholm wrote:

Har du andre ting der piller i det katalog? Ellers ville det måske
være en mulighed at se på inotify og så pakke filerne lige så snart at
serveren lukker dem.

Det kunne være noget der bruger inotify-tolls ala:

#!/bin/sh

LOG_PATH=/data/ChatServer/XML_logs

inotifywait -e close_write --format %f $LOG_PATH | while read file ; do
   case $file in
       *.xml ) gzip $LOG_PATH/$file ;;
esac done
Jeg kendte ikke til inotify, men det lyder godt nok lige som det, jeg har brug for.

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]#

Hvor mange filer har du liggende i det katalog og hvilket filsystem
bruger du? Tager det ikke cirka lige så lang tid bare at køre en 'ls'
på samme fil?


Der er 97 lige nu og det er ext3.

[root@xbox XML_logs]# time ls ChatServer_UK_2_ChatLog_2006-11-29_04:42:09.xml;time lsof ChatServer_UK_2_ChatLog_2006-11-29_04:42:09.xml
ChatServer_UK_2_ChatLog_2006-11-29_04:42:09.xml

real    0m0.002s
user    0m0.000s
sys     0m0.000s
COMMAND   PID USER   FD   TYPE DEVICE    SIZE    NODE NAME
java 15502 root 59w REG 253,0 6461310 8544159 ChatServer_UK_2_ChatLog_2006-11-29_04:42:09.xml

real    0m8.868s
user    0m0.300s
sys     0m8.985s
[root@xbox XML_logs]#

ls er noget hurtigere

Jeg leger lige lidt med inotify.


References