CUPS(Common UNIX Printing System)とは
CUPSは、Linux・macOS等で広く使われている、印刷システムの標準的な実装です。プリンターへの印刷要求をIPP(Internet Printing Protocol)というHTTPベースのプロトコルで扱い、ローカル接続のプリンター、ネットワークプリンター、他のCUPSサーバーが共有しているプリンターなど、さまざまな種類のプリンターを統一的な仕組みで管理できます。
CUPSの中心となるのはcupsdというスケジューラ(デーモン)です。cupsdは、印刷ジョブ(印刷要求)やプリンター・プリンタークラスの管理、印刷データの処理を一手に担うプロセスとして常駐します。
/etc/cups/:CUPSの設定ディレクトリ
CUPSの主要な設定ファイルは、一般に/etc/cups/ディレクトリにまとめられています。
| ファイル | 役割 |
|---|---|
cupsd.conf | CUPSサーバー(cupsd)自体の設定(待ち受けアドレス、アクセス制御等) |
printers.conf | 登録されているプリンターの設定 |
classes.conf | プリンタークラス(複数のプリンターをまとめたグループ)の設定 |
mime.types・mime.convs | 印刷可能なファイル形式と、その変換に使うフィルタの対応関係。CUPSのバージョンやパッケージ構成によっては、システム提供のファイルは/usr/share/cups/mime/に置かれる |
印刷ジョブのスプール(一時保存)データは、既定では/var/spool/cups/に置かれます。
CUPSのWeb管理インターフェース
CUPSは、ブラウザからhttp://localhost:631/にアクセスすることで操作できるWeb管理インターフェースを標準で提供しています。プリンターの追加・削除、印刷キューの状態確認、共有設定の変更などを、コマンドラインを使わずにブラウザ上で行うことができます。プリンターの追加・削除や共有設定の変更などの管理操作には、CUPSの設定に応じた管理者認証・アクセス許可が必要です。
コマンドラインによるプリンター管理:lpadmin
lpadminは、プリンターの追加・変更・削除を行う管理者向けのコマンドです。管理操作には、CUPSで管理者として認証・許可される必要があります。
| オプション | 効果 |
|---|---|
-p プリンター名 | 指定した名前のプリンターを作成・変更する |
-v デバイスURI | プリンターの接続先(USB、ネットワークアドレス等)を指定する |
-m モデル名 | 使用するプリンターモデルを指定する。everywhereは、対応するCUPSでIPP Everywhere対応プリンターの属性を取得して使用する |
-P PPDファイル | 使用するPPDファイルを指定する |
-E | 指定したプリンターを有効化し、ジョブを受け付けるようにする |
-x プリンター名 | 指定したプリンターを削除する |
lpadmin -p myprinter -v ipp://printer.example.com/ipp/print -m everywhere -E # IPP Everywhere対応のプリンターをdriverlessで登録・有効化する
lpadmin -x myprinter # プリンターを削除するユーザーが使う印刷コマンド:lpr、lpq、lprm、cancel、lpstat
出題範囲では、伝統的なlpd互換インターフェース(lpr・lprm・lpq)としてこれらのコマンドが挙げられています。CUPSはこれらのコマンドも、内部的にはIPPを使いながら提供しています。
lpr:印刷ジョブを投入する
| オプション | 効果 |
|---|---|
-P プリンター名 | 印刷先のプリンターを指定する(省略時は既定のプリンター) |
-# 部数 | 印刷部数を指定する |
lpr -P myprinter report.pdf # myprinterにreport.pdfを印刷する
lpr -# 3 report.pdf # 既定のプリンターに3部印刷するlp:印刷ジョブを投入する
lpは、System V系の印刷コマンドです。ファイルを指定して印刷ジョブを投入します。
| オプション | 効果 |
|---|---|
-d プリンター名 | 印刷先のプリンターを指定する |
-n 部数 | 印刷部数を指定する |
lp -d myprinter report.pdf # myprinterにreport.pdfを印刷する
lp -n 3 report.pdf # 既定のプリンターに3部印刷するlpq:印刷キューの状態を確認する
lpq # 既定のプリンターのキューの状態を表示する
lpq -P myprinter # 指定したプリンターのキューの状態を表示する
lpq -a # すべてのプリンターのキューの状態を表示するlprm:印刷ジョブを取り消す
lprm # 既定のプリンターで、自分の現在のジョブを取り消す
lprm 1234 # ジョブID 1234を取り消す
lprm - # 既定のプリンターのキューにある、権限上取り消せるすべてのジョブを取り消すcancel:System V系のジョブ取り消しコマンド
cancelは、System V系の印刷システムで使われ、CUPSでも提供されている印刷ジョブを取り消すコマンドです。lprmと同様に印刷ジョブを取り消せます。
cancel myprinter-123 # 指定したジョブID(プリンター名-ジョブ番号)を取り消すlpstat:プリンター・ジョブの状態を確認する
| オプション | 効果 |
|---|---|
-p | 各プリンターの有効・無効状態を表示する |
-a | 各プリンターキューがジョブを受け付けているかどうかを表示する |
-t | プリンター・ジョブ・サーバー全体の状態をまとめて表示する |
-d | 既定のプリンターを表示する |
lpstat -t # システム全体の印刷関連の状態をまとめて表示する
lpstat -p # 各プリンターの有効・無効状態を表示する印刷トラブルの基本的な確認ポイント
出題範囲には「一般的な印刷トラブルの解決」も含まれます。基本的な確認の流れは次のとおりです。
lpstat -pでプリンターが「無効化(disabled)」になっていないか確認する:無効化されている場合、cupsenable プリンター名で再度有効化できます。lpstat -aでプリンターキューがジョブを「拒否(rejecting)」していないか確認する:拒否している場合、cupsaccept プリンター名でジョブの受け付けを再開できます。- 印刷ジョブがキューに滞留していないか、
lpq・lpstat -oで確認する:滞留している不要なジョブはcancel・lprmで取り消します。 - CUPSのWeb管理インターフェース(
http://localhost:631/)でプリンターの状態やログを確認する。