CUPS supports page and size-based quotas for each printer. The quotas are tracked individually for each user, but a single set of limits applies to all users for a particular printer. For example, you can limit every user to 5 pages per day on an expensive printer, but you cannot limit every user except Johnny.
options determine whether and how quotas are enforced for a printer.
job-quota-period option determines the time interval for
quota tracking. The interval is expressed in seconds, so a day is
86,400, a week is 604,800, and a month is 2,592,000 seconds. The
job-k-limit option specifies the job size limit in killobytes. The
job-page-limit option specifies the number of pages limit.
For quotas to be enforced, the period and at least one of the limits must be set to a non-zero value. The following options will enable weekly quotas with the given size and page count limits:
/usr/sbin/lpadmin -p printer -o job-quota-period=604800 \ -o job-k-limit=1024 ENTER /usr/sbin/lpadmin -p printer -o job-quota-period=604800 \ -o job-page-limit=100 ENTER
Or, you can combine all three options on the same line.
While there is no way to query the current quota state for a particular user, any application can request a list of jobs for a user and printer that can be used to easily determine that information.
CUPS logs every page that is printed on a system to the page_log file. Page logging is only available for drivers that provide page accounting information, typically all PostScript and CUPS raster devices. Raw queues and queues using third-party solutions such as Foomatic generally do not have useful page accounting information available.