2 # Batch EXecutor 2.0 -- Show Queued Jobs
3 # (c) 2011 Martin Mares <mj@ucw.cz>
18 "h|by-host!" => \$by_host,
19 "j|job=s" => \$given_job,
20 "q|queue=s" => \$queue_name,
22 Usage: bq [<options>] [[!]<machine-or-class> ...]
25 -h, --by-host Show jobs sorted by host (default: by job)
26 -j, --job=<id> Show only instances of the specified job
27 -q, --queue=<name> Show jobs in the given queue
30 my @machines = BEX::Config::parse_machine_list(@ARGV ? @ARGV : '*');
31 my $queue = BEX::Queue->new($queue_name);
38 for my $m (@machines) {
39 $mach_locked{$m} = $queue->is_locked($m, undef);
40 for my $j ($queue->scan($m)) {
41 if (defined $given_job) {
42 next if $j ne $given_job;
44 push @{$jobs{$j}}, $m;
45 push @{$machs{$m}}, $j;
46 my $job = $queue->job_metadata($j);
47 $subj{$j} = ' (' . $job->{'Subject'} . ')';
52 # Read status of each job
53 for my $m (keys %machs) {
54 for my $j (@{$machs{$m}}) {
55 my $st = $queue->read_job_status($m, $j);
56 if (defined($st->{'Time'}) && defined($st->{'Status'})) {
57 $stat{$m}{$j} = ' [' . $st->{'Status'} . ' on ' .
58 POSIX::strftime('%Y-%m-%d', localtime $st->{'Time'}) . ']';
62 if ($mach_locked{$m} || $queue->is_locked($m, $j)) {
63 $stat{$m}{$j} .= ' [LOCKED]';
68 if ($queue->is_locked(undef, undef)) {
69 print "### Queue lock present\n\n";
73 for my $m (sort keys %machs) {
74 print "$m", ($mach_locked{$m} ? ' [LOCKED]' : ''), "\n";
75 for my $j (@{$machs{$m}}) {
76 print "\t$j", $subj{$j}, $stat{$m}{$j}, "\n";
80 for my $j (sort keys %jobs) {
81 print $j, $subj{$j}, "\n";
82 for my $m (sort @{$jobs{$j}}) {
83 print "\t$m", $stat{$m}{$j}, "\n";