Perl для системного администрирования


Прогулка по файловой системе - часть 4


# предпочитают использовать отдельный модуль

ft (из семейства модулейОет.ор1: : ) для разбора (анализа) параметров

use Cwd: n модуль для определения текущего рабочего каталога

# Эта подпрограмма принимает имя каталога и рекурсивно

# сканирует файловую систему, начиная с этого места, ищет и файлы с именем "core"

sub ScanDirectory{

my (Sworkdir) = shift;

my (Sstartdir) = &cwd; ft запомнить, откуда мы начали

cndir(Jworkdir) or die "Невозможно войти в каталог $workdir:$!\n";

opendir(DIR, ".") or die "Невозможно открыть Sworkdir:$!\n";

my fflnames = readdir(DIR) or die "Невозможно прочитать Sworkdir:$!\n";

closedir(DIR);

foreach my $name (@names){ next if (Sname eq "."); next if ($name eq "..");

if (-1 $name){ # пропускаем ссылки

next; }

if (-d $name){ f* это каталог7

&ScanDirectory($name); next; }

if (Sname eq "core") { ft имя файла "core"? и

если в командной строке указан ключ, на самом и деле удаляем этот файл

if (defined $r) {

unlink($name) or die "Невозможно удалить Sname:$!\n";

}

else {

print "найден в Sworkdir1\n": > } } chdir(Sstartdir) or

die "Невозможно перейти к каталогу $startdir:$[\n"; }

&ScanDirectcry(".");

Самое важное отличие от предыдущего примера заключается в изменении поведения программы в случае, если найден подкаталог внутри требуемого каталога. Теперь, если был найден каталог, вместо того

чтобы сообщать об этом, как было в предыдущем примере, наша программа рекурсивно вызывает себя, чтобы изучить сначала содержимое этого каталога. По окончании сканирования всего подкаталога (т. е. вызов ScanDirectory() возвращает значение) программа возвращается к просмотру остального содержимого текущего каталога.

Для того чтобы сделать нашу программу полнофункциональным ликвидатором core-файлов, мы добавили в нее функцию удаления файлов. Обратите внимание на то, как это реализовано: файлы будут удалены, только если сценарий вызывается с определенным ключом -s (от «remove» - удаление) в командной строке.




- Начало -  - Назад -  - Вперед -



Книжный магазин