Revision 3 (by ahitrov@rambler.ru, 2010/03/24 15:19:32) |
The CORE
|
use strict;
# ���� �������� ������ ����������� ����������
# �� ��������� ������
sub activity {
my $MAXIMUM_ACTIVITY = 10;
my $TOPS = `uptime`;
if ($TOPS =~ /load averages: ([\d\.]+), ([\d\.]+), ([\d\.]+)/)
{
my $CA = $2;
$CA = $1 if ($CA < $1);
if (($CA) > $MAXIMUM_ACTIVITY)
{
return 0;
}
}
return 1;
}
# ���������� pid'� ��������
sub save_pid {
my $FILE = shift;
open F, ">".$FILE.".pid" || die "�� ���� ������� pid ���� ".$FILE.".pid \n";
print F $$;
close F || die "�� ���� ������� pid ���� ".$FILE.".pid \n";
}
# �������� ����������� ���������� ���������
# �� ��� ��� ������
sub check_pid {
my $FILE = shift || __FILE__;
if (-s $FILE.".pid") {
open F, "<".$FILE.".pid" || die "�� ���� ������� pid ���� ".$FILE.".pid \n";
my $pid = (<F>)[0];
chomp $pid;
close F || die "�� ���� ������� pid ���� ".$FILE.".pid \n";
if (kill 0 => $pid) {
warn "��������� ��� �������� -> �����\n";
exit;
} else {
&save_pid($FILE);
}
} else {
&save_pid($FILE);
}
}
1;