FreeBSD handbook中文版 11 打印 (3)使用打印機(jī)
2024-07-26 00:29:03
供稿:網(wǎng)友
目錄
11.5 使用打印機(jī)
11.6 標(biāo)準(zhǔn)spooler 之外的選擇
=============================================================
11.5 使用打印機(jī)
這一節(jié)將告訴你如何在FreeBSD 下使用打印機(jī)。這里有份使用者等級命令的概述。
lPR
打印工作
lpq
檢查打印機(jī)隊(duì)列
將工作從打印機(jī)隊(duì)列中刪除
lprm
也有系統(tǒng)維護(hù)使用的命令,lpc,用來控制打印機(jī)及其隊(duì)列。在管理打印機(jī)這一節(jié)里有
更詳細(xì)的說明。
lpr,lprm 和lpq 這三個(gè)命令都接收-P printer-name 這個(gè)指定在/etc/printcap 文件里設(shè)定
的打印機(jī)/隊(duì)列的參數(shù)。允許你對不同的打印機(jī)做要求、刪除,以及檢查工作。如果你沒有
使用-P 參數(shù),那么這些命令將使用PRINTER 環(huán)境變量所指定的打印機(jī)。若你也沒有
PRINTER 環(huán)境變量,那么這些命令則會對別名為lp 的打印機(jī)指定動作。
此后,默認(rèn)打印機(jī)指的就是以PRINTER 環(huán)境變量設(shè)定的打印機(jī)或是當(dāng)lp 環(huán)境變量不存
在時(shí),別名為lp 的打印機(jī)。
11.5.1 打印工作
要打印文件,輸入:
% lpr filename ...
這將把所有列出的文件以默認(rèn)打印機(jī)打印。如果你沒有指定任何文件,那么lpr 將會從
標(biāo)準(zhǔn)輸入讀入資料。下面這個(gè)例子將會打出一些重要的系統(tǒng)文件:
% lpr /etc/host.conf /etc/hosts.equiv
若要指定以特定的打印機(jī)輸出,輸入:
% lpr -P printer-name filename ...
下面這個(gè)例子會將當(dāng)前目錄下的文件列表從名為rattan 打印機(jī)輸出:
% ls -l | lpr -P rattan
因?yàn)閘pr 命令之后沒有指定任何一個(gè)文件,lpr 將會從標(biāo)準(zhǔn)輸入讀入資料以打印出來,即
由ls -l 命令所產(chǎn)生的輸出。
第61 頁FreeBSD 使用手冊
lpr 命令有許多參數(shù)如控制輸出格式、套用文件轉(zhuǎn)換、一次打印出多份,等等。請參看
打印參數(shù)這一節(jié)里有更詳細(xì)的說明。
11.5.2 檢查打印工作
當(dāng)你使用lpr 打印時(shí),一起送到LPD spooling 系統(tǒng)的資料稱為一個(gè)“打印工作”。每一
臺打印機(jī)都有一個(gè)打印工作隊(duì)列,而你的打印工作和其它的打印工作一樣在隊(duì)列里等待打
印。打印機(jī)會將先打印先送達(dá)的工作。
要顯示默認(rèn)打印機(jī)的隊(duì)列,輸入lpq 即可。若要指定打印機(jī),請指定-P 參數(shù)。例如
% lpq -P bamboo
這個(gè)命令會顯示叫做bamboo 的打印機(jī)隊(duì)列。這里有一份lpq 命令的輸出例子:
bamboo is ready and printing
Rank Owner Job Files Total Size
active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes
2nd kelly 10 (standard input) 1635 bytes
3rd mary 11 ... 78519 bytes
上面顯示一共有三個(gè)工作在bamboo 的隊(duì)列里。第一個(gè)工作由使用者kelly 送出,“工作
代碼”為9。每一個(gè)工作都會有個(gè)唯一的工作代碼。通常你可以忽略工作代碼,但是如果你
要取消某個(gè)工作時(shí),你就會需用知道工作號碼。詳情請參看刪除隊(duì)列這一節(jié)。
工作號碼9 里包含了兩個(gè)文件。用lpr 送多個(gè)文件將會被視為同一個(gè)工作。這是目前正
在處理的工作(注意“Rank”欄標(biāo)示的active),即打印機(jī)現(xiàn)在應(yīng)該就在打印這個(gè)工作。第二
個(gè)工作的資料是用lpr 從標(biāo)準(zhǔn)輸入接收資料的。而第三個(gè)工作是由使用者mary 送出的。這
是一個(gè)較大的工作。而她要打印的文件因?yàn)樘L而放不下,所以lpq 命令只顯示三個(gè)點(diǎn)。
lpq 最前面的輸出通??梢钥闯龃蛴C(jī)現(xiàn)在在做什么(至少是LPD 覺得打印機(jī)現(xiàn)在應(yīng)該是在
做什么)。
lpq 命令可以使用-l 參數(shù)以得到更詳細(xì)的列表。這里有一個(gè)lpq -l 的輸出范例:
waiting for bamboo to become ready (offline ?)
kelly: 1st [job 009rose]
/etc/host.conf 73 bytes
/etc/hosts.equiv 15 bytes
第62 頁FreeBSD 使用手冊
kelly: 2nd [job 010rose]
(standard input) 1635 bytes
mary: 3rd [job 011rose]
/home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytes
11.5.3 刪除打印工作
如果你改變主意不想打印你的工作了,你可以用lprm 命令把他們從打印隊(duì)列中刪除。
通常你也可以用lprm 把一個(gè)正在處理的工作刪除,不過可能還是會打印出部分或是全部的
文件。
要從默認(rèn)打印機(jī)里刪除工作,首先,用lpq 找出工作代碼,然后輸入:
% lprm job-number
如果要從指定的打印機(jī)刪除工作,那么用-P 參數(shù)。下列的命令從打印機(jī)bamboo 的隊(duì)
列中刪除工作號碼為10 的工作:
% lprm -P bamboo 10
lprm 命令有一些常用的用法:
lprm -
將(默認(rèn)打印機(jī))里所有屬于你的工作都刪除。
% lprm -P rattan -
lprm user
將(默認(rèn)打印機(jī))里所有屬于使用者user 的工作皆刪除。只有超級使用者可以刪除其
它人的工作,你只能刪除你自己的工作。
lprm
若不指定工作號碼、使用者名稱或是- ,lprm 將刪除目前默認(rèn)打印機(jī)正在處理的工
作,但前提是這個(gè)工作必需是屬于你的。超級使用者可以刪除任何目前正在處理的
工作。
若使用-P 參數(shù)配合上述的常用用法,則上述的動作將對指定的打印機(jī)動作而不是對默
認(rèn)打印機(jī)。下列的命令將會刪除目前使用者在打印機(jī)rattan 隊(duì)列中的所有工作:
注意: 如果你使用的是網(wǎng)絡(luò)打印機(jī),lprm 將只允許你從輸出工作的機(jī)器刪除該工作。
第63 頁FreeBSD 使用手冊
下面這些命令可以說明這個(gè)概念:
% lpr -P rattan myfile
% rlogin orchid
% lpq -P rattan
Rank Owner Job Files Total Size
active seeyan 12 ... 49123 bytes
2nd kelly 13 myfile 12 bytes
% lprm -P rattan 13
rose: Permission denied
% logout
% lprm -P rattan 13
dfA013rose dequeued
cfA013rose dequeued
11.5.4 在純文字之外:打印參數(shù)
lpr 命令提供控制格式輸出、轉(zhuǎn)換圖形及其它文件格式、一次打出多份、工作處理方式
等參數(shù)。這一節(jié)將一一介紹。
11.5.4.1 格式輸出與轉(zhuǎn)換參數(shù)
下列的lpr 命令控制文件輸出的格式。如果你的打印工作里沒有純文字或是你希望純文
字通過lpr 處理后以特定的格式輸出時(shí),你可以使用這些參數(shù)。
舉例來說,下面的命令從叫做bamboo 的打印機(jī)將DVI 文件(由TeX 排版系統(tǒng)產(chǎn)生)
fish-report.dvi 打出:
% lpr -P bamboo -d fish-report.dvi
這些參數(shù)將套用這個(gè)工作里的每個(gè)文件,所以你不能把DVI 和ditroff 文件在同一個(gè)工
作里一起處理,而要分兩次工作用不同的轉(zhuǎn)換參數(shù)。
注意: 這些參數(shù)除了-p 和-T 需要為指定的打印機(jī)安裝轉(zhuǎn)換的過濾程序外,其它的都不
用。舉例來說,參數(shù)-d 需要安裝DVI 轉(zhuǎn)換過濾程序。轉(zhuǎn)換用的過濾程序這一節(jié)有較詳細(xì)的
說明。
c
第64 頁d
f
g
i number
l
n
p
T title
t
v
下面是一個(gè)以默認(rèn)打印機(jī)打印格式化過的ls manual page 的例子:
zcat 命令將ls 原始數(shù)據(jù)解壓縮并傳送給troff 命令,將該數(shù)據(jù)格式化后以GNU troff 格式
輸出給lpr 送給LPD spooler 處理。因?yàn)槲覀冊谑褂胠pr 命令時(shí)使用了-t 參數(shù),所以spooler
在打印時(shí)會把GNU troff 轉(zhuǎn)換成默認(rèn)打印機(jī)所能了解的格式。
將輸出縮進(jìn)number 個(gè)字符。如果你省略number,則縮進(jìn)8 個(gè)字符。這個(gè)
參數(shù)只有在某些轉(zhuǎn)換用的過濾程序上有效。
原封不動的打出文字?jǐn)?shù)據(jù),包括控制字符。
打印ditroff (device independent troff) 數(shù)據(jù)。
在打印之前以pr 格式化輸出。請參見pr 以取得更多的信息。
以title 取代pr header 中的文件名。這個(gè)參數(shù)只有在配合-p 參數(shù)使用時(shí)才有
效。
打印troff 數(shù)據(jù)。
打印raster 數(shù)據(jù)。
% zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t
打印cifplot 文件。
打印DVI 文件。
打印FORTRAN 文本文件
打印plot 數(shù)據(jù)。
注釋: 請不要在-i 和數(shù)字之間加上空白
FreeBSD 使用手冊
第65 頁11.5.4.2 工作處理方式參數(shù)
# copies
m
s
r
11.5.4.3 Header Page 參數(shù)
這些參數(shù)就沒有作用了。請參見Header Pages 這一節(jié)以了解如何設(shè)定header pages。
1. C text
將同一工作里的每個(gè)文件都打出copies 份。系統(tǒng)管理員可以將這個(gè)參數(shù)關(guān)閉,以減
低打印機(jī)的障礙并鼓勵(lì)使用復(fù)印機(jī)。請參見限制打印多份這一節(jié)的說明。
這個(gè)例子將會從默認(rèn)的打印機(jī)打出三份parser.c,然后打出三份parser.h:
% lpr -#3 parser.c parser.h
完成打印工作后,便通知使用者。若使用這個(gè)參數(shù),當(dāng)打印工作完成后,LPD 系統(tǒng)
將會寫信給你。在這封信中將會告訴你你的工作是否成功地打出或是有錯(cuò)誤以及
(通常會)告訴你錯(cuò)誤的原因。
不要將要打印的文件拷貝到spooling 目錄,而只要以symbolic links 的方式取代。
如果你要打印大的文件,你可考慮用這個(gè)參數(shù)。這可以節(jié)省你spooling 目錄的空間(否
則spooling 目錄所在的文件系統(tǒng)可能會空間不足)。同時(shí)他也可以省下LPD 將文件
拷貝到spooling 目錄所需的時(shí)間。
這么做有一個(gè)缺點(diǎn)就是當(dāng)打印還沒結(jié)束時(shí),你不能修改或刪除打印中的文件,因?yàn)?
LPD 在打印時(shí)還會用到原始的文件。
Note: 如果你是用網(wǎng)絡(luò)打印機(jī)打印,那么LPD 還是會把你的文件拷貝到遠(yuǎn)程的機(jī)器,
所以參數(shù)-s 只有在本機(jī)上打印時(shí)才有用。
當(dāng)你的文件已經(jīng)拷貝到spooling 目錄時(shí),或是用-s 參數(shù)且打印完成時(shí),就將原本的
文件刪除。請小心使用這個(gè)參數(shù)!
有一些參數(shù)是設(shè)定lpr 打印在header pages 上的文字。如果打印header pages 的話,那么
將header page 上的機(jī)器名稱以text 取代。機(jī)器名稱通常是打印送出工作的機(jī)器名稱。
2. J text
FreeBSD 使用手冊
下列的參數(shù)將會讓lpr 告訴LPD 以特別的方式處理工作:
第66 頁FreeBSD 使用手冊
將header 上的工作名稱以text 取代。工作名稱通常是一份打印工作里的第一個(gè)文件名
稱,如果你是從標(biāo)準(zhǔn)輸入打印數(shù)據(jù)的話,那么將會是stdin。
3. h
不要打印header page。
注釋: 在某些機(jī)器上,由于header pages 產(chǎn)生的方式不同, 這個(gè)選項(xiàng)可能會無效。請參
見Header Pages 這一節(jié)里更詳細(xì)的說明。
11.5.5 管理打印機(jī)
作為打印機(jī)管理員,你必需安裝、設(shè)定以及測試它們。你可以用lpc 這個(gè)命令:
1. 讓打印機(jī)開始工作或停止工作。
2. 開啟或關(guān)閉他們的隊(duì)列。
3. 重新安排隊(duì)列里工作的順序。
我們得先知道的一個(gè)概念是:如果一個(gè)打印機(jī)已經(jīng)停止工作了,他將不會將隊(duì)列里的任
何東西打出。使用者仍然可以將工作送過來,但是這些工作將會在隊(duì)列里等待直到打印機(jī)開
始工作或是隊(duì)列被清空了。
如果隊(duì)列被關(guān)閉了,那么沒有使用者(除了root 之外)可以將工作送給打印機(jī)。只有已
經(jīng)開啟隊(duì)列的打印機(jī)可以接收其它人將工作送過來。一個(gè)打印機(jī)可以為一個(gè)已經(jīng)關(guān)閉的隊(duì)列
開始工作。在這個(gè)情況下,原本存在隊(duì)列中的工作將會一一的被打印直到?jīng)]有工作為止。
通常,擁有root 權(quán)限的使用者才可以用lpc 下命令。一般的使用者只能用lpc 命令來
查詢打印機(jī)工作以及重新啟動當(dāng)?shù)舻拇蛴C(jī)。
以下是一份lpc 的命令列表。大部份的命令都需要指定printer-name 以指定要對哪一
臺打印機(jī)下命令。printer-name 也可以用all 表示所有排在/etc/printcap 里的打印機(jī)。
abort printer-name
取消目前的工作,同時(shí)也停止打印機(jī)工作。如果隊(duì)列被關(guān)閉,使用者仍然可以送工作給
打印機(jī)。
clean printer-name
將打印機(jī)spooling 目錄中的舊文件刪除。有時(shí)候LPD 可能沒有把打印完的工作從
spooling 目錄中刪除,尤其是當(dāng)打印的工作發(fā)生錯(cuò)誤時(shí)或是有其它命令將其中止時(shí)。
第67 頁FreeBSD 使用手冊
這個(gè)命令將會找出這些不該存在于spooling 目錄中的文件并將他們刪除。
disable printer-name
關(guān)閉隊(duì)列以停止接收新工作。如果打印機(jī)并未停止工作,那么隊(duì)列中剩余的工作將會繼
續(xù)打印直到隊(duì)列中沒有工作為止。關(guān)閉隊(duì)列后,root 仍然可以繼續(xù)送工作給打印機(jī)。
這個(gè)命令在你測試一臺新打印機(jī)或是新的過濾程序時(shí)特別有用:你可以將隊(duì)列關(guān)起來然
后以root 測試打印的工作。其它使用者則無法將工作送過來,除非你測試完畢后將隊(duì)
列以enable 命令打開。
down printer-name message
這個(gè)命令等于是disable 后再接著stop 命令。其中message 是當(dāng)有使用者以lpq 檢查
打印機(jī)隊(duì)列或是以lpc status 命令檢查打印機(jī)狀態(tài)時(shí)所顯示的信息。
enable printer-name
將打印機(jī)隊(duì)列打開。這樣使用者就可以將工作送給打印機(jī),但是只有在打印機(jī)已經(jīng)開始
工作后,隊(duì)列里的工作才會被打出來。
help command-name
將command-name 命令的說明打出。如果沒有指定command-name,那么將會打出所有可
用的命令。
restart printer-name
重新啟動打印機(jī)。如果因?yàn)槟承┣闆r使得LPD 當(dāng)?shù)袅?,一般的使用者可以用這個(gè)命令讓
打印機(jī)重新開始工作。但是他們無法用這個(gè)命令讓由stop 或down 命令停止的打印機(jī)開
始工作。restart 命令等于abort 再接著start 命令。
start printer-name
讓打印機(jī)開始工作。打印機(jī)會將隊(duì)列里的工作打出。
stop printer-name
停止打印機(jī)工作。打印機(jī)將會先完成目前的工作然后停止打印隊(duì)列中的任何工作。打印
機(jī)停止工作后,使用者仍然可以把工作送給一個(gè)未關(guān)閉的隊(duì)列中。
topq printer-name job-or-username
第68 頁FreeBSD 使用手冊
將打印機(jī)printer-name 隊(duì)列中工作代號為job 或是屬于使用者username 的工作移到隊(duì)
列的最前面。在這個(gè)命令里,你不可以將all 填在printer-name 上指定所有的打印機(jī)。
up printer-name
這是和down 命令相對的指令。等于是start 后再接著enable 命令。
lpc 能以參數(shù)的方式接收上述的命令。如果你不輸入任何命令,lpc 將會進(jìn)入交談模式,
在這里你可以一直輸入命令直到你以exit 命令、quit 命令或是輸入文件結(jié)尾字符為止。
11.6 標(biāo)準(zhǔn)spooler 之外的選擇
如果你讀完了這份文件,現(xiàn)在你應(yīng)該已經(jīng)徹底了解FreeBSD 提供的LPD spooling 系統(tǒng)。
不過你可能覺得這個(gè)系統(tǒng)有些缺點(diǎn),因此你可能會想到:“除此之外還有哪些spooling 系統(tǒng)(可
以配合FreeBSD 使用)?”
不幸的是,只有兩種選擇。它們分別是:
LPRng
LPRng 指的是“下一代的LPR” 。LPRng 是將PLP 完全重寫。Patrick Powell 和Justin Mason
(PLP 的主要負(fù)責(zé)人)一起合作LPRng。LPRng 的網(wǎng)站是ftp://dickory.sdsu.edu/pub/LPRng/。
PLP, the Portable Line Printer Spooler System
PLP 是以由Patrick Powell 所發(fā)展的軟件為基礎(chǔ),現(xiàn)在由網(wǎng)絡(luò)上的一群人共同維護(hù)發(fā)展。你
可以在(ftp://ftp.iona.ie/pub/plp/) 這個(gè)網(wǎng)站取得這個(gè)軟件。它和BSD LPD 很相似,不過加
強(qiáng)了一些功能,包括:
1. 更好的網(wǎng)絡(luò)支持,包括內(nèi)建一網(wǎng)絡(luò)打印機(jī)支持、以NIS管理的printcaps以及用NFS mount
的spooling 目錄。
2. 成熟的隊(duì)列管理。允許多臺打印機(jī)使用同一個(gè)隊(duì)列、在隊(duì)列之間傳送工作或是將隊(duì)列
重新傳給其它打印機(jī)。
3. 遠(yuǎn)程控制打印機(jī)
4. 工作優(yōu)先權(quán)設(shè)置
5. 較復(fù)雜的保密及訪問設(shè)置