本節說明在 Linux 環境中如何打印文件、檢查列印隊列、從列印隊列刪除打印任務、 打印前文檔排版和設置打印環境等。
Linux 打印系統 - lp 系統 - 是將加利福尼亞大學校方為 UNIX 操作系統的 BSD 版編寫的源代碼改編而成。
到目前為止,在 Linux 系統中打印文檔的最簡單方法就是將文檔直接送到打印設備打印。使用 cat 指令就是方法之一。作為 root,發送下列指令就可打印文檔:
# cat thesis.txt > /dev/lp
在這個例子中,/dev/lp
是實際打印設備的符號連接 - 不論打印機是點陣列印機、激光打印機、
排版打印機或圖表打印機均可使用這個指令。(關於符號連接的進一步說明見 ln(1))
由于安全上的考量,只有 root
和屬於打印監控程式的同一群組的使用者才可書寫到打印機,
使打印機進行打印。這就是必需使用 lpr、lprm 和 lpq 等指令才能使用打印機的理由。
因此,使用者必需使用 lpr 列印文檔。lpr 為打印進行所有初始設定, 然後將任務交給打印監控程序 - lpd。這個打印監控程序隨即告知打印機如何打印文檔。
在 lpr 執行過程中,它首先將有待打印的文檔抄到一個目錄(假脫機目錄), 然後讓該文檔留在該目錄中等待 lpd 進行打印。一旦 lpd 得知有文檔等待打印, 它就自行生成一個備份(編程員稱為派生(forking))。這個派生的 lpd 監控程序就會打印有待打印的文檔, 同時原 lpd 仍繼續等待後面可能發出的打印指令。通過這種方式,Linux 系統可同時處理列隊打印任務。
使用 lpr(1) 指令的語法如下:
$ lpr [ options ] [ filename ... ]
#
# (譯註:$ lpr [ 選項 ] [ 文檔名 ... ])
#
如果 filename (譯註:文檔名)
沒有標示,lpr 認為將由標準輸入口(通常為鍵盤或另一程式的輸出)提供輸入。通過這種方法,
使用者可將一個程式的輸出導入打印假脫機程序。例如,
$ cat thesis.txt | lpr
或
$ pr -l60 thesis.txt | lpr
均把運行的結果導入打印機印出。
lpr 指令還接受各種打印選項參數,使使用者能控制打印方式。最常用的選項參數有: -Pprinter 指明用何種打印機、-h 不印突發錯頁、-s 建立符號連接, 並且不將文檔抄到假脫機目錄(便于處理長文檔)和 -#num 標明打印份數。 具體使用 lpr 的例子如下:
$ lpr -#2 -sP dj thesis.txt
這個指令會在假脫機目錄內為稱為 dj 的打印機建立一個連接 thesis.txt
文檔的符號連接,然後由 lpd 對其進行打印。印完之後,它還會再打印一次 thesis.txt
(譯註:共印兩份)。
關於 lpr 使用的所有選項參數,見 lpr(1)。
使用 lpq 指令可察看當前的打印隊列。如直接使用指令,不加選項參數, 可察看默認打印機的打印隊列情況。
lpq 的結果有許多用途。
$ lpq
lp is ready and printing (譯註:打印機準備打印,下面列出打印信息)
Rank Owner Job Files Total Size
active mwf 31 thesis.txt 682048 bytes
對任何一個打印系統而言,都需要有一個取消打印任務的工具軟件。在 Linux 系統中,可用 lprm。
$ lprm -
上述指令取消使用者發出的所有打印指令。如果只要取消一個打印任務,可用 lpq 查明打印任務編號,然後將該編號作為參數用于 lprm 指令。例如:
$ lprm 31
取消默認打印機第 31 號打印任務 (thesis.txt
)。
lpc(8) 程式用來控制 lpd 提供打印的打印機。通過 lpc 程式可控制打印機的打印功能、 打印任務列隊、重新安排列隊次序和提供打印機和列隊狀況。 lpc 多數用于設置系統時一機配置多打印機的情況。
$ lpc
上述指令啟動 lpc 程式。在不設置任何參數的情況下,這使用戶進入互動模式,此後可開始輸入指令。 使用 lpc 的另一個方式是從指令行輸入參數。
$ lpc status all
所有可用的指令均在 lpd 的使用說明(man page)內可以查到。此處列出一些主要指令。指令中作為
選項 列出的部分可以是打印機名(lp、print 等)或關鍵字 all
,此處表示所有打印機。
RedHat 的 printtool 是一個非常好用的工具。它幾乎無所不能。下文說明如何通過 RedHat 4.0 在并聯埠接連 HP LJ 4L 的方法(此法也可用于其他 RedHat 版本)。
利用這種方法可為一台打印機設定多種打印方式,例如為各種打印設定不同的紙張尺寸、分辨率等。