When working with CUPS using remote print queues, you may find that the remote printer is not always available, has timed out, ran out of paper, has a paper jam, etc. Sometimes this causes a job to ‘not-complete’ and when running ‘lpstat -o’, you see old print jobs.
We put together a quick script to auto-purge these jobs. Hopefully this helps someone in the future.
Please let us know if you found this useful, or if you have any suggested changes.
#!/usr/bin/python # # Purge print jobs that are not-complete and older than 10 days. # from datetime import date, timedelta, datetime import time import os howmanydaysago=10 today=date.today() daysago=today-timedelta(days=howmanydaysago) epoch_today=time.mktime(today.timetuple()) epoch_daysago=time.mktime(daysago.timetuple()) date_difference=epoch_today-epoch_daysago for line in os.popen('/usr/bin/lpstat -o').readlines(): data = line.strip().split() job=data.split('-') #15 Apr 2008 12:00:00 date_time=data+" "+data+" "+data+" 12:00:00" pattern = '%d %b %Y %H:%M:%S' epoch_job = int(time.mktime(time.strptime(date_time, pattern))) difference=epoch_today - epoch_job if difference > date_difference: print "Canceling pending job: "+str(job[-1]) os.popen('/usr/bin/cancel '+str(job[-1]))