Образец того, как Вы сделали бы то, что Вы хотите в жемчуге.
#!/usr/bin/perl
use strict;
use warnings;
# Start the first script
my $first_script = `/script1.sh`;
my $string_to_find = 'Server Blah Blah started';
my $string_not_found = 1;
my $counter = 0; # counter ofcourse start at 0
my $timer = 300; # since your sleep is set for 1 second this will
# count to 300 before exiting
while($string_not_found){
exit if ($counter > $timer); # this will make the application exit
# if the give timer is hit
# you can aswell replace it by
# $string_not_found = 0 if...
# if you want it to run the 2nd code
# as an attempt instead of only exiting
my $last_line = `tail -1 /my/app/log/file.out`;
if($last_line =~ /$string_to_find/ig) {
$string_not_found = 0;
}else {
# sleep a little
$counter++;
sleep 1;
}
}
# By the time we are here we are good to go with the next script.
my $second_script = `/script2.sh`;
print 'Finished';
exit;
С вышеупомянутым кодом это только запустит вторую программу, если слово было найдено, после того как первый конец программы, печатающий его, производится.
ОБНОВЛЕНИЕ: Если программа не производит то, что Вы хотите, но существует файл журнала, где это запишет информацию, Вам нужно, можно использовать его в жемчуге также так Ваш не ограниченный вообще.
Со временем ext3 не станет лучшим выбором для каталогов, содержащих огромное количество файлов, даже если он получил индексы каталогов и другие функции. Это верно, особенно если каталог имеет много операций записи в дополнение к частым операциям чтения, или если файлы в этом каталоге обслуживаются через NFS / Samba.
В общем, было бы лучше спроектировать хеширование файлов в подкаталогах каким-либо образом, например
a/apple.png
b/banana.png
c/cow.png
или
a/ap/apple.png
b/ba/banana.png
c/co/cow.png
Сделанное вами предложение (после того, как некоторое количество файлов в одном каталоге создаст другой каталог), также хорошо.
См. Индексирование каталогов в Функции, найденные в Linux 2.6 . В нем упоминаются каталоги с более чем 16 миллионами файлов. На время должно хватить.