xcat-core/xCAT-rmc/scripts/perl/errmsgque
2008-02-08 17:59:49 +00:00

41 lines
1.0 KiB
Perl
Executable File

#!/usr/bin/env perl
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
BEGIN
{
$::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : '/opt/xcat';
}
use lib "$::XCATROOT/lib/perl/xCAT_monitoring/rmc";
use strict;
use locale;
use Getopt::Std;
use IPC::SysV qw(IPC_STAT S_IRWXU IPC_PRIVATE IPC_CREAT S_IRUSR S_IWUSR );
use IPC::Msg;
use NodeUtils;
my $m = ord('xcat_rmc');
my $key = IPC::SysV::ftok("/var/adm/ras/errlog", $m);
my $msg = new IPC::Msg($key, IPC_CREAT|S_IRUSR|S_IWUSR );
my $message = join " ", @ARGV;
my $stat = $msg->stat;
my $qcurrentlen = $$stat[5];
if ($qcurrentlen >= 10000) {
if (!-d "/var/opt/xcat_rmc_err_mon/") {
my $cmd = "mkdir -p \"/var/opt/xcat_rmc_err_mon\"";
NodeUtils->runcmd($cmd, -1);
}
open(FILE, ">>/var/opt/xcat_rmc_err_mon/errmsgqueerr.log");
my $sdate = `/bin/date`;
chomp $sdate;
print FILE "$sdate:\n";
print FILE "Can not write the message to queue because the queue is almost full, the message content is: $message\n\n\n";
close FILE;
exit 0;
}
$msg->snd(1, "$message");
exit 0;