my $by_host;
my $queue_name;
+my $given_job;
GetOptions(
"h|by-host!" => \$by_host,
+ "j|job=s" => \$given_job,
"q|queue=s" => \$queue_name,
) or die <<AMEN ;
Usage: bq [<options>] [[!]<machine-or-class> ...]
Options:
-h, --by-host Show jobs sorted by host (default: by job)
+-j, --job=<id> Show only instances of the specified job
-q, --queue=<name> Show jobs in the given queue
AMEN
my @machines = BEX::Config::parse_machine_list(@ARGV ? @ARGV : '*');
my $queue = BEX::Queue->new($queue_name);
-if ($queue->is_locked(undef, undef)) {
- print "### Queue lock present\n\n";
-}
-
my %jobs = ();
my %machs = ();
my %subj = ();
for my $m (@machines) {
$mach_locked{$m} = $queue->is_locked($m, undef);
for my $j ($queue->scan($m)) {
+ if (defined $given_job) {
+ next if $j ne $given_job;
+ }
push @{$jobs{$j}}, $m;
push @{$machs{$m}}, $j;
my $job = $queue->job_metadata($j);
$subj{$j} = ' (' . $job->{'Subject'} . ')';
+
+ }
+}
+
+# Read status of each job
+for my $m (keys %machs) {
+ for my $j (@{$machs{$m}}) {
my $st = $queue->read_job_status($m, $j);
if (defined($st->{'Time'}) && defined($st->{'Status'})) {
$stat{$m}{$j} = ' [' . $st->{'Status'} . ' on ' .
}
}
+if ($queue->is_locked(undef, undef)) {
+ print "### Queue lock present\n\n";
+}
+
if ($by_host) {
for my $m (sort keys %machs) {
print "$m", ($mach_locked{$m} ? ' [LOCKED]' : ''), "\n";