cups
Manage printing and print queues
TLDR
View documentation for running the CUPS daemon
View documentation for managing printers
View documentation for printing files
View documentation for checking status information about the current classes, jobs, and printers
View documentation for cancelling print jobs
SYNOPSIS
The 'cups' system is managed and interacted with through a suite of command-line utilities. While there isn't a single 'cups' executable for general user tasks, key commands for user interaction and administration include:
lp [options] file(s)
lpstat [options]
lpadmin [options]
cancel [options] job-id(s)
PARAMETERS
-d destination
Specifies the printer or class for printing (e.g., with lp) or querying (e.g., with lpstat).
-o option=value
Sets a print job option, such as paper size or duplex printing (used with lp).
-p printer
Designates a specific printer for status query or configuration (used with lpstat, lpadmin).
-t
Displays a comprehensive summary of all CUPS server status information (used with lpstat).
-E
Enables a printer to accept jobs or enables a printer queue (used with lpadmin).
-x printer
Deletes the specified printer from the CUPS configuration (used with lpadmin).
-a
Cancels all jobs (on cancel) or shows all destinations (on lpstat).
DESCRIPTION
The Common Unix Printing System (CUPS) is a modular, open-source printing system developed by Apple Inc. for Unix-like operating systems. It provides a standardized layer between applications and printers, allowing programs to print to network or local printers without needing to know printer-specific details. CUPS uses the Internet Printing Protocol (IPP) as its foundation, offering advanced features like network printer auto-discovery, driver-less printing, and robust print job management. It superseded the traditional LPD (Line Printer Daemon) system, bringing a more modern, flexible, and extensible printing architecture to Linux and other Unix environments. CUPS includes a daemon (cupsd), various command-line utilities, and a web-based administration interface.
CAVEATS
The term 'cups' itself typically refers to the entire printing system, not a single direct command-line executable for common user interaction. Users interact with CUPS primarily through a set of related commands like lp, lpstat, lpadmin, or via the web-based administration interface at http://localhost:631. The underlying CUPS daemon, cupsd, must be running for the printing system to function.
WEB INTERFACE
CUPS provides a powerful web-based administration interface, accessible by default at http://localhost:631. This interface allows users and administrators to manage printers, view print jobs, configure server settings, and troubleshoot printing issues without needing command-line knowledge.
PPD FILES AND DRIVERS
CUPS extensively uses PostScript Printer Description (PPD) files to understand printer capabilities. While modern CUPS versions increasingly support driver-less printing via IPP Everywhere, PPD files remain crucial for older or specialized printers, defining supported paper sizes, resolutions, and other device-specific features.
HISTORY
CUPS was originally developed by Michael Sweet at Easy Software Products, with its first public release in 1999. It rapidly gained adoption as a modern replacement for the traditional LPD system, becoming the default printing system for macOS (starting with Mac OS X 10.2 Jaguar in 2002) and most Linux distributions. Apple open-sourced CUPS after acquiring Easy Software Products, and its development is now maintained by the OpenPrinting project, ensuring its continued relevance and evolution in the open-source community.