URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4110
[ Назад ]

Исходное сообщение
"freeSpace from perl-script"

Отправлено andr , 30-Мрт-05 17:17 
Re all!
Есть директория, в неё предстоит писать много-много файлов из perl-скрипта. Перед тем как всё это туда писать, необходимо определить: а хватит ли места на файловой системе ? Вопрос: как это сделать ? Желатьно без CPAN модулей.

P.S. Скрипт должен работать и под unix и под win.
Подскажите, plz, кто уже делал.


Содержание

Сообщения в этом обсуждении
"freeSpace from perl-script"
Отправлено PoizOn , 31-Мрт-05 10:05 
>Re all!
>Есть директория, в неё предстоит писать много-много файлов из perl-скрипта. Перед тем
>как всё это туда писать, необходимо определить: а хватит ли места
>на файловой системе ? Вопрос: как это сделать ? Желатьно без
>CPAN модулей.
>
>P.S. Скрипт должен работать и под unix и под win.
>Подскажите, plz, кто уже делал.

Для никсов можно было бы парсить вывод df
df
Filesystem  1K-blocks    Used    Avail Capacity  Mounted on
/dev/ad0s1a    128990   91458    27214    77%    /
/dev/ad0s1f    257998   14902   222458     6%    /tmp
/dev/ad0s1g  18579892 6398718 10694784    37%    /usr
/dev/ad0s1e    257998   59620   177740    25%    /var
procfs              4       4        0   100%    /proc

Для винды - не знаю... Разве что парсить вывод команды DIR типа bytes free или что-нибудь в этом...



"freeSpace from perl-script"
Отправлено andr , 31-Мрт-05 10:36 
>>Re all!
>>Есть директория, в неё предстоит писать много-много файлов из perl-скрипта. Перед тем
>>как всё это туда писать, необходимо определить: а хватит ли места
>>на файловой системе ? Вопрос: как это сделать ? Желатьно без
>>CPAN модулей.
>>
>>P.S. Скрипт должен работать и под unix и под win.
>>Подскажите, plz, кто уже делал.
>
>Для никсов можно было бы парсить вывод df
>df
>Filesystem  1K-blocks    Used    Avail Capacity
> Mounted on
>/dev/ad0s1a    128990   91458    27214
>   77%    /
>/dev/ad0s1f    257998   14902   222458  
>   6%    /tmp
>/dev/ad0s1g  18579892 6398718 10694784    37%    
>/usr
>/dev/ad0s1e    257998   59620   177740  
>  25%    /var
>procfs            
>  4       4  
>      0   100%  
>  /proc
>
>Для винды - не знаю... Разве что парсить вывод команды DIR типа
>bytes free или что-нибудь в этом...

В том-то всё и дело, что скрипт должен быть универсальным и работать в любой оси. В php есть функция diskfreespace() - она это может.
Может кто-нибудь знает её аналог for perl ?
Я нашёл только Filesys::DiskFree на CPAN, но этот модуль, как я понял из исходников, под виндами тоже пахать не будет. Там, как раз способ предложенный вами - с `df`.


"freeSpace from perl-script"
Отправлено Simps , 31-Мрт-05 13:03 
>>>Re all!
>>>Есть директория, в неё предстоит писать много-много файлов из perl-скрипта. Перед тем
>>>как всё это туда писать, необходимо определить: а хватит ли места
>>>на файловой системе ? Вопрос: как это сделать ? Желатьно без
>>>CPAN модулей.
>>>
>>>P.S. Скрипт должен работать и под unix и под win.
>>>Подскажите, plz, кто уже делал.
>>
>>Для никсов можно было бы парсить вывод df
>>df
>>Filesystem  1K-blocks    Used    Avail Capacity
>> Mounted on
>>/dev/ad0s1a    128990   91458    27214
>>   77%    /
>>/dev/ad0s1f    257998   14902   222458  
>>   6%    /tmp
>>/dev/ad0s1g  18579892 6398718 10694784    37%    
>>/usr
>>/dev/ad0s1e    257998   59620   177740  
>>  25%    /var
>>procfs            
>>  4       4  
>>      0   100%  
>>  /proc
>>
>>Для винды - не знаю... Разве что парсить вывод команды DIR типа
>>bytes free или что-нибудь в этом...
>
>В том-то всё и дело, что скрипт должен быть универсальным и работать
>в любой оси. В php есть функция diskfreespace() - она это
>может.
>Может кто-нибудь знает её аналог for perl ?
>Я нашёл только Filesys::DiskFree на CPAN, но этот модуль, как я понял
>из исходников, под виндами тоже пахать не будет. Там, как раз
>способ предложенный вами - с `df`.

Можно сначала узнавать имя OS
print $^O
Че нить типа
#!/usr/bin/perl -w
if ($^O eq "freebsd") {
# Do df stuff
print "FREEBSD\n";
}
elsif ($^O eq "MSWin32") {
# Do dir stuff
print "WINDOWS\n";
}
else {
print "OS not supported\n";
}


Не претендую на оригинальность =)


"freeSpace from perl-script"
Отправлено PoizOn , 01-Апр-05 11:37 

>>>Для винды - не знаю... Разве что парсить вывод команды DIR типа
>>>bytes free или что-нибудь в этом...
>>
>>В том-то всё и дело, что скрипт должен быть универсальным и работать
>>в любой оси. В php есть функция diskfreespace() - она это
>>может.
>
>Можно сначала узнавать имя OS
>print $^O
>Че нить типа
>#!/usr/bin/perl -w
>if ($^O eq "freebsd") {
># Do df stuff
>print "FREEBSD\n";
>}
>elsif ($^O eq "MSWin32") {
># Do dir stuff
>print "WINDOWS\n";
>}
>else {
>print "OS not supported\n";
>}
>
>
>Не претендую на оригинальность =)
Я это как раз и имел в виду - для каждой оси написать отдельную процедуру определения freespace. Для никсов парсить df, для винды парсить DIR


"freeSpace from perl-script"
Отправлено andr , 04-Апр-05 08:53 
Вобщем не стал я ничего изобретать и сделал так как все тут и советуют - смотрю ОС, если БСД - парсю df, если win - парсю dir, если др. ОС - return 0;
но для меня всё равно загадка: как же это всё реализовано в php-шной diskfreespace() ?