Parallel-Mpich-MPD
view release on metacpan or search on metacpan
lib/Parallel/Mpich/MPD/Job.pm view on Meta::CPAN
my $params;
$params=$this->jobid();
my $ret=Parallel::Mpich::MPD::Common::__exec(cmd => commandPath('mpdkilljob')." $params");
return $ret==0;
}
# return true if the criteria match this job
# $criteria{pid} [ && $criteria{rank}]
# $criteria{jobid}
# $criteria{jobalias}
# $criteria{username}
sub equals{
my $this=shift;
my %criteria=@_;
#print Dumper \%criteria;
#print $this;
if (defined($criteria{jobalias}) && $criteria{jobalias}{$this->jobalias}){
return 1;
}
if (defined($criteria{username}) && $criteria{username}{$this->username}){
return 1;
}
if (defined($criteria{jobid}) && $criteria{jobid}{$this->jobid}){
return 1;
}
foreach my $host (@{$this->_hosts()}){
if (defined($criteria{pid})) {
if (defined($criteria{rank})) {
return 1 if ($criteria{rank} eq $host->{rank} && $criteria{pid} eq $host->{rank});
}else{
return 1 if ($criteria{pid} eq $host->{pid});
}
}
}
}
# Send a signal to all process for the current job.
# SIGQUIT, SIGKILL, SIGSTOP, SIGCONT, SIGXCPU, SIGUSR1, SIGUSR2
sub signal{
my $stdout="";
my $stderr="";
my $pid="";
my $this=shift;
my ($sigtype)=@_;
if (!defined($sigtype)){
printf STDERR "ERROR:".__PACKAGE__."::__sig() sigtype is not defined. \n";
return 0;
}
env_Init() unless defined(%env);
my $params;
$params="-j ".$this->jobid();
my $ret=Parallel::Mpich::MPD::Common::__exec(cmd => commandPath('mpdsigjob')." $sigtype $params");
return $ret==0;
}
#sub stop{
# my $this=shift;
# return $this->signal("SIGSTOP");
#}
#sub continue{
# my $this=shift;
# return $this->signal("SIGCONT");
#}
#sub destroy{
# my $this=shift;
# return $this->signal("SIGKILL");
#}
use overload '""' => \&toSummaryString;
sub toSummaryString{
my $self=shift;
my $ret=$self->jobid."\t(alias='".$self->jobalias."', user='".$self->username."')\n";
my @h=$self->hosts();
foreach (sort {$a->{rank} <=> $b->{rank}} @h){
$ret.="$_->{rank}\t".($_->{host}||'')."\t".($_->{pid}||'')."\t".($_->{sid}||'')."\t".($_->{pgm}||'')."\n";
}
return $ret."\n";
}
1; # End of Parallel::Mpich::MPD
( run in 0.899 second using v1.01-cache-2.11-cpan-71847e10f99 )