Linux循序漸進(17):列印操作(轉)

post0發表於2007-08-09
Linux循序漸進(17):列印操作(轉)[@more@]

  Linux下的列印工作

在Linux下采用假離線(spooling)列印方法,當使用者需要列印一個檔案時,該檔案並不直接送到印表機,而是送到spool目錄下,然後由一個負責列印的後臺程式把這些資料送入印表機。

Linux對每臺印表機都定義了一個列印緩衝區,印表機守護程式經常掃描列印緩衝區以檢視有無要列印的新檔案。如果存在,就按先進先出的順序列印緩衝區中的檔案。

Linux系統除了可以在本地印表機上列印外,還可以透過網路印表機遠端列印。

用於列印的命令

Linux系統提供了一組有關列印的命令。一般情況下,列印命令使用預設印表機;如果使用者定義了PRINTER環境變數,列印命令就使用這個變數定義的印表機;另外,使用者還可以在命令列上指定要使用的印表機。

lpr命令

lpr命令是離線列印命令,該命令將列印作業放到列印緩衝佇列中。為Linux系統指定的每臺印表機都有自己的列印緩衝目錄,每個目錄中的minfree檔案指定儲存列印檔案的磁碟塊的數量。

lpr同lpd守護程式通訊,lpd掃描/etc/printcap檔案,查詢印表機對應的快取目錄,然後由lpd控制列印,將需要列印的資料送到實際印表機上。如果沒有指定檔案,lpr就使用標準輸入。

lpr命令的格式為:

lpr [-P printer] [#num] [其他選項] [name…]

命令中各選項的含義如下:

-P 指定印表機。如果不用此選項,則使用預設印表機或環境變數PRINTER指定的印表機。

-m 列印完畢後傳送email。

-#num 列印num份。

lpq命令

lpq是緩衝佇列檢查命令,它透過lpd在緩衝區中檢查列印檔案,報告指定作業的狀態或指定使用者的所有作業。不帶任何引數的lpq命令顯示現在佇列中的任何作業。lpq命令的顯示結果中一個重要的資訊就是作業標識號(作業ID),它標識一個特定的作業。如果使用者想取消一個掛起的作業,就必須在命令中指定這個標識號。

lpq命令的格式為:

lpq [-l] [-P printer] [job #] [user…]

命令中各選項的含義如下:

-P 指定一個印表機,否則使用預設印表機或環境變數PRINTER指定的印表機。

-l 列印組成作業的所有檔案的資訊。

對提交的每一個作業,lpq報告使用者名稱、在佇列中的級別、組成作業的檔案、作業標識以及總的大小等資訊。

lprm命令

lprm命令用於從緩衝佇列中刪除列印作業,使用者可以使用該命令從緩衝佇列中刪除屬於自己的一個或多個列印作業。

lprm命令的格式為:

lprm [-P printer] [-] [job #] [user…]

命令中各選項的含義如下:

-P 指定一個印表機,否則使用預設印表機或環境變數PRINTER指定的印表機。

- 刪除使用者所有的列印作業。

user 刪除佇列中屬於使用者user的作業(只有超級使用者可以這樣做)。

job # 透過指定作業號#刪除某個列印作業,作業號可以透過lpq命令得到,如:

$ lpq –l

lst:ken [job #013ucbarpa]

(standard input) 100 bytes

$ lprm 13

列印緩衝區目錄

對列印而言,有一個非常重要的目錄,就是列印緩衝區目錄,要列印的資料在被列印之前都集中到這裡。通常一臺印表機對應一個列印緩衝區目錄,這樣比較容易管理印表機。例如,系統使用/var/spool/lpd作為主列印緩衝區,每個單獨的印表機都在主列印緩衝區下有一個與這臺印表機同名的目錄。因此,名為 ps_nff的印表機把/var/spool/lpd/ps_nff作為它的列印緩衝區目錄。

思 考 題

1. 如何檢視你的系統中印表機的狀態?

2. 現需要將檔案text進行列印,應如何操作?

3. 假設已將檔案text提交列印,又不需要列印該檔案了,想將它從列印佇列中刪除,應如何操作?

感謝TurboLinux公司提供本教程

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-938923/,如需轉載,請註明出處,否則將追究法律責任。

相關文章