鍍金池/ 教程/ Linux/ 打印
網(wǎng)絡(luò)系統(tǒng)
打印
重定向
使用命令
位置參數(shù)
權(quán)限
文本處理
疑難排解
layout: book-zh title: 自定制 shell 提示符
查找文件
layout: book-zh title: vi 簡(jiǎn)介
shell 環(huán)境
什么是 shell
編譯程序
鍵盤(pán)高級(jí)操作技巧
流程控制:case 分支
流程控制:if 分支結(jié)構(gòu)
layout: book-zh title: 軟件包管理
進(jìn)程
存儲(chǔ)媒介
格式化輸出
編寫(xiě)第一個(gè) Shell 腳本
啟動(dòng)一個(gè)項(xiàng)目
流程控制:while/until 循環(huán)
文件系統(tǒng)中跳轉(zhuǎn)
字符串和數(shù)字
讀取鍵盤(pán)輸入
歸檔和備份
探究操作系統(tǒng)
流程控制:for 循環(huán)
自頂向下設(shè)計(jì)
數(shù)組
操作文件和目錄
奇珍異寶
從 shell 眼中看世界
正則表達(dá)式

打印

前幾章我們學(xué)習(xí)了如何操控文本,下面要做的是將文本呈于紙上。在這章中,我們將會(huì)著手用于打印文件和控制打印選項(xiàng)的命令行工具。通常不同發(fā)行版的打印配置各有不同且都會(huì)在其安裝時(shí)自動(dòng)完成,因此這里我們不討論打印的配置過(guò)程。本章的練習(xí)需要一臺(tái)正確配置的打印機(jī)來(lái)完成。

我們將討論一下命令:

  • pr —— 轉(zhuǎn)換需要打印的文本文件

  • lpr —— 打印文件

  • lp —— 打印文件(System V)

  • a2ps —— 為 PostScript 打印機(jī)格式化文件

  • lpstat —— 顯示打印機(jī)狀態(tài)信息

  • lpq —— 顯示打印機(jī)隊(duì)列狀態(tài)

  • lprm —— 取消打印任務(wù)

  • cancel —— 取消打印任務(wù)(System V)

打印簡(jiǎn)史

為了較好的理解類(lèi) Unix 操作系統(tǒng)中的打印功能,我們必須先了解一些歷史。類(lèi) Unix 系統(tǒng)中的打印可追溯到操作系統(tǒng)本身的起源,那時(shí)候打印機(jī)和它的用法與今天截然不同。

早期的打印

和計(jì)算機(jī)一樣,前 PC 時(shí)代的打印機(jī)都很大、很貴,并且很集中。1980年的計(jì)算機(jī)用戶(hù)都是在離電腦很遠(yuǎn)的地方用一個(gè)連接電腦的終端來(lái)工作的,而打印機(jī)就放在電腦旁并受到計(jì)算機(jī)管理員的全方位監(jiān)視。

由于當(dāng)時(shí)打印機(jī)既昂貴又集中,而且都工作在早期的 Unix 環(huán)境下,人們從實(shí)際考慮通常都會(huì)多人共享一臺(tái)打印機(jī)。為了區(qū)別不同用戶(hù)的打印任務(wù),每個(gè)打印任務(wù)的開(kāi)頭都會(huì)打印一張寫(xiě)著用戶(hù)名字的標(biāo)題頁(yè),然后計(jì)算機(jī)工作人員會(huì)用推車(chē)裝好當(dāng)天的打印任務(wù)并分發(fā)給每個(gè)用戶(hù)。

基于字符的打印機(jī)

80年代的打印機(jī)技術(shù)有兩方面的不同。首先,那時(shí)的打印機(jī)基本上都是打擊式打印機(jī)。打擊式打印機(jī)使用撞針打擊色帶的機(jī)械結(jié)構(gòu)在紙上形成字符。這種流行的技術(shù)造就了當(dāng)時(shí)的菊輪式打印和點(diǎn)陣式打印。

其次,更重要的是,早期打印機(jī)的特點(diǎn)是它使用設(shè)備內(nèi)部固定的一組字符集。比如,一臺(tái)菊輪式打印機(jī)只能打印固定在其菊花輪花瓣上的字符,就這點(diǎn)而言打印機(jī)更像是高速打字機(jī)。大部分打字機(jī)都使用等寬字體,意思是說(shuō)每個(gè)字符的寬度相等,頁(yè)面上只有固定的區(qū)域可供打印,而這些區(qū)域只能容納固定的字符數(shù)。大部分打印機(jī)采用橫向10字符每英寸(CPI)和縱向6行每英寸(LPI)的規(guī)格打印,這樣一張美式信片紙就有橫向85字符寬縱向66行高,加上兩側(cè)的頁(yè)邊距,一行的最大寬度可達(dá)80字符。據(jù)此,使用等寬字體就能提供所見(jiàn)即所得(WYSIWYG,What You See Is What You Get)的打印預(yù)覽。

接著,一臺(tái)類(lèi)打字機(jī)的打印機(jī)會(huì)收到以簡(jiǎn)單字節(jié)流的形式傳送來(lái)的數(shù)據(jù),其中就包含要打印的字符。例如要打印一個(gè)字母a,計(jì)算機(jī)就會(huì)發(fā)送 ASCII 碼97,如果要移動(dòng)打印機(jī)的滑動(dòng)架和紙張,就需要使用回車(chē)、換行、換頁(yè)等的小編號(hào) ASCII 控制碼。使用控制碼,還能實(shí)現(xiàn)一些之前受限制的字體效果,比如粗體,就是讓打印機(jī)先打印一個(gè)字符,然后退格再打印一遍來(lái)得到顏色較深的效果的。用 nroff 來(lái)產(chǎn)生一個(gè)手冊(cè)頁(yè)然后用 cat -A 檢查輸出,我們就能親眼看看這種效果了:

[me@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | nroff -man | cat -A | head
LS(1) User Commands LS(1)
$
N^HNA^HAM^HME^HE$
ls - list directory contents$
$
S^HSY^HYN^HNO^HOP^HPS^HSI^HIS^HS$
l^Hls^Hs [_^HO_^HP_^HT_^HI_^HO_^HN]... [_^HF_^HI_^HL_^HE]...$

^H(ctrl-H)字符是用于打印粗體效果的退格符。同樣,我們還可以看到用于打印下劃線效果的[退格/下劃線]序列。

圖形化打印機(jī)

圖形用戶(hù)界面(GUI)的發(fā)展催生了打印機(jī)技術(shù)中主要的變革。隨著計(jì)算機(jī)的展現(xiàn)步入更多以圖形為基礎(chǔ)的方式,打印技術(shù)也從基于字符走向圖形化技術(shù),這一切都是源于激光打印機(jī)的到來(lái),它不僅廉價(jià),還可以在打印區(qū)域的任意位置打印微小的墨點(diǎn),而不是使用固定的字符集。這讓打印機(jī)能夠打印成比例的字體(像用排字機(jī)那樣),甚至是圖片和高質(zhì)量圖表。

然而,從基于字符的方式到轉(zhuǎn)移到圖形化的方式提出了一個(gè)嚴(yán)峻的技術(shù)挑戰(zhàn)。原因如下:使用基于字符的打印機(jī)時(shí),填滿(mǎn)一張紙所用的字節(jié)數(shù)可以這樣計(jì)算出來(lái)(假設(shè)一張紙有60行,每行80個(gè)字符):60 × 80 = 4800字節(jié)。

相比之下,用一臺(tái)300點(diǎn)每英寸(DPI)分辨率的激光打印機(jī)(假設(shè)一張紙有8乘10英寸的打印區(qū)域)打印則需要 (8 × 300) × (10 × 300) / 8 = 900,000字節(jié)。

當(dāng)時(shí)許多慢速的個(gè)人電腦網(wǎng)絡(luò)無(wú)法接受激光打印機(jī)打印一頁(yè)需要傳輸將近1兆的數(shù)據(jù)這一點(diǎn),因此,很有必要發(fā)明一種更聰明的方法。

這種發(fā)明便是頁(yè)面描述語(yǔ)言(PDL)。PDL 是一種描述頁(yè)面內(nèi)容的編程語(yǔ)言。簡(jiǎn)單的說(shuō)就是,“到這個(gè)地方,印一個(gè)10點(diǎn)大小的黑體字符 a ,到這個(gè)地方。。。” 這樣直到頁(yè)面上的所有內(nèi)容都描述完了。第一種主要的 PDL 是 Adobe 系統(tǒng)開(kāi)發(fā)的 PostScript,直到今天,這種語(yǔ)言仍被廣泛使用。PostScript 是專(zhuān)為印刷各類(lèi)圖形和圖像設(shè)計(jì)的完整的編程語(yǔ)言,它內(nèi)建支持35種標(biāo)準(zhǔn)的高質(zhì)量字體,在工作是還能夠接受其他的字體定義。最早,對(duì) PostScript 的支持是打印機(jī)本身內(nèi)建的。這樣傳輸數(shù)據(jù)的問(wèn)題就解決了。相比基于字符打印機(jī)的簡(jiǎn)單字節(jié)流,典型的 PostScript 程序更為詳細(xì),而且比表示整個(gè)頁(yè)面的字節(jié)數(shù)要小很多。

一臺(tái) PostScript 打印機(jī)接受 PostScript 程序作為輸入。打印機(jī)有自己的處理器和內(nèi)存(通常這讓打印機(jī)比連接它的計(jì)算機(jī)更為強(qiáng)大),能執(zhí)行一種叫做 PostScript 解析器的特殊程序用于讀取輸入的 PostScript 程序并生成結(jié)果導(dǎo)入打印機(jī)的內(nèi)存,這樣就形成了要轉(zhuǎn)移到紙上的位(點(diǎn))圖。這種將頁(yè)面渲染成大型位圖(bitmap)的過(guò)程有個(gè)通用名稱(chēng)作光柵圖像處理器(raster image processor),又叫 RIP。

多年之后,電腦和網(wǎng)絡(luò)都變得更快了。這使得 RIP 技術(shù)從打印機(jī)轉(zhuǎn)移到了主機(jī)上,還讓高品質(zhì)打印機(jī)變得更便宜了。

現(xiàn)在的許多打印機(jī)仍能接受基于字符的字節(jié)流,但很多廉價(jià)的打印機(jī)卻不支持,因?yàn)樗鼈円蕾?lài)于主機(jī)的 RIP 提供的比特流來(lái)作為點(diǎn)陣打印。當(dāng)然也有不少仍舊是 PostScript 打印機(jī)。

在 Linux 下打印

當(dāng)前 Linux 系統(tǒng)采用兩套軟件配合顯示和管理打印。第一,CUPS(Common Unix Printing System,一般 Unix 打印系統(tǒng)),用于提供打印驅(qū)動(dòng)和打印任務(wù)管理;第二,Ghostscript,一種 PostScript 解析器,作為 RIP 使用。

CUPS 通過(guò)創(chuàng)建并維護(hù)打印隊(duì)列來(lái)管理打印機(jī)。如前所述,Unix 下的打印原本是設(shè)計(jì)成多用戶(hù)共享中央打印機(jī)的管理模式的。由于打印機(jī)本身比連接到它的電腦要慢,打印系統(tǒng)就需要對(duì)打印任務(wù)進(jìn)行調(diào)度使其保持順序。CUPS 還能識(shí)別出不同類(lèi)型的數(shù)據(jù)(在合理范圍內(nèi))并轉(zhuǎn)換文件為可打印的格式。

為打印準(zhǔn)備文件

作為命令行用戶(hù),盡管打印各種格式的文本都能實(shí)現(xiàn),不過(guò)打印最多的,還是文本。

pr - 轉(zhuǎn)換需要打印的文本文件

前面的章節(jié)我們也有提到過(guò) pr 命令,現(xiàn)在我們來(lái)探討一下這條命令結(jié)合打印使用的一些選項(xiàng)。我們知道,在打印的歷史上,基于字符的打印機(jī)曾經(jīng)用過(guò)等寬字體,致使每頁(yè)只能打印固定的行數(shù)和字符數(shù),而 pr 命令則能夠根據(jù)不同的頁(yè)眉和頁(yè)邊距排列文本使其適應(yīng)指定的紙張。表23-1總結(jié)了最常用的選項(xiàng)。

表23-1: 常用 pr 選項(xiàng)
選項(xiàng) 描述
+first[:last] 輸出從 first 到 last(默認(rèn)為最后)范圍內(nèi)的頁(yè)面。
-columns 根據(jù) columns 指定的列數(shù)排版頁(yè)面內(nèi)容。
-a 默認(rèn)多列輸出為垂直,用 -a (across)可使其水平輸出。
-d 雙空格輸出。
-D format 用 format 指定的格式修改頁(yè)眉中顯示的日期,日期命令中 format 字符串的描述詳見(jiàn)參考手冊(cè)。
-f 改用換頁(yè)替換默認(rèn)的回車(chē)來(lái)分割頁(yè)面。
-h header 在頁(yè)眉中部用 header 參數(shù)替換打印文件的名字。
-l length 設(shè)置頁(yè)長(zhǎng)為 length,默認(rèn)為66行(每英寸6行的美國(guó)信紙)。
-n 輸出行號(hào)。
-o offset 創(chuàng)建一個(gè)寬 offset 字符的左頁(yè)邊。
-w width 設(shè)置頁(yè)寬為 width,默認(rèn)為72字符。

我們通常用管道配合 pr 命令來(lái)做篩選。下面的例子中我們會(huì)列出目錄 /usr/bin 并用 pr 將其格式化為3列輸出的標(biāo)題頁(yè):

[me@linuxbox ~]$ ls /usr/bin | pr -3 -w 65 | head
2012-02-18 14:00                    Page 1
[                   apturl          bsd-write
411toppm            ar              bsh
a2p                 arecord         btcflash
a2ps                arecordmidi     bug-buddy
a2ps-lpr-wrapper    ark             buildhash

將打印任務(wù)送至打印機(jī)

CUPS 打印體系支持兩種曾用于類(lèi) Unix 系統(tǒng)的打印方式。一種,叫 Berkeley 或 LPD(用于 Unix 的 Berkeley 軟件發(fā)行版),使用 lpr 程序;另一種,叫 SysV(源自 System V 版本的 Unix),使用 lp 程序。這兩個(gè)程序的功能大致相同。具體使用哪個(gè)完全根據(jù)個(gè)人喜好。

lpr - 打印文件(Berkeley 風(fēng)格)

lpr 程序可以用來(lái)把文件傳送給打印機(jī)。由于它能接收標(biāo)準(zhǔn)輸入,所以能用管道來(lái)協(xié)同工作。例如,要打印剛才多列目錄列表的結(jié)果,我們只需這樣:

[me@linuxbox ~]$ ls /usr/bin | pr -3 | lpr

報(bào)告會(huì)送到系統(tǒng)默認(rèn)的打印機(jī),如果要送到別的打印機(jī),可以使用 -P 參數(shù):

lpr -P printer_name

printer_name 表示這臺(tái)打印機(jī)的名稱(chēng)。若要查看系統(tǒng)已知的打印機(jī)列表:

[me@linuxbox ~]$ lpstat -a

注意:許多 Linux 發(fā)行版允許你定義一個(gè)輸出 PDF 文件但不執(zhí)行實(shí)體打印的“打印機(jī)”,這可以用來(lái)很方便的檢驗(yàn)?zāi)愕拇蛴∶???纯茨愕拇蛴C(jī)配置程序是否支持這項(xiàng)配置。在某些發(fā)行版中,你可能要自己安裝額外的軟件包(如 cups-pdf)來(lái)使用這項(xiàng)功能。

表23-2顯示了 lpr 的一些常用選項(xiàng)

表23-2: 常用 lpr 選項(xiàng)
選項(xiàng) 描述
-# number 設(shè)定打印份數(shù)為 number。
-p 使每頁(yè)頁(yè)眉標(biāo)題中帶有日期、時(shí)間、工作名稱(chēng)和頁(yè)碼。這種所謂的“美化打印”選項(xiàng)可用于打印文本文件。
-P printer 指定輸出打印機(jī)的名稱(chēng)。未指定則使用系統(tǒng)默認(rèn)打印機(jī)。
-r 打印后刪除文件。對(duì)程序產(chǎn)生的臨時(shí)打印文件較為有用。

lp - 打印文件(System V 風(fēng)格)

和 lpr 一樣,lp 可以接收文件或標(biāo)準(zhǔn)輸入為打印內(nèi)容。與 lpr 不同的是 lp 支持不同的選項(xiàng)(略為復(fù)雜),表23-3列出了其常用選項(xiàng)。

表23-3: 常用 lp 選項(xiàng)
選項(xiàng) 描述
-d printer 設(shè)定目標(biāo)(打印機(jī))為 printer。若d 選項(xiàng)未指定,則使用系統(tǒng)默認(rèn)打印機(jī)。
-n number 設(shè)定的打印份數(shù)為 number。
-o landscape 設(shè)置輸出為橫向。
-o fitplot 縮放文件以適應(yīng)頁(yè)面。打印圖像時(shí)較為有用,如 JPEG 文件。
-o scaling=number 縮放文件至 number。100表示填滿(mǎn)頁(yè)面,小于100表示縮小,大于100則會(huì)打印在多頁(yè)上。
-o cpi=number 設(shè)定輸出為 number 字符每英寸。默認(rèn)為10。
-o lpi=number 設(shè)定輸出為 number 行每英寸,默認(rèn)為6。
-o page-bottom=points
-o page-left=points
-o page-right=points
-o page-top=points
設(shè)置頁(yè)邊距,單位為點(diǎn),一種印刷上的單位。一英寸 =72點(diǎn)。
-P pages 指定打印的頁(yè)面。pages 可以是逗號(hào)分隔的列表或范圍——例如 1,3,5,7-10。

再次打印我們的目錄列表,這次我們?cè)O(shè)置12 CPI、8 LPI 和一個(gè)半英寸的左邊距。注意這里我必須調(diào)整 pr 選項(xiàng)來(lái)適應(yīng)新的頁(yè)面大小:

[me@linuxbox ~]$ ls /usr/bin | pr -4 -w 90 -l 88 | lp -o page-left=36 -o cpi=12 -o lpi=8

這條命令用小于默認(rèn)的格式產(chǎn)生了一個(gè)四列的列表。增加 CPI 可以讓我們?cè)陧?yè)面上打印更多列。

另一種選擇:a2ps

a2ps 程序很有趣。單從名字上看,這是個(gè)格式轉(zhuǎn)換程序,但它的功能不止于此。程序名字的本意為 ASCII to PostScript,它是用來(lái)為 PostScript 打印機(jī)準(zhǔn)備要打印的文本文件的。多年后,程序的功能得到了提升,名字的含義也變成了 Anything to PostScript。盡管名為格式轉(zhuǎn)換程序,但它實(shí)際的功能卻是打印。它的默認(rèn)輸出不是標(biāo)準(zhǔn)輸出,而是系統(tǒng)的默認(rèn)打印機(jī)。程序的默認(rèn)行為被稱(chēng)為“漂亮的打印機(jī)”,這意味著它可以改善輸出的外觀。我們能用程序在桌面上創(chuàng)建一個(gè) PostScript 文件:

[me@linuxbox ~]$ ls /usr/bin | pr -3 -t | a2ps -o ~/Desktop/ls.ps -L 66
[stdin (plain): 11 pages on 6 sheets]
[Total: 11 pages on 6 sheets] saved into the file `/home/me/Desktop/ls.ps'

這里我們用帶 -t 參數(shù)(忽略頁(yè)眉和頁(yè)腳)的 pr 命令過(guò)濾數(shù)據(jù)流,然后用 a2ps 指定一個(gè)輸出文件(-o 參數(shù)),并設(shè)定每頁(yè)66行(-L 參數(shù))來(lái)匹配 pr 的輸出分頁(yè)。用合適的文件查看器查看我們的輸出文件,我們就會(huì)看到圖23-1中顯示的結(jié)果。

\ 圖 23-1: 瀏覽 a2ps 的輸出結(jié)果 {: .figure}

可以看到,默認(rèn)的輸出布局是一面兩頁(yè)的,這將導(dǎo)致兩頁(yè)的內(nèi)容被打印到一張紙上。a2ps 還能利用頁(yè)眉和頁(yè)腳。

a2ps 有很多選項(xiàng),總結(jié)在表23-4中。

表23-4: a2ps 選項(xiàng)
選項(xiàng) 描述
--center-title text 設(shè)置中心頁(yè)標(biāo)題為 text。
--columns number 將所有頁(yè)面排列成 number 列。默認(rèn)為2。
--footer text 設(shè)置頁(yè)腳為 text。
--guess 報(bào)告參數(shù)中文件的類(lèi)型。由于 a2ps 會(huì)轉(zhuǎn)換并格式化所有類(lèi)型的數(shù)據(jù),所以當(dāng)給定文件類(lèi)型后,這個(gè)選項(xiàng)可以很好的用來(lái)判斷 a2ps 應(yīng)該做什么。
--left-footer text 設(shè)置左頁(yè)腳為 text。
--left-title text 設(shè)置頁(yè)面左標(biāo)題為 text。
--line-numbers=interval 每隔 interval 行輸出行號(hào)。
--list=defauls 顯示默認(rèn)設(shè)置。
--list=topic 顯示 topic 設(shè)置,topic 表示下列之一:代理程序(用來(lái)轉(zhuǎn)換數(shù)據(jù)的外部程序),編碼,特征,變量,媒介(頁(yè)面大小等),ppd(PostScript 打印機(jī)描述信息),打印機(jī),起始程序(為常規(guī)輸出添加前綴的代碼部分),樣式表,或用戶(hù)選項(xiàng)。
--pages range 打印 range 范圍內(nèi)的頁(yè)面。
--right-footer text 設(shè)置右頁(yè)腳為 text。
--right-title text 設(shè)置頁(yè)面右標(biāo)題為 text。
--rows number 將所有頁(yè)面排列成 number 排。默認(rèn)為1。
-B 沒(méi)有頁(yè)眉。
-b text 設(shè)置頁(yè)眉為 text。
-f size 使用字體大小為 size 號(hào)。
-l number 設(shè)置每行字符數(shù)為 number。此項(xiàng)和 -L 選項(xiàng)(見(jiàn)下方)可以給文件用其他程序來(lái)更準(zhǔn)確的分頁(yè),如 pr。
-L number 設(shè)置每頁(yè)行數(shù)為 number。
-M name 使用打印媒介的名稱(chēng)——例如,A4。
-n number 每頁(yè)輸出 number 份。
-o file 輸出到文件 file。如果指定為 - ,則輸出到標(biāo)準(zhǔn)輸出。
-P printer 使用打印機(jī) printer。如果未指定,則使用系統(tǒng)默認(rèn)打印機(jī)。
-R 縱向打印。
-r 橫向打印。
-T number 設(shè)置制表位為每 number 字符。
-u text 用 text 作為頁(yè)面底圖(水?。?。

以上只是對(duì) a2ps 的總結(jié),更多的選項(xiàng)尚未列出。

注意:a2ps 目前仍在不斷的開(kāi)發(fā)中。就我的測(cè)試而言,不同版本之間都多少有所變化。CentOS 4 中輸出總是默認(rèn)為標(biāo)準(zhǔn)輸出。在 CentOS 4 和 Fedora 10 中,盡管程序配置信紙為默認(rèn)媒介,輸出還是默認(rèn)為 A4紙。我可以明確的指定需要的選項(xiàng)來(lái)解決這些問(wèn)題。Ubuntu 8.04 中,a2ps 表現(xiàn)的正如參考文檔中所述。 另外,我們也要注意到另一個(gè)轉(zhuǎn)換文本為 PostScript 的輸出格式化工具,名叫 enscript。它具有許多相同的格式化和打印功能,但和 a2ps 唯一的不同在于,它只能處理純文本的輸入。

監(jiān)視和控制打印任務(wù)

由于 Unix 打印系統(tǒng)的設(shè)計(jì)是能夠處理多用戶(hù)的多重打印任務(wù),CUPS 也是如此設(shè)計(jì)的。每臺(tái)打印機(jī)都有一個(gè)打印隊(duì)列,其中的任務(wù)直到傳送到打印機(jī)才停下并進(jìn)行打印。CUPS 支持一些命令行程序來(lái)管理打印機(jī)狀態(tài)和打印隊(duì)列。想 lpr 和 lp 這樣的管理程序都是以 Berkeley 和 System V 打印系統(tǒng)的相應(yīng)程序?yàn)橐罁?jù)進(jìn)行排列的。

lpstat - 顯示打印系統(tǒng)狀態(tài)

lpstat 程序可用于確定系統(tǒng)中打印機(jī)的名字和有效性。例如,我們系統(tǒng)中有一臺(tái)實(shí)體打印機(jī)(名叫 printer)和一臺(tái) PDF 虛擬打印機(jī)(名叫 PDF),我們可以像這樣查看打印機(jī)狀態(tài):

[me@linuxbox ~]$ lpstat -a
PDF accepting requests since Mon 05 Dec 2011 03:05:59 PM EST
printer accepting requests since Tue 21 Feb 2012 08:43:22 AM EST

接著,我們可以查看打印系統(tǒng)更具體的配置信息:

[me@linuxbox ~]$ lpstat -s
system default destination: printer
device for PDF: cups-pdf:/
device for printer: ipp://print-server:631/printers/printer

上例中,我們看到 printer 是系統(tǒng)默認(rèn)的打印機(jī),其本身是一臺(tái)網(wǎng)絡(luò)打印機(jī),使用網(wǎng)絡(luò)打印協(xié)議(ipp://)通過(guò)網(wǎng)絡(luò)連接到名為 print-server 的系統(tǒng)。

lpstat 的常用選項(xiàng)列于表23-5。

表23-5: 常用 lpstat 選項(xiàng)
選項(xiàng) 描述
-a [printer...] 顯示 printer 打印機(jī)的隊(duì)列。這里顯示的狀態(tài)是打印機(jī)隊(duì)列承受任務(wù)的能力,而不是實(shí)體打印機(jī)的狀態(tài)。若未指定打印機(jī),則顯示所有打印隊(duì)列。
-d 顯示系統(tǒng)默認(rèn)打印機(jī)的名稱(chēng)。
-p [printer...] 顯示 printer 指定的打印機(jī)的狀態(tài)。若未指定打印機(jī),則顯示所有打印機(jī)狀態(tài)。
-r 顯示打印系統(tǒng)的狀態(tài)。
-s 顯示匯總狀態(tài)。
-t 顯示完整狀態(tài)報(bào)告。

lpq - 顯示打印機(jī)隊(duì)列狀態(tài)

使用 lpq 程序可以查看打印機(jī)隊(duì)列的狀態(tài),從中我們可以看到隊(duì)列的狀態(tài)和所包含的打印任務(wù)。下面的例子顯示了一臺(tái)名叫 printer 的系統(tǒng)默認(rèn)打印機(jī)包含一個(gè)空隊(duì)列的情況:

[me@linuxbox ~]$ lpq
printer is ready
no entries

如果我們不指定打印機(jī)(用 -P 參數(shù)),就會(huì)顯示系統(tǒng)默認(rèn)打印機(jī)。如果給打印機(jī)添加一項(xiàng)任務(wù)再查看隊(duì)列,我們就會(huì)看到下列結(jié)果:

[me@linuxbox ~]$ ls *.txt | pr -3 | lp
request id is printer-603 (1 file(s))
[me@linuxbox ~]$ lpq
printer is ready and printing
Rank      Owner   Job     File(s)           Total Size
active    me      603     (stdin)           1024 bytes

lprm 和 cancel - 取消打印任務(wù)

CUPS 提供兩個(gè)程序來(lái)從打印隊(duì)列中終止并移除打印任務(wù)。一個(gè)是 Berkeley 風(fēng)格的(lprm),另一個(gè)是 System V 的(cancel)。在支持的選項(xiàng)上兩者有較小的區(qū)別但是功能卻幾乎相同。以上面的打印任務(wù)為例,我們可以像這樣終止并移除任務(wù):

[me@linuxbox ~]$ cancel 603
[me@linuxbox ~]$ lpq
printer is ready
no entries

每個(gè)命令都有選項(xiàng)可用于移除某用戶(hù)、某打印機(jī)或多個(gè)任務(wù)號(hào)的所有任務(wù),相應(yīng)的參考手冊(cè)中都有詳細(xì)的介紹。

上一篇:歸檔和備份下一篇:權(quán)限