|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Roman Chumakov 2:5020/400 24 Oct 2000 22:26:35 To : All Subject : Symbol::gensym() --------------------------------------------------------------------------------
При использовании сабжа для открытия файлов , после, где-то, 2-х миллионов
открытий-закрытий кончились иноды :(
Сообщение на системной консоли такое:
Oct 24 19:34:29 wwwu /kernel: pid 61218 (vi), uid 0 on /: out of inodes
FreeBSD-4.1.1 256Mb памяти
Суть действий выполнявшегося скрипта такая:
1. открыть очередной (новый) файл.
2. Поставить lock на него
3. Записать данные
4. Снять lock
5. Закрыть файл
(6. Перейти на шаг 1.)
my $froot = "./filebase/";
for($i1=0;$i1<20;$i1++){
for($i2=0;$i2<20;$i2++){
for($i3=0;$i3<20;$i3++){
for($f=0;$f<1000;$f++){
my $dir = $froot . "$i1/" . "$i2/" . "$i3/";
my $fn = $dir . "$f.htm";
my $text = "<html><body>$f</body></html>";
mkpath( $dir );
my $fh = Symbol::gensym();
open ($fh,">${fn}") || die "Cannot open file ${fn} for writing";
flock($fh, LOCK_EX);
print $fh $text;
flock($fh, LOCK_UN);
close($fh);
}
}
}
}
Видимо я неправильно использую Symbol::gensym()
А как-же его использовать, чтобы иноды не кончились?
Спасибо.
Роман.
--- ifmail v.2.15dev5
* Origin: MTU-Intel ISP (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/91049ec7c565.html, оценка из 5, голосов 10
|