Running Linux, 5th Edition - Matthias Kalle Dalheimer [286]
Figure 14-6. kprinter lets you adjust printer features from many CUPS-unaware applications
Using command-line tools
Text-mode CUPS commands enable you to control print queues from a text-mode login, an xterm window, or any other text-mode interface. Most of these commands require root privilege to function correctly, but a few can be used by ordinary users:
lpc
This command is named after the main text-mode queue manager in LPD, but the CUPS version is very limited; its only useful option is status. Type lpc status to see a list of available queues and the status of each (queueing enabled, printing enabled, number of queued jobs, and the availability of a CUPS daemon to manage the queue). You can add a queue name to obtain status on that queue alone.
lpstat
This command lists status information on print jobs, and like lpc, it can be used by ordinary users. Type this command by itself to see a list of jobs that are queued for printing on all the system's printers. You can also use various options to modify its output in various ways. For instance, -p queue restricts output to the specified queue, -u users restricts output to jobs submitted by the specified user or users, and -d displays the current default destination.
lpq
Like lpc, this command is borrowed from the LPD printing system. It displays information on the status of the current queue, similar in some ways to lpstat. It's often used with the -P queue option to display information on the specified queue rather than the default one. (Alternatively, -a can be used to display information on all queues.)
lppasswd
This program changes the CUPS digest password—that is, the password used by the system if you set AuthType to Digest in the cupsd.conf configuration file.
enable and disable
These commands start or stop a queue, respectively. Both commands take a queue name as an option, and disable also takes a few options, the most important of which may be -c. This option causes disable to cancel all the jobs currently in the queue. The disable command also accepts an -r reason option, which enters the text string reason as an explanation for the printer 's unavailability.
* * *
Tip
If you receive the error message not a shell builtin when you use the enable command, you must provide the complete path to the command, usually /usr/bin/enable.
* * *
accept and reject
These commands cause the specified print queue to begin accepting or rejecting new jobs for printing. This differs from enable and disable in that accept and reject affect only the queue's ability to accept new jobs for printing, whereas enable and disable affect the queue's ability to print jobs in the queue. Like disable, reject supports a -r reason option so that you can register a reason for the queue's unavailability.
lprm
You can remove a job from the queue using this command. It takes an optional queue definition (-P queue) and a job identifier (which you can obtain with lpstat) as arguments.
lpmove
This command moves a print job from one queue to another. It accepts two arguments: a job identifier and a queue name, as in lpmove oldqueue-456 newqueue. This command moves job oldqueue-456 to the newqueue queue.
As an example of these commands in action, suppose you have a problem with the hp4000 queue—perhaps the printer is malfunctioning and needs to be serviced. Thus, you want to disable it and move some of its jobs to another queue (say, the laserwriter queue), and perhaps delete other jobs. You might type commands like these to do all this:
# disable hp4000
# lpc status hp4000
hp4000:
printer is on device '/dev/null' speed -1
queuing is enabled
printing is disabled
no entries
daemon present
# lpstat
hp4000-433 sholmes 15360 Sun Apr 10 22:20:44 2005
hp4000-434 moriarty 2977 Sun Apr 10 22:21:32
# lpmove hp4000-433 laserwriter
# lprm hp4000-434
# lpstat
laserwriter-433 sholmes 15360 Sun Apr 10 22:20:44 2005
In this example, the hp4000 queue is first disabled, and lpc status hp4000 confirms its disabled status—note the printing