この節では、LP 印刷サービスのディレクトリ構造、ファイル、およびログについて説明します。
LP 印刷サービスのクライアントコマンドは、FSG OpenPrinting Open Standard Print API (PAPI) のコンシューマになるように変更されました。これらの印刷コマンドは PAPI の階層の上に置かれています。詳細は、「Oracle Solaris OS での PAPI 実装」を参照してください。
次の表に、頻繁に使用する LP 印刷サービスのコマンドを示します。
表 12–2 LP 印刷サービスのコマンド
コマンド |
作業 |
マニュアルページ |
---|---|---|
enable |
プリンタを使用可能にする | |
cancel |
印刷要求を取り消す | |
lp |
1 つ以上のファイルをプリンタに送る | |
lpstat |
LP 印刷サービスの状態を出力する | |
disable |
1 台以上のプリンタを無効にする | |
accept |
印刷要求を特定の出力先の待ち行列に入れられるようにする | |
reject |
印刷要求が特定の出力先の待ち行列に入れられないようにする | |
lpadmin |
プリンタの構成を設定または変更する | |
lpfilter |
フィルタの定義を設定または変更する | |
lpforms |
あらかじめ印刷されたフォームを設定または変更する | |
lpadmin |
フォームを取り付ける | |
lpmove |
ある出力先から別の出力先に出力要求を移動する | |
lpsched |
LP 印刷サービススケジューラを起動する | |
lpshut |
LP 印刷サービススケジューラを停止する | |
lpusers |
デフォルトの優先順位と、LP 印刷サービスのユーザーが要求できる優先順位の制限を設定または変更する |
PAPI で使用するために変更された 印刷コマンドについては、「Oracle Solaris OS での PAPI 実装」を参照してください。
LP 印刷サービスは、次の機能を実行します。
ファイルを管理してローカル印刷要求をスケジュールする。
ネットワーク要求を受け取り、スケジュールする。
ファイルが正しく印刷されるように、必要に応じてフィルタを通す。
プリンタとインタフェースするプログラムを起動する。
印刷ジョブの状態を追跡する。
プリンタに装着されたフォームを追跡する。
現在装着されている印字ホイールを追跡する。
新しいフォームや別の印字ホイールを装着するよう警告を発する。
印刷問題に関する警告を発する。
/usr/lib/lp ディレクトリには、次の表に示すような LP 印刷サービスに使用されるデーモンとファイルが入っています。
表 12–3 /usr/lib/lp ディレクトリの内容
ファイル |
種類 |
説明 |
---|---|---|
bin |
ディレクトリ |
印刷警告、低速フィルタ、待ち行列管理プログラムを生成するファイルが入っている |
model |
ディレクトリ |
標準プリンタインタフェースプログラムが入っている |
postscript |
ディレクトリ |
LP 印刷サービスで提供されているすべての PostScript フィルタプログラムが入っている。これらのフィルタには、/etc/lp/fd ディレクトリ内の記述子ファイルが含まれる。これらのファイルは、フィルタの特性とその格納場所を LP 印刷サービスに指示する |
LP 印刷サービスのファイルは、次の表のようにいくつかのディレクトリに分散されています。
表 12–4 LP 印刷サービスのディレクトリ
ディレクトリ |
内容 |
---|---|
/usr/bin |
LP 印刷サービスのユーザーコマンド |
/etc/lp |
LP サーバー構成ファイルの階層 |
/usr/share/lib |
terminfo データベースディレクトリ |
/usr/lib/print |
lp 変換スクリプト、in.lpd デーモン、および printd デーモン。printd デーモンは /var/spool/print ディレクトリのすべての保留ジョブを 1 分間に 1 回転送する。転送するジョブがなくなると printd デーモンは終了する |
/usr/sbin |
LP 印刷サービスの管理コマンド。 |
/usr/lib/lp |
lpsched プログラム、バイナリファイル、PostScript フィルタ、および model ディレクトリ。model ディレクトリには、標準プリンタインタフェースプログラムが入っている |
/var/lp/logs |
LP ログファイル。lpsched.n には lpsched からのメッセージが記録され、requests.n には完了した印刷要求についての情報が記録される |
/var/spool/lp |
ファイルが印刷待ち行列に入れられるスプーリングディレクトリ |
/var/spool/print |
LP 印刷サービスのクライアント側要求格納域 |
/etc/lp/model/uri |
device-uri 情報を処理するインタフェーススクリプトの場所 |
lpsched デーモンが/etc/lp ディレクトリに格納する構成情報を、次の表に示します。
この表に一覧表示されている構成ファイルは非公開インタフェースです。これらのファイルは、今後のリリースで変更される可能性があります。現在の場所にあるファイルに依存する、または現在使用している形式のデータに依存するソフトウェアを構築しないようにしてください。
ファイル |
種類 |
説明 |
---|---|---|
classes |
ディレクトリ |
lpadmin -c コマンドで与えたクラスを識別するファイル |
fd |
ディレクトリ |
既存のフィルタの記述 |
filter.table |
ファイル |
印刷フィルタ照合テーブル |
forms |
ディレクトリ |
各フォームのファイルを格納する場所。最初は、このディレクトリは空になっている |
interfaces |
ディレクトリ |
プリンタインタフェースプログラムファイル |
logs |
/var/lp/logs へのリンク |
印刷動作のログファイル |
model |
/usr/lib/lp/model へのリンク |
標準プリンタインタフェースプログラム |
printers |
ディレクトリ |
各ローカルプリンタのディレクトリ。各ディレクトリには、個々のプリンタの構成情報と警告ファイルが入っている |
pwheels |
ディレクトリ |
印字ホイールファイルまたはカートリッジファイル |
ppd |
ディレクトリ |
ローカル待ち行列を PPD ファイルを使用して構成した場合、各 PPD ファイルのコピーがここに格納される |
これらの構成ファイルは、LPD ベースの印刷サーバー上の /etc/printcap ファイルと同じ機能を提供します。
これらのファイルの内容を確認できますが、ファイルを直接編集しないでください。代わりに、lpadmin コマンドを使用して構成を変更します。変更内容は /etc/lp ディレクトリ内の構成ファイルに入力されます。lpsched デーモンは、構成ファイルを管理して構成します。
/etc/lp/printers ディレクトリには、システムに認識されるローカルプリンタごとに 1 つずつサブディレクトリが入っています。次の例は、プリンタ sparc1 と luna の /etc/lp/printers サブディレクトリを示します。
$ ls -l /etc/lp/printers drwxrwxr-x 2 lp lp 512 Jan 23 23:53 luna drwxrwxr-x 2 lp lp 512 Jan 11 17:50 sparc1 |
プリンタ固有の各ディレクトリ内には、次の表に示すファイルがあります。
ファイル名 |
説明 |
---|---|
alert.sh |
警告に応答して実行するシェル |
alert.vars |
警告変数 |
configuration |
構成ファイル |
users.deny |
プリンタアクセスが拒否されるユーザーのリスト |
comment |
プリンタの説明 (備考欄) |
通常、プリンタ luna の構成ファイル /etc/lp/printers/luna/configuration は、次のようになっています。
Banner: on: Always Content types: PS Device: /dev/term/b Interface: /usr/lib/lp/model/standard Printer type: PS Modules: default |
/usr/share/lib ディレクトリには、terminfo データベースのディレクトリが入っています。このディレクトリには多数のタイプの端末とプリンタに関する定義が入っています。LP 印刷サービスは、 terminfo データベース内の情報を使用し、以下の作業を行います。
プリンタの初期化
選択されたページサイズ、文字ピッチ、行ピッチ、および文字セットの設定
一連のコードをプリンタに送信
各プリンタは、terminfo データベース内で短縮名を使用して識別されます。必要に応じて terminfo データベースにエントリを追加できますが、これは煩雑で時間のかかる作業です。詳細は、「サポートされていないプリンタの terminfo エントリを追加する」を参照してください。
各プリンタタイプに関する情報は、terminfo データベース (/usr/share/lib/terminfo) に格納されています。この情報には、プリンタの機能と初期制御データが含まれます。インストールするプリンタは、terminfo データベース内のエントリに対応していなければなりません。
$ pwd /usr/share/lib/terminfo $ ls 1 3 5 7 9 B H P a c e g i k m o q s u w y 2 4 6 8 A G M S b d f h j l n p r t v x z $ |
各サブディレクトリには、端末またはプリンタに関してコンパイル済みのデータベースエントリが入っています。各エントリは、プリンタまたは端末のタイプの頭文字別に編成されています。たとえば、Epson プリンタがある場合は、/usr/share/lib/terminfo/e ディレクトリ内を探すと、Epson プリンタの特定のモデルが見つかります。
$ cd /usr/share/lib/terminfo/e $ ls emots ep2500+high ep48 ergo4000 exidy2500 env230 ep2500+low epson2500 esprit envision230 ep40 epson2500-80 ethernet ep2500+basic ep4000 epson2500-hi ex3000 ep2500+color ep4080 epson2500-hi80 exidy $ |
Epson プリンタのエントリは、epson で始まります。
NEC プリンタがある場合は、/usr/share/lib/terminfo/n ディレクトリ内を探すと、対象の NEC プリンタモデルが見つかります。
$ cd /usr/share/lib/terminfo/n $ ls ncr7900 ncr7900iv netronics network nuc ncr7900-na ncr7901 netty netx nucterm ncr7900i nec netty-Tabs newhp ncr7900i-na net netty-vi newhpkeyboard $ |
このディレクトリの nec エントリが NEC プリンタ用です。
次の 3 つの表に、プリンタで必要となる terminfo 項目の一覧を示します。
表 12–6 プリンタに必要な terminfo 項目 (ブール値)
項目 |
|
説明 |
---|---|---|
ブール値 |
|
|
|
cpix |
文字ピッチを変更すると解像度が変わる |
|
daisy |
プリンタで文字セットを変更するには演算子が必要 |
|
lpix |
行ピッチを変更すると解像度が変わる |
表 12–7 プリンタに必要な terminfo 項目 (数値)
項目 |
|
説明 |
---|---|---|
数値 |
|
|
|
bufsx |
印刷前にバッファーされるバイト数 |
|
cols |
1 行の列数 |
|
cps |
1 秒あたりの文字の平均印刷速度 |
|
it |
最初はスペース n 個分ごとのタブ |
|
lines |
1 ページの行数 |
|
orc |
1 文字あたりの水平解像度 |
|
orhi |
1 インチあたりの水平解像度 |
|
orl |
1 行あたりの垂直解像度 |
|
orvi |
1 インチあたりの垂直解像度 |
表 12–8 プリンタに必要な terminfo 項目 (文字列)
項目 |
|
説明 |
---|---|---|
文字列 |
|
|
|
chr |
水平解像度を変更する |
|
cpi |
1 インチあたりの文字数を変更する |
|
cr |
キャリッジリターン |
|
csnm |
文字セット名のリスト |
|
cudl |
キャリッジを 1 行下に移動する |
|
cud |
キャリッジを n 行下に移動する |
|
cuf |
キャリッジを n 列右に移動する |
|
cvr |
垂直解像度を変更する |
|
ff |
紙送りする |
|
hpa |
水平絶対位置 |
|
ht |
次の 8 スペースタブストップまでのタブ |
|
if |
初期化ファイル名 |
|
iprog |
初期化プログラムのパス名 |
|
is1 |
プリンタ初期化文字列 |
|
is2 |
プリンタ初期化文字列 |
|
is3 |
プリンタ初期化文字列 |
|
lpi |
1 インチあたりの行数を変更する |
|
mgc |
マージン (上、下、横) をすべて消去する |
|
rep |
文字を n 回繰り返す |
|
rwidm |
倍幅の印刷を使用不可にする |
|
scs |
文字セットを選択する |
|
scsd |
文字セットの定義を開始する |
|
slines |
ページの長さを 1 ページあたり n 行に設定する |
|
smgl |
現在の列の左マージンを設定する |
|
smglp |
左マージンを設定する |
|
smgr |
現在の列の右マージンを設定する |
|
smgrp |
右マージンを設定する |
|
smglr |
左右のマージンを設定する |
|
msgt |
現在の行の上マージンを設定する |
|
smgtp |
上マージンを設定する |
|
smgb |
現在の行の下マージンを設定する |
|
smgbp |
下マージンを設定する |
|
smgtb |
上下のマージンを設定する |
|
swidm |
倍幅の印刷を使用可能にする |
|
vpa |
垂直絶対位置を設定する |
LP 印刷サービスには、次の表に示すログファイルが 2 組あります。
ログファイル名 |
説明 |
---|---|
syslogd |
/etc/syslog.conf の lpr.debug を設定して LP 印刷サービスロギングを有効にする |
/var/spool/lp |
印刷待ち行列に入っている現在の待ち行列のリスト |
/var/lp/logs/requests |
進行中の印刷要求の履歴 |
各システムのスケジューラは、/var/spool/lp/tmp/system ディレクトリおよび/var/spool/lp/requests/system ディレクトリ内で印刷要求のログを保管します。各印刷要求は、要求に関する情報を含んだファイルを 2 つ (各ディレクトリに 1 つずつ) 持っています。/var/spool/lp/requests/system ディレクトリ内の情報には、スーパーユーザーまたは lp しかアクセスできません。/var/spool/lp/tmp/systemディレクトリ内の情報には、その要求を出したユーザー、スーパーユーザー、または lp しかアクセスできません。
次の例では、/var/spool/lp/tmp/starbug ディレクトリの内容を示します。
$ ls /var/spool/lp/tmp/starbug 5 5-0 # cat 5-0 C 1 D print1 F /etc/profile P 20 T /etc/profile t simple U root s 0000 v 2 |
これらのファイルは、印刷要求が待ち行列に入っている限り、そのディレクトリ内に残っています。印刷要求が完了すると、ファイル内の情報は組み合わされ 、/var/lp/logs/requests ファイルに追加されます。このファイルについては、次の節で説明します。
現在待ち行列に入っている印刷要求の状態を追跡したい場合は、/var/spool/lp/logs ディレクトリの情報を使用します。
LP 印刷サービスは、lpsched と requests という 2 つのログファイルに印刷サービスの履歴を記録します。これらのログファイルは、/var/lp/logs ディレクトリに入っています。これらのログファイル内の情報を使用し、印刷の問題を診断して解決できます。次の例は、/var/lp/logs ディレクトリの内容を示します。
# cd /var/lp/logs # ls lpsched.1 requests requests.2 lpsched lpsched.2 requests.1 # |
問題の解決にもっとも重要なログファイルは、次の 2 つです。
lpsched ログファイル — ローカルの印刷要求に関する情報が入っている
requests ログファイル — すでに完了してプリンタの待ち行列にない印刷要求の情報が入っている
requests ログファイルの構造は単純なので、共通の UNIX シェルコマンドを使用してデータを抽出できます。要求は、出力された順番に並んでいます。要求 ID を示す行で区切られています。= で始まる区切り行より下の各行には、その行に含まれる情報の種類を識別する 1 つの文字が付いています。各文字は、空白文字 1 つでデータと区切られます。
次の例は、requests ログファイルの内容を示しています。
# pwd /var/lp/logs # tail requests.2 = print1-3, uid 0, gid 1, size 206662, Wed Mar 14 08:56:30 MST 2003 z print1 C 1 D print1 F /usr/dict/words P 20 T /usr/dict/words t simple U root s 0x0014 v 2 # |
次の表に、文字コードとそれに対応する requests ログファイルの行の内容を示します。
表 12–9 requests ログファイルのコード
次の表に、LP requests ログファイル内の結果コードとその説明を示します。
表 12–10 requests ログファイル内の結果コード
結果コード |
説明 |
---|---|
0x0001 |
要求は保留され再開を待機中 |
0x0002 |
低速フィルタを実行中 |
0x0004 |
低速フィルタを正常に完了 |
0x0008 |
要求はプリンタ上にある |
0x0010 |
印刷を正常に完了 |
0x0020 |
要求は保留されユーザーによる変更を待機中 |
0x0040 |
要求は取り消し済み |
0x0080 |
要求は次に印刷される |
0x0100 |
フィルタ処理または印刷要求に失敗 |
0x0200 |
要求はリモートプリンタに転送中 (現在は使用されない) |
0x0400 |
ユーザーに通知 |
0x0800 |
通知が動作中 |
0x1000 |
リモートシステムが要求を受け付け済み (現在は使用されない) |
0x2000 |
管理者が要求を保留した |
0x4000 |
プリンタのフィルタを変更しなければならなかった |
0x8000 |
要求は一時的に停止された |
印刷待ち行列に入れられたファイルは、印刷されるまで /var/spool/lp ディレクトリに格納されます。その間は数秒程度です。次の表は、/var/spool/lp ディレクトリの内容を示します。
表 12–11 /var/spool/lp ディレクトリの内容
ファイル |
種類 |
説明 |
---|---|---|
SCHEDLOCK |
ファイル |
スケジューラのロックファイル。スケジューラが停止し、再起動されない場合は、このファイルをチェックする |
admins |
ディレクトリ |
/etc/lp へのリンク |
bin |
ディレクトリ |
/usr/lib/lp/bin へのリンク |
logs |
リンク |
完了した印刷要求のログが記録される ../lp/logs へのリンク |
model |
リンク |
/usr/lib/lp/model へのリンク |
requests |
ディレクトリ |
印刷要求が印刷されるまで記録される構成済みプリンタごとのサブディレクトリが入ったディレクトリ。ユーザーはこのログにアクセスできない |
system |
ディレクトリ |
システムの印刷状態ファイル |
temp |
リンク |
スプールされた要求が入っている /var/spool/lp/tmp/ hostname へのリンク |
tmp |
ディレクトリ |
印刷要求が印刷されるまでログが記録される構成済みの各プリンタのディレクトリ。既存の印刷要求を変更した場合も、このディレクトリに記録される |
印刷フィルタは、待ち行列内のファイルの内容をある形式から別の形式に変換する、印刷サーバー上のプログラムです。
印刷フィルタは、必要に応じて単純な場合も複雑な場合もあります。Oracle Solaris OS では、出力先プリンタが PostScript 形式のデータを必要とする場合のほとんどに対応する印刷フィルタが、/usr/lib/lp/postscript ディレクトリに提供されています。PostScript 以外のプリンタ用のフィルタが必要な場合は、そのフィルタを作成し、目的のシステムに追加しなければなりません。
一連の「印刷フィルタ記述子ファイル」が /etc/lp/fd ディレクトリに用意されています。これらの記述子ファイルは、フィルタの特性 (高速フィルタや低速フィルタなど) を記述します。これらの記述子ファイルは、フィルタプログラム (/usr/lib/lp/postscript/postdaisy など) を指定します。
LP 印刷サービスは、Oracle Solaris OS の他の部分と情報をやり取りします。また、標準プリンタインタフェースプログラムを使用して、次の作業を実行します。
必要に応じてプリンタポートを初期化する。標準プリンタインタフェースプログラムは、stty コマンドを使用してプリンタポートを初期化する。
プリンタを初期化する。標準プリンタインタフェースプログラムは、terminfo データベースと TERM シェル変数を使用して、適切な制御シーケンスを見つける。
必要に応じてバナーページを印刷する。
印刷要求で指定された部数だけ印刷する。
LP 印刷サービスは、別のプログラムが指定されなければ、/usr/lib/lp/model ディレクトリにある標準インタフェースプログラムを使用します。カスタムのインタフェースプログラムを作成できます。ただし、カスタムプログラムがプリンタへの接続を終了させたり、正しいプリンタの初期化を妨げたりしないことを確認する必要があります。