Line # Revision Author
1 8 ahitrov@rambler.ru use strict;
2
3 # если нагрузка больше максимально допустимой
4 # не запускаем сервис
5 sub activity {
6 my $MAXIMUM_ACTIVITY = 10;
7 my $TOPS = `uptime`;
8 if ($TOPS =~ /load averages: ([\d\.]+), ([\d\.]+), ([\d\.]+)/)
9 {
10 my $CA = $2;
11 $CA = $1 if ($CA < $1);
12 if (($CA) > $MAXIMUM_ACTIVITY)
13 {
14 return 0;
15 }
16 }
17 return 1;
18 }
19
20 # сохранение pid'а процесса
21 sub save_pid {
22 my $FILE = shift;
23 open F, ">".$FILE.".pid" || die "Не могу открыть pid файл ".$FILE.".pid \n";
24 print F $$;
25 close F || die "Не могу закрыть pid файл ".$FILE.".pid \n";
26 }
27
28
29 # проверка запущенного экземпляра программы
30 # на фик нам второй
31 sub check_pid {
32 my $FILE = shift || __FILE__;
33 if (-s $FILE.".pid") {
34 open F, "<".$FILE.".pid" || die "Не могу открыть pid файл ".$FILE.".pid \n";
35 my $pid = (<F>)[0];
36 chomp $pid;
37 close F || die "Не могу закрыть pid файл ".$FILE.".pid \n";
38 if (kill 0 => $pid) {
39 warn "Программа уже запущена -> выход\n";
40 exit;
41 } else {
42 &save_pid($FILE);
43 }
44 } else {
45 &save_pid($FILE);
46 }
47 }
48
49 1;

Небольшая справка по веткам

cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.

koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.

utf8 – актуальная ветка, заточенная под UTF-8.

Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.