Administering CUPS from the command line
I usually try to avoid administering printers whenever possible. As a result I end of flailing around the CUPS web interface before I figure out how to re-enable a printer. And, when I get a call to help debug a printer, I can’t easily tell people what to do.
When I try to do what I need via the command line, I end up spending at least 10 or 15 minutes re-reading man pages before I piece together the steps.
Here’s my attempt to document the steps so I don’t have to re-read man pages.
In these examples, the printer name in question is:
stability and it is a network printer, with local DNS that properly resolves the hostname stability to an IP address.
The cups commands in these examples can be run as a non-root user if that user is in the lpadmin group.
To see if lpadmin is listed. If not:
sudo adduser <your-user-name> lpadmin
Then, to gain access to the new group without logging out and logging in again:
First, try to ping the printer:
If this fails, restart the printer and/or check network cables. No point in doing anything else until it responds to pings.
Can’t submit new jobs to the printer
Next, if the problem is that the printer is greyed out when you try to print a document or your application tells you that the printer is rejecting jobs, confirm this status with:
lpstat -a stability
It will either output:
stability accepting requests since Mon 20 May 2013 10:28:57 AM EDT
stability not accepting requests since Mon 20 May 2013 10:28:57 AM EDT - Rejecting Jobs
If it is rejecting jobs, try:
Accepts new jobs, but just doesn’t print
On the other hand, if the printer is accepting jobs, but the jobs are not printing, find out if the printer is enabled with:
lpstat -p stability
You should get either:
printer stability is idle. enabled since Mon 20 May 2013 10:28:57 AM EDT
printer stability disabled since Mon 20 May 2013 10:35:10 AM EDT - Paused
If it is disabled, you should first see what queued jobs there are:
If you have a list of duplicate pending jobs, be sure to delete the duplicates to avoid having your print job come out multiple times.
To delete a queued job, type the following (n should be the number in the Job column of the lpq output):
After you have deleted duplicate jobs, try “enabling” it:
Then, re-rerun the lpq command and see if it’s now “ready.” At this point, the jobs should start printing.
Review of concepts
For review… a few important concepts:
- cupsaccept/cupsreject: controls whether a printer will accept or reject new jobs. It doesn’t matter whether the printer is enabled or disabled.
- cupsenable/cupsdisable: controls whether a printer will print existing jobs. It doesn’t matter whether the print is accepting or rejecting new jobs.