On Mon, 2009-04-27 at 19:23 +0200, Andrea Brancatelli wrote:
> Il giorno lun, 27/04/2009 alle 08.14 +1000, Josh Marshall ha scritto:
> > What I noticed is that running du -hs on the drive shows that there is
> > plenty of space free, so I'm thinking that somewhere a temporary file is
> > being deleted while still open and being written to. So the file listing
> > entry is deleted but the space is not made available until the file
> > handle is closed.
>
> du shows no space being used, while df shows that there's 0% of space
> free...
This is "normal" in Unix-land. If one deletes a file that an application
has open, the application can continue to use it indefinitely. The space
is freed up as soon as the last application closes the file.
So a quite normal way for an application that needs temporary space to
work is to create a file, open it, then delete the file. It then has a
relatively secure temporary file that it doesn't have to worry about
other applications reading or writing.
In Linux one can see this with the "lsof" command:
sh...@shane-asus-laptop:~$ cat test.c
#include <stdio.h>
#include <unistd.h>
int main()
{
FILE *fp = fopen("/tmp/xxx", "w");
unlink("/tmp/xxx");
sleep(300);
return 0;
}
sh...@shane-asus-laptop:~$ cc test.c
sh...@shane-asus-laptop:~$ ./a.out &
[1] 6381
sh...@shane-asus-laptop:~$ lsof -p 6381
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
a.out 6381 shane cwd DIR 0,29 12288 107171 /home/shane
a.out 6381 shane rtd DIR 8,6 4096 2 /
a.out 6381 shane txt REG 0,29 11034 532605 /home/shane/a.out
a.out 6381 shane mem REG 8,6 1502512 2562 /lib/libc-2.9.so
a.out 6381 shane mem REG 8,6 135680 2542 /lib/ld-2.9.so
a.out 6381 shane 0u CHR 136,1 3 /dev/pts/1
a.out 6381 shane 1u CHR 136,1 3 /dev/pts/1
a.out 6381 shane 2u CHR 136,1 3 /dev/pts/1
a.out 6381 shane 3w REG 8,6 0 532522 /tmp/xxx (deleted)
sh...@shane-asus-laptop:~$ kill 6381
sh...@shane-asus-laptop:~$
[1]+ Terminated ./a.out
If you do NOT specify a process ID with "lsof" then it shows the files
opened by all processes. You may want to do this as root, and then look
for files in /tmp that are deleted, and find the offending process
(which I guess we already know is dbmail-imapd).
--
Shane
_______________________________________________
DBmail mailing list
[email protected]
http://mailman.fastxs.nl/cgi-bin/mailman/listinfo/dbmail