CUPS 提供網際網路列印協定(IPP)用戶端與排程器。CUPS 的目的地是具名的印表機佇列或類別;實體或網路印表機則是透過該佇列到達的裝置。因此,佇列狀態、工作狀態與裝置可達性是分開的診斷問題。
佇列、印表機與 IPP #
用戶端會在 IPP 請求中編碼工作文件與屬性。本機用戶端通常透過 Unix 網域 socket 連線到排程器,而遠端用戶端使用 ipp:// 或加密的 ipps://,慣例上使用 TCP 連接埠 631。排程器會暫存工作、選取目的地、在需要時轉換資料,並透過後端或無驅動程式的 IPP 連線傳送輸出。
現代的 IPP Everywhere 印表機會直接宣告格式與裝訂等功能。傳統佇列則可以使用由 PPD 驅動的篩選器鏈與後端。無論哪種情況,佇列都是用戶端面向的穩定物件。
提交工作 #
lp 提供 System V 介面,而 lpr 提供相容於 BSD 的介面。兩者都會透過 CUPS 提交:
lp report.pdf
lp -d office report.pdf
lpr -P office report.pdf
printf 'status report\n' | lp -d officelp -d 與 lpr -P 需要明確目的地。對 lp 而言,CUPS 依序從 LPDEST、PRINTER、每位使用者的 lpoptions 預設值,最後是伺服器預設值選擇預設目的地。
使用 -o 傳遞 IPP 工作範本屬性;先查詢目的地,因為印表機特定值各不相同:
lpoptions -p office -l
lp -d office -n 2 \
-o media=A4 \
-o sides=two-sided-long-edge \
-o print-quality=4 report.pdflpoptions -p office -o name=value 會儲存後續工作使用的預設值。lp -o name=value 只會變更提交的工作。CUPS 也支援具名印表機實例,例如 office/duplex,用於儲存選項集合。
檢查佇列與印表機 #
使用分開的狀態檢視來確認工作在哪裡停止:
lpstat -r # scheduler running
lpstat -p -d # printer queues and default
lpstat -a # whether queues accept jobs
lpstat -v # queue device URIs
lpstat -o office # incomplete jobs for one destination
lpstat -W completed -o office
lpq -P office # BSD-compatible queue viewlpstat -p 回報佇列是否啟用列印,而 lpstat -a 回報它是否接受新工作。停用的佇列仍可保留工作,不接受工作的佇列也可以繼續處理已存在的工作。
取消與控制工作 #
提交回應與 lpstat -o 會提供如 office-42 的識別碼。使用任一介面取消單一工作:
cancel office-42
lprm -P office 42cancel -a office 會取消目的地上的所有工作,因此通常需要管理權限。lp -i office-42 -H resume 會釋放暫停的工作。佇列管理是分開的:cupsdisable/cupsenable 停止或開始列印,而 cupsreject/cupsaccept 拒絕或接受提交。
診斷篩選器與後端 #
從 lpstat -t 開始,接著檢查受影響的工作與佇列。停止的佇列通常會記錄篩選器結束、後端連線失敗、驗證失敗或不支援的文件格式。CUPS 會將排程器與工作訊息寫入 error_log;設定的 ErrorLog 可以是檔案、標準錯誤或系統日誌。cupsctl --debug-logging 會啟用額外診斷,重現失敗後應停用,因為日誌可能包含文件名稱、使用者名稱與裝置詳細資料。
對傳統管線,確認每個篩選器都存在且可執行,並在可用時使用 cupsfilter 測試轉換。若是裝置失敗,將 lpstat -v 與預期 URI 比較,解析並連線到端點,然後檢查後端訊息。佇列的 ErrorPolicy 會決定 CUPS 在後端或篩選器失敗後中止、重試或停止印表機。
權限與遠端伺服器 #
使用者通常可以提交與取消自己的工作。cupsd.conf 中的伺服器政策控制印表機管理與取消其他使用者的工作;加入特定發行版的群組只是可能的政策機制之一。-U NAME 會選取宣告的驗證使用者名稱,但不會繞過驗證。
使用 CUPS 命令的 -h server[:port] 或 CUPS_SERVER 環境變數選取其他排程器:
lpstat -h print.example.com:631 -p -d
lp -h print.example.com:631 -E -d office report.pdf-E 強制傳輸加密。遠端伺服器必須監聽可到達的介面、宣告或設定目的地,並授權要求的 IPP 操作。
上游的命令列列印指南、lpstat(1) 與 cupsd-logs(5) 說明這些介面。
評論
在 GitHub 上閱讀或評論(發表評論需要登入)