Ict-innovation/LPI/108.4
考生應該能夠使用 CUPS 和 LPD 相容性介面來管理印表機佇列和使用者列印作業。
關鍵知識領域
- 基本的 CUPS 配置(用於本地和遠端印表機)。
- 管理使用者列印佇列。
- 排除一般列印問題的故障。
- 從配置的印表機佇列中新增和刪除作業。
CUPS(通用 Unix 列印系統)是 Linux 上的標準列印系統。cups 伺服器是 cupsd;它在埠 631 上監聽,並使用 IPP(Internet 列印協議)接受列印作業。IPP 建立在 HTTP 之上,這意味著 IPP 請求是具有特定型別內容的 HTTP 請求。
圖示 108.4-1:CUPS 列印系統
CUPS 伺服器處理印表機佇列管理,還提供一個 Web 伺服器(也在埠 631 上),它支援基於瀏覽器的配置介面,允許新增和刪除印表機、印表機佇列管理等等。
圖 108.4-2:CUPS Web 介面:主頁
CUPS 過濾器
cups 內部的工作流程可能比較複雜
圖 108.4-3:Linux 列印架構
CUPS 的前端是實際的伺服器,它處理列印作業的排隊並提供基於 Web 的配置介面。除此之外,工作流程的核心是過濾器,它提供從初始輸入檔案(純文字、jpeg 影像等)到實際印表機理解的語言的格式轉換。這些過濾器基於Ghostscript(一個 GNU 專案)。它們參考 PPD(Postscript 印表機描述)檔案,該檔案指定了印表機的功能。過濾器位於(例如)/usr/share/ghostscript 中。
Ghostscript 也可以從命令列使用名稱 gs 呼叫。此命令將 Postscript 或 PDF 檔案作為輸入,併為特定印表機型別生成輸出檔案。它有一個可以處理的印表機驅動程式資料庫(此列表相當最新,例如支援許多 USB 印表機),並將 Postscript 直接轉換為這些已知型號的 PCL。執行命令 gs -h 可以檢視支援的裝置列表
|
# gs -h GPL Ghostscript 8.71 (2010-02-10) Copyright (C) 2010 Artifex Software, Inc. All rights reserved. Usage: gs [switches] [file1.ps file2.ps ...] Most frequently used switches: (you can use # in place of =) -dNOPAUSE no pause after page | -q `quiet', fewer messages -g<width>x<height> page size in pixels | -r<res> pixels/inch resolution -sDEVICE=<devname> select device | -dBATCH exit after last file -sOutputFile=<file> select output file: - for stdout, |command for pipe, embed %d or %ld for page # Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PostScriptLevel3 PDF Default output device: x11alpha Available devices alc1900 alc2000 alc4000 alc4100 alc8500 alc8600 alc9100 ap3250 appledmp atx23 atx24 atx38 bbox bit bitcmyk bitrgb bitrgbtags bj10e bj10v bj10vh bj200 bjc600 bjc800 bjc880j bjccmyk bjccolor bjcgray bjcmono bmp16 bmp16m bmp256 bmp32b bmpgray bmpmono bmpsep1 bmpsep8 ccr cdeskjet cdj1600 cdj500 ... many lines deleted ... |
CUPS 後端
CUPS 支援多種後端。術語後端指的是用於連線印表機的技術或協議。下表給出了一些示例
| 後端 | URI 語法 | 示例 |
| 並行埠 | parallel:/dev/lpx | parallel:/dev/lp0 |
| USB | usb://make/model?serial=number | usb://hp/officejet123?serial=108442 |
| ipp | ipp://host/printers/queue | ipp://neptune/printers/xerox1 |
| LPD | lpd://host/queue | lpd://neptune/xerox1 |
| 套接字 | socket://host:port | socket://neptune:9100 |
| CIFS | smb://user:password@workgroup/host/share |
可以使用基於 Web 的介面新增 CUPS 印表機。下圖顯示了此序列中的幾個螢幕中的兩個。
圖 108.4-4:新增印表機 - I
圖 108.4-5:新增印表機 - II
印表機也可以分配到類別。這主要在連線了多個相同型別印表機的重型列印伺服器上有用。使用者將列印作業傳送到類別;CUPS 將在第一個可用的印表機上列印它們。
CUPS 替換了 UNIX 和 Linux 中使用的兩個早期列印系統。一個是來自 System V Unix,另一個來自 BSD(伯克利軟體發行版)。這兩個系統主要用於從命令列列印純文字檔案(例如,不是從 Open Office 等圖形應用程式列印包含嵌入影像的辦公文件)。這兩個系統雖然在概念上相似,但使用不同的命令、不同的配置檔案和不同的協議與列印伺服器通訊。
為了向後相容,CUPS 提供了許多這些命令列工具的“類似”版本。這些包括
| 命令 | 描述 |
| lp, lpr | 提交檔案以列印 |
| lpq | 列印印表機佇列狀態 |
| lprm | 刪除排隊的列印作業 |
| accept | 允許將作業傳送到列印佇列 |
| reject | 阻止將作業傳送到列印佇列 |
| cupsenable | 允許將作業從佇列傳送到印表機 |
| cupsdisable | 停止作業從佇列傳送到印表機 |
| lpstat | 顯示 CUPS 印表機佇列的狀態 |
| lpadmin | 配置 cups 印表機和類別 |
使用 CUPS 時,這些命令將作業提交到 CUPS 伺服器,CUPS 伺服器執行其通常的過濾和後端處理。
lp 和 lpr
lpr 和 lp 實用程式用於將作業提交到印表機。請注意,它們使用不同的命令選項。例如,lpr 使用 -P 標記指定印表機,lp 使用 -d 標記。
lpq
使用者可以使用 lpq 監控列印佇列的狀態。在下面的示例中,demo-1 是印表機的名稱。
|
# lpr -Pdemo-1 anaconda-ks.cfg # lpq -Pdemo-1 demo-1 is not ready Rank Owner Job File(s) Total Size 1st root 4 install.log 39936 bytes 2nd root 5 anaconda-ks.cfg 1024 bytes |
lprm
lprm 命令用於從列印佇列中刪除作業。在下面的示例中,我們從 demo-1 列印佇列中刪除作業 4,然後重新顯示佇列
|
# lprm -Pdemo-1 4 # lpq -Pdemo-1 demo-1 is not ready Rank Owner Job File(s) Total Size 1st root 5 anaconda-ks.cfg 1024 bytes |
lpstat
lpstat 顯示有關當前類別、作業和印表機的狀態資訊。在沒有引數的情況下執行時,lpstat 將列出當前使用者排隊的作業。
示例
|
# lpstat -t scheduler is running no system default destination device for demo-1: parallel:/dev/lp0 device for demo-2: ipp://printhost/ipp demo-1 accepting requests since Sun 26 Sep 2010 12:38:10 PM BST demo-2 accepting requests since Sun 26 Sep 2010 12:34:53 PM BST printer demo-1 disabled since Sun 26 Sep 2010 12:38:10 PM BST - Paused printer demo-2 is idle. enabled since Sun 26 Sep 2010 12:34:53 PM BST demo-1-5 root 1024 Sun 26 Sep 2010 12:39:30 PM BST
demo-1-5 root 1024 Sun 26 Sep 2010 12:39:30 PM BST |
cupsenable 和 cupsdisable
這些命令用於啟用和停用指定的印表機佇列。cupsdisable 停止從佇列中獲取作業併發送到印表機。它不會阻止新的作業傳送到佇列。cupsenable 重新啟動佇列的服務。
accept 和 reject
這些命令用於啟用和停用指定印表機佇列的填充。在下面的示例中,我們使用 reject 停用 demo-1 佇列,然後嘗試向它列印檔案。然後我們重新啟用印表機,併成功將作業傳送到佇列
|
# reject demo-1 # lpr -Pdemo-1 scsconfig.log lpr: Destination "demo-1" is not accepting jobs.
# lpr -Pdemo-1 scsconfig.log |
lpadmin
lpadmin 命令對 CUPS 印表機執行各種管理操作。例如,它可以用於設定預設印表機。在下面顯示的命令序列中,最初沒有設定預設目標。執行 lpadmin 後,我們可以透過使用 lpr 列印到預設印表機,而無需指定印表機名稱
|
# lpr install.log lpr: Error - no default destination available.
# lpr install.log |
lpadmin 也可以用於刪除 CUPS 印表機。在下面的示例中,我們首先列出可用的佇列,然後使用 lpadmin 刪除其中一個,然後再次列出佇列
|
# lpstat -a demo-1 accepting requests since Sun 26 Sep 2010 12:38:10 PM BST demo-2 accepting requests since Sun 26 Sep 2010 12:34:53 PM BST
demo-2 accepting requests since Sun 26 Sep 2010 12:34:53 PM BST |
以下是已使用檔案、術語和實用程式的部分列表
- CUPS 配置檔案、工具和實用程式
- /etc/cups
- lpd 傳統介面 (lpr, lprm, lpq)




