[CentOS] CUPS job handling

Fri Sep 6 10:19:50 UTC 2019
hw <hw at gc-24.de>

On Sun, 1 Sep 2019 11:04:02 -0600
Frank Cox <theatre at sasktel.net> wrote:

> On Sun, 1 Sep 2019 14:19:58 +0200
> hw wrote:
> 
> > Yet if a printer doesn't print anymore, it is desirable to divert jobs
> > to another printer, preferably a designated fallback.  It is of no use
> > when the jobs get stuck in the queue until the printer is being
> > maintained which can be days later.
> 
> You might want to write a program that will check the printer queues on a regular basis and
> re-route the job if the printing stops.
> 
> lpstat will tell you what's going on with the printer (check queue, is it online, etc)
> 
> I don't know if there's an "official" way to recover a print job (you can research this yourself), but they are stored in /var/spool/cups so you could pull them directly from there if needed.
> 
> A bit of glue code to link all of that together (check printer status every X minutes, if the next pending job from the last check is still not printing then recover all of the incomplete jobs, cancel the printing on the local printer, re-route the recovered jobs to a different printer) and you'll be all set.

It would take a lot more than a "bit of glue code" to do it, and it
might never work reliably.  There's also probably no way to divert
jobs while a printer is disabled before they are being sent.  And what
about jobs stored in the buffers of printers and print-servers?  A job
stuck in a buffer and is no longer in the queue may be kinda difficult
to divert.

And how I do distinguish between a printer that is set to offline
because someone didn't (intentionally) press the button and a printer
which is not online for other reasons?

It's probably a bad idea unless all relevant information is available.
That's why it needs to be done by CUPS itself --- and even CUPS may
not have all the information.