プリンタを使う

この節では, FreeBSD で設定したプリンタを使う方法について説明 します. ここでは, ユーザレベルでのコマンドを概説します.

lpr(1)

印字をおこないます.

lpq(1)

プリンタキューを調べます.

lprm(1)

プリンタキューにあるジョブを削除します.

管理者用コマンド lpc(8) もありますが, これは 「プリンタを管理する」 に記 します. このコマンドは, プリンタやそのキューの制御のために用い られます.

lpr(1), lprm(1), そして lpq(1) の 3 コマンドは, -Pprinter-name オプションをとり, これによって, /etc/printcap のように操作の対象となる プリンタやキュー を指定します. これによって, 様々なプリンタに対してジョブを送る , 取り消す, 調査することができます. -P が使われなかった場 合は, これらのコマンドは PRINTER 環境変数で指定されたプリンタ を使用します. そして, PRINTER 環境変数がなかった場合は, これ らのコマンドはデフォルトのプリンタ lp を使います.

以下では, デフォルトプリンタ という用語が意味するプリンタ は, PRINTER 環境変数で指定されたプリンタ, もしくは, PRINTER 環境変数がない場合は, lp という名前のプリンタです.

印字する

ファイルを印字するためには, 次のように入力してください.

% lpr filename ...

これにより, 入力されたファイルのそれぞれをデフォルトのプリンタ から印字します. ファイル名が与えられなかった場合, lpr(1) は標準入力から印字するデータを読み込みます. 例えば, 次のコマン ドにより, ある重要なシステムファイルが印字されます.

% lpr /etc/host.conf /etc/hosts.equiv

印字させるプリンタを選択するためには, 次のように入力します.

% lpr -P printer-name filename ...

次の例では, プリンタ rattan に, カレントディレクトリにあ るファイルの詳細なリストを印字しています.

% ls -l | lpr -P rattan

上記の lpr(1) コマンドではファイル名の指定がないので, lpr は標準入力から印字するデータ, この場合, ls -l コマンドの出力, を読み込みます.

lpr(1) コマンドでは, 出力の整形を制御したり, ファイル変換を 適用したり, 複数部数のコピーを作成したり, などといた様々な幅広 いオプションを受け付けることもできます. 詳細については, 「 その他の印字オプション」をご 覧ください.

ジョブの処理状況を調べる

lpr(1) コマンドを使って印字をする場合, プリントしようと するデータは ``プリントジョブ'' と呼ばれる箱に一緒に置かれ, こ れが LPD スプーリングシステムに送られます. プリンタにはそれぞ れ, ジョブ用のキューがあり, 送られてきたジョブはあなたや他のユー ザからの別のジョブと一緒にそのキューで並んで, 処理される順番を 待ちます. プリンタは到着順にこれらのジョブの印字をおこないます.

デフォルトプリンタのキューの状態を表示するには, lpq(1) と入 力します. プリンタを指定するときは, -P オプションを使い ます. 例えば, 次のコマンド

% lpq -P bamboo

は, プリンタ bamboo のキューの状態を表示します. この 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

この例では, bamboo のキューに3つのジョブがあることが分か ります. 最初のジョブはユーザ kelly からのものであり, ``ジョ ブ番号''9が割り当てられています. プリンタのすべてのジョブには一意 なジョブ番号が付けられています. ほとんどの場合, このジョブ番号 は無視することができますが, ジョブをキャンセルするときにはこの 番号が必要になります. このことの詳細については, 「ジョブの削除 」をご覧ください.

ジョブ番号9のジョブは2つのファイルを処理します. すなわち, lpr(1) のコマンドラインに複数のファイル名が与えられたときは, 1つのジョブとして扱われるのです. このジョブは, 現在, アクティ ブジョブ (``Rank'' の欄の active という後に注目) になってい ます. これは, プリンタからそのジョブが現在印字されているはずで あることを意味しています. 2番目のジョブでは, lpr(1) コマン ドに標準入力からデータが与えられています. 3番目のジョブはユー ザ mary から与えられました. このジョブのサイズはとても大きくなっ ています. 彼女がプリントしようとしたファイルのパス名はここで表 示させるには長すぎるため, lpq(1) コマンドはドットを3つだけ 表示しています.

lpq(1) からの 出力で一番最初の行もまた有益な情報を与えていま す. この行から, プリンタが現在何をしているか (あるいは, 少なく とも LPD がプリンタが していると思っていること) が分かります.

lpq(1) コマンドは -l オプションもサポートしています. こ れにより, 詳しい情報が表示されます. lpq -l の実行例を次 に示します.

waiting for bamboo to become ready (offline ?)
kelly: 1st               [job 009rose]
       /etc/host.conf            73 bytes
       /etc/hosts.equiv              15 bytes

kelly: 2nd               [job 010rose]
       (standard input)              1635 bytes

mary: 3rd                [job 011rose]
      /home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytes

ジョブの削除

印字するようジョブを 送った後で印字を中断したくなったときは, lprm(1) コマンドで, キューの中からそのジョブを削除することが できます. 大抵の場合, アクティブジョブでさえも lprm(1) を使っ て削除することができますが, そのジョブの一部またはすべてが印字さ れてしまうかもしれません.

デフォルトプリンタへのジョブを削除するためには, 最初に, lpq(1) を使ってそのジョブ番号を調べます. すなわち, それから, 次のように入力して, ジョブを削除します.

% lprm job-number

特定のプリンタへのジョブを削除するときは, -P オプション を使ってそのプリンタを指定します. 例えば, プリンタ bamboo のキューからジョブ番号 10のジョブを削除するには次のようにします.

% lprm -P bamboo 10

lprm(1) コマンドには略記法がいくつかあります.

lprm -

あなたが (デフォルトプリンタへ) 送ったジョブをすべて削除し ます.

lprm user

ユーザ user が (デフォルトプリンタへ) 送ったジョブ をすべて削除します. 他のユーザのジョブを削除できるのはスー パユーザだけです. あなたは, あなた自身のジョブしか削 除することはできません.

lprm

ジョブ番号もユーザ名もシンボル -も指定されない ときは, lprm(1) は現在のアクティブジョブを, そのジョ ブを送ったのがあなた自身であるときに限り, デフォルトプ リンタから削除します. ただし, スーパユーザは任意のア クティブジョブを削除することができます.

上記の略記法をデフォルトプリンタではなく 特定のプリンタに対して おこなうときは, -P オプションでそのプリンタを指定するだけよ いのです. 例えば, プリンタ rattan のキューへあなたが送っ たジョブをすべて削除するためには次のようにします.

% lprm -P rattan -

Note: ネットワーク環境で作業をしている場合, あるホストか ら送られたプリンタジョブは, これを送ったホストで lprm(1) を 使った場合に限って, これを削除することができます. 他のホストで 同じプリンタを使えたとしても, このジョブを削除することはできま せん. 次の例では, 他ホストからジョブを削除することを試みていま す.

% 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
    

その他の印字オプション

lpr(1) コマンドには, テキストの整形や, 図や他のファイル形 式の変換, 複数部コピーの生成, ジョブの扱いなどをを制御すること ができます. この節では, これに関するオプションについて記してい ます.

整形と変換に関するオプション

以下の lpr(1) 用のオプションはジョブにおける ファイルの 整形の制御に関するものです. このオプションは, ジョブにプレイン テキストが含まれない場合や pr(1) ユーティリティを使ってプレイ ンテキストを整形する場合に用いてください.

次の例では, プリンタ bamboo に (TeX 組版システムによる) DVI ファイル fish-report.dvi を印字しています.

% lpr -P bamboo -d fish-report.dvi

このオプションは, ジョブに含まれるすべてのファイルに対して適用さ れます. したがって, 1つのジョブに (例えば) DVI ファイルと ditroff ファイルを混在させることはできません. その代わりに, ファイルを 形式毎に別々のジョブに分け, それぞれのジョブでその形式用の変換 オプションを使って印字してください.

Note: -p-T を除くすべてのオプションを使用 するためには, 出力先プリンタ用の変換フィルタが必要です. 例えば, -d オプションを使用するには, DVI 用の変換フィルタが必要 です. 詳細については, 「 変換フィルタ」で説明しています.

-c

cifplot ファイルを印字します.

-d

DVI ファイルを印字します.

-f

FORTRAN プログラムを印字します.

-g

plot のデータを印字します.

-i number

出力に対して, number カラム分の字下げをおこないます. number が省略されると, 8カラム分字下げされます. このオプションはある変換フィルタと一緒の指定されたとき のみに機能します.

Note: -i と数字の間に空白を入れてはいけません.

-l

制御文字を含む文字通りの テキストデータを印字します.

-n

ditroff (device independent troff) データ を印字します.

-p

印字する前に pr(1) によってプレインテキストを整形し ます. 詳細については pr(1) をご覧ください.

-T title

pr(1) コマンドにより生成されるヘッダを, ファイル名の 代わりに title とする. このオプションは, -p と一緒に使ったときのみ機能する.

-t

troff データを印字します.

-v

ラスタのデータを印字します.

次の例では, ls(1) の マニュアルを美しく整形したものをデフォ ルトプリンタで印字しています.

% zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t

zcat(1) コマンドで ls(1) のマニュアルのソースファイルの圧 縮を復元し, これを troff(1) コマンドに渡しています. これによ り, ソースファイルが整形され, GNU troff の形式となります. そ の結果は lpr(1) に渡され, LPD スプーラへジョブの要求が発せ られます. lpr(1) には -t オプションが使われているため, スプーラにて, GNU troff の形式からジョブを印字したときにデフォ ルトプリントが解釈できる形式へと変換されます.

ジョブに関するオプション

以下のオプションは, lpr(1) によって, そのジョブを特殊 な扱いにするよう LPD に指示するためのものである.

-# copies

ジョブに含まれるファイルのそれぞれを 1部だけ印字するの ではなく, copies 部のコピーを生成させるものです. 管理者によっては, プリンタの消耗を避け, コピー機による 複製を奨励するためにこのオプションの使用が禁止されてい るかもしれません. これに関しては, 「 複数部のコピーの印字を制限する 」をご覧ください.

次の例では, デフォルトプリンタで parser.c を3 部コピーし, 次に, parser.h を3部コピーしています.

% lpr -#3 parser.c parser.h
-m

印字ジョブが完了した後で, メールを送ります. このオプショ ンを付けると, LPD システムはジョブの扱いが終了したと きに, あなたのアカウントにメールを送ります. メールのメッ セージには, ジョブが正常終了したのか, あるいは, 何か異 常があり, (しばしば) その異常が何であったのかが書かれて います.

-s

印字ファイルをスプールディレクトリにコピーせず, 代わりに, シンボリックリンクを作成するよう指示します.

印字させるジョブのサイズが大きいとき, このオプショ ンを使うと便利かもしれません. このオプションにより, スプー ルディレクトリの容量が節約されます (それに, 巨大なジョ ブのお陰でスプールディレクトリのあるファイルシステムの 空き容量がなくなってしまうかもしれません). さらに, LPD がいちいちすべてのデータをコピーする必要がなくなりま すので, 時間の節約にもなります.

ただし, 欠点もあります. LPD はオリジナルのファイルを 直接参照するので, 印字が終了するまでそのファイルを変更 したり削除することができません.

Note: リモートのプリンタで印字している場合, LPD は, 結局のところ, ローカルホストからリモートホストにファ イルをコピーする必要があります. したがって, -s オプ ションはローカルのスプーリングディレクトリの 空き容量を 節約するだけで, リモート側では節約されません. それに も関わらず, このオプションはそれでも有用です.

-r

ジョブに含まれるファイルを, スプーリングディレクトリに ファイルをコピーした後に削除します. もしくは, -s オプションと一緒に使われた場合は, 印字終了後に削除され ます. このオプションの使用には十分注意して下さい.

ヘッダページ用オプション

以下のオプションにより, ジョブのヘッダページに通常印字さ れるテキストを lpr(1) に調整させることができます. 対象のプリ ンタからヘッダページが出力されない場合は, これらのオプションは 何の効力も持ちません. ヘッダページの設定に関する情報については, 「 ヘッダページ」を参照してください.

-C text

ヘッダページに印字されるホスト名を text に置き換 えます. なお, ホスト名の場所には, 通常, ジョブの要求が あったホストの名前が印字されます.

-J text

ヘッダページに印字されるジョブ名を text に置き換 えます. ジョブ名の場所には, 通常, ジョブの最初のファイ ル名, または, 標準入力からデータが印字されたときは stdinが印字されます.

-h

ヘッダページを出力を禁止します.

Note: サイトによっ ては, そのヘッダページの生成方法により, このオプション の効果が現れないかもしれません. 詳細は, 「 ヘッダページ」をご覧ください.

プリンタを管理する

プリンタの管理者として, プリンタの設置, 設定, そして, それ らのテストをおこなう必要がありました. lpc(8) コマンドにより, これまでとは別な管理方法がプリンタと対話的におこなわれます. lpc(8) により, 次のことが可能となります.

最初に用語に関する注意をしておきます. プリンタが停止してい るとは, キューの中にあるどのジョブも印字されることがない状態 を言います. この状態においても, ユーザはまだジョブの要求をおこなう ことができますが, これらのジョブはキューの中で, プリンタがスタートする状態になるまで, あるいは, キューの内容が削除され るまで待たされることになります.

キューが禁止状態にあるとは, (root 以外の) すべてのユーザが プリンタにジョブを要求することができない状態のことを言います. キューが許可状態にある場合は, ジョブの入力が許可されます. キューが禁止状態にある場合でも, プリンタをスタートす る状態にすることは可能です. この場合は, キューが空になるまで, キュー内のジョブの印字が続けられます.

一般的に, lpc(8) コマンドを使用するには root の権限を持って いる必要があります. 一般のユーザも lpc(8) コマンドを使うこと はできますが, プリンタの状態を取得することとハングしたプリンタ を再スタートすることだけに使用が制限されています.

以下に, lpc(8) コマンドに関する説明の要約を述べます. ほとん どのコマンドでは, 操作対象となるプリンタを指定するため printer-name 引数を与えます. printer-name の代わり に all が与えられると, 操作は /etc/printcap 内に ある全プリンタに対しておこなわれることになります.

abort printer-name

現在のジョブをキャンセルし, プリンタを停止させます. キュー が許可状態にある場合は, ユーザはまだジョブを入力する ことができます.

clean printer-name

プリンタのスプーリングディレクトリから, ジョブの古いファ イルを削除します. 状況によって, とりわけ, 印字途中でエ ラーが発生していたり, 管理操作が頻発していた場合には, ジョブで作られたファイルを LPDが完全に削除しないことが あります. このコマンドでは, スプーリングディレクトリに 入っていないファイルを見つけ出し, それを削除しています.

disable printer-name

キューに新しいジョブを入れることを禁止します. プリンタ がスタート状態にあるときは, キューに残っているジョブの 印字は続けられます. ただし, キューが禁止状態にあったと しても, スーパーユーザ (root) は常にジョブを入力するこ とができます.

このコマンドは, 新しいプリンタやフィルタを設置している 間に使用すると有用です. すなわち, キューを禁止状態にし ておくと, root によるジョブのみが入力されます. そして, その他のユーザは, テストが完了し, enable コマン ドでキューが再度許可状態になるまで, ジョブの入力はでき なくなります.

down printer-name message

プリンタをダウンさせます. これは, disable をおこなっ た後で, stop をおこなった場合と 等価になります. message は, ユーザが lpq(1) コマンドでプリンタ のキューの状態を調べたり, lpc status でプリンタの 状態を調べたときに, プリンタの状況として表示されるメッ セージです.

enable printer-name

プリンタのキューを許可状態にします. ユーザはジョブの入 力ができるようになりますが, プリンタがスタートの状態に なるまでは, プリンタからは何も印字されません.

help command-name

command-name コマンドのヘルプメッセージを表示しま す. command-name が指定されなかった場合は, 利用 できるコマンドの要約が表示されます.

restart printer-name

プリンタをスタートさせます. 通常のユーザは, LPD があ る異常な状況でハングしたときに限り, このコマンドを使用 することができます. しかし, stop または down コマンドにより, 停止状態にあるプリンタをスター トさせることはできません. restart コマンドは, abort の後に start をおこなったことと同じになり ます.

start printer-name

プリンタをスタートさせます. プリンタのキューにあるジョ ブを印字することでしょう.

stop printer-name

プリンタを停止します. プリンタは, 現在のジョブを終了さ せ, そして, キューにあるその他のジョブは印字しません. プリンタが停止状態にあったとしても, まだ, 許可状態にあ るキューに対して, ジョブを送ることができます.

topq printer-name job-or-username

printer-name のキューに対して, ジョブ番号 job のジョブ, または, ユーザ username から送 られたジョブを置き換えて, キューの先頭に持ってきます. このコマンドに関しては, printer-name の代わりに all を使用することはできません.

up printer-name

プリンタをアップ状態にします. これの反対のコマンドが down です. start の次に enable をおこなっ たことと等しくなります.

コマンドラインから上記のコマンドを入力すると, lpc(8) はこれ を受け付けます. コマンドが入力されなかった場合は, lpc(8) は 対話モードに入り, exit, quit, または, ファイル終端 文字が入力されるまでコマンドの入力ができます.