#!/usr/bin/perl -w # # lpqm # # Monitor the print queue to see where the user's jobs are, and how # many jobs there are altogether. Jobs are, of course, indexed from # zero. # # Will keep reporting at regular intervals given by the -d switch, or # a default of ten seconds. # # -- Ed Avis, epa98@doc.ic.ac.uk, 2000-06-21 # use strict; use lib "/homes/epa98/lib/perl5/site_perl"; use Log::TraceMessages qw(t d); Log::TraceMessages::check_argv(); use LPQ; use Getopt::Std; use vars '$opt_P'; # Default value of -d use vars '$opt_d'; $opt_d = 10; getopt('Pd'); die 'usage: lpqm [-d delay] [-P printer]' if @ARGV; chomp (my $me = `whoami`) or die "cannot get user name with whoami"; for (;;) { my ($printer, $jr) = lpq($opt_P); print "$printer: " if defined $printer; if (defined $jr) { my @jobs = @$jr; print scalar(@jobs), @jobs == 1 ? ' job' : ' jobs'; my @positions = grep { $jobs[$_] eq $me } (0 .. (@jobs - 1)); print ", $me at ", join(', ', @positions) if @positions; } else { print "error reading queue"; } print "\n"; sleep($opt_d); }