この節では、LP 印刷サービスのディレクトリ構造、ファイル、ログ、およびコマンドについて説明します。
LP 印刷サービスのファイルは、表 45-1 のように 7 つのディレクトリに分散されています。
表 45-1 LP 印刷サービスのディレクトリ
ディレクトリ |
内容 |
---|---|
/usr/bin |
LP 印刷サービスのユーザーコマンド |
/etc/lp |
LP 構成ファイルの階層 |
/usr/share/lib |
terminfo データベースディレクトリ |
/usr/sbin |
LP 印刷サービスの管理コマンド |
/usr/lib/lp |
LP デーモン。バイナリファイルと PostScript フィルタのディレクトリ。model ディレクトリ (標準プリンタインタフェースプログラムが入っている) |
/var/lp/logs |
LP 動作のログ: lpsched.n - lpsched からのメッセージ。 requests.n - 完了した印刷要求に関する情報 |
/var/spool/lp |
ファイルが印刷待ち行列に入れられるスプーリングディレクトリ |
スケジューラは、表 45-2 のように、/etc/lp ディレクトリに入っている LP 構成ファイルに構成情報を格納します。
表 45-2 の構成ファイルはプライベートインタフェースで、将来のリリースでは変更される可能性があります。現在の場所にあるファイルに依存する、または現在使用している形式のデータに依存するソフトウェアを構築しないようにしてください。
ファイル |
タイプ |
説明 |
---|---|---|
classes |
ディレクトリ |
lpadmin -c コマンドで与えたクラスを識別するファイル |
fd |
ディレクトリ |
既存のフィルタの記述 |
filter.table |
ファイル |
印刷フィルタ照合テーブル |
forms |
ディレクトリ |
各フォームのファイルを格納する場所。最初は、このディレクトリは空になっている |
interfaces |
ディレクトリ |
プリンタインタフェースプログラムファイル |
logs |
/var/lp/logs へのリンク |
印刷動作のログファイル |
model |
/usr/lib/lp/model へのリンク |
標準プリンタインタフェースプログラム |
printers |
ディレクトリ |
各ローカルプリンタのディレクトリ。各ディレクトリには、個々のプリンタの構成情報と警告ファイルが入っている |
pwheels |
ディレクトリ |
印字ホイールまたはカートリッジファイル |
これらの構成ファイルは、SunOS 4.1 の /etc/printcap ファイルに似た機能を提供します。
これらのファイルの内容を確認できますが、直接編集しないでください。代わりに、lpadmin(1M) コマンドを使用して構成を変更します。変更内容は /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/lib/lp ディレクトリには、表 45-3 のように LP 印刷サービスに使用されるデーモンとファイルが入っています。
表 45-3 /usr/lib/lp ディレクトリの内容
ファイル |
タイプ |
説明 |
---|---|---|
bin |
ディレクトリ |
印刷警告、低速フィルタ、待ち行列管理プログラムを生成するファイルが入っている |
lpsched |
デーモン |
LP 印刷要求のスケジューリングを管理する |
model |
ディレクトリ |
標準プリンタインタフェースプログラムが入っている |
postscript |
ディレクトリ |
SunOS 5.x の LP 印刷サービスから提供されるすべての PostScript フィルタプログラムが入っている。これらのフィルタには、フィルタの特性とその格納場所を LP 印刷サービスに指示する /etc/lp/fd ディレクトリ内の記述子ファイルが付いている |
LP 印刷サービスは、次の 2 組のログファイルを管理します。
/var/spool/lp - 印刷待ち行列に入っている現在の待ち行列のリスト
/var/lp/logs/requests - 進行中の印刷要求の履歴
各システムのスケジューラは、ディレクトリ /var/spool/lp/tmp/system と /var/spool/lp/requests/system 内で印刷要求のログを保管します。各印刷要求には、(ディレクトリごとに 1 つずつ) 情報が入った 2 つのファイルがあります。/var/spool/lp/requests/system ディレクトリ内の情報には、スーパーユーザーまたは lp しかアクセスできません。/var/spool/lp/tmp/system 内の情報には、その要求を出したユーザー、スーパーユーザー、または lp しかアクセスできません。
次の例は、/var/spool/lp/tmp/terra ディレクトリの内容を示しています。
$ ls /var/spool/lp/tmp/terra 20-0 21-0 terra$ cat 21-0 C 1 D slw2 F /etc/default/login P 20 t simple U tamiro s 0x1000
これらのファイルは、印刷要求が待ち行列に入っている限り、そのディレクトリ内に残っています。要求が完了すると、ファイル内の情報は組み合わされ、ファイル /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 #
接尾辞 .1 と .2 が付いているファイルは、前日のログのコピーです。毎日、lp cron ジョブは lpsched ログファイルと requests ログファイルを消去して、2 日分のコピーを保管します。requests ログを消去する cron ジョブを変更するためのヒントについては、「crontab ファイルの作成と編集」を参照してください。
問題の解決に最も重要なのは、ローカル印刷要求に関する情報が入っている lpsched ログです。
requests ログには、完了して印刷待ち行列から消去された印刷要求に関する情報が入っています。印刷要求が終了すると、/var/spool/lp ログファイル内の情報が組み合わされ、/var/lp/logs/requests ログに追加されます。
requests ログの構造は単純なので、共通の UNIX シェルコマンドを使用してデータを抽出できます。要求は、出力された順番に要求 ID を示す行で区切って表示されます。区切り行の下の各行には、その行に入っている情報の種類を識別する 1 文字が付いています。各文字は、空白文字 1 つでデータから区切られます。
次の例は、requests ログの内容を示しています。
# pwd /var/lp/logs # tail requests.2 = slw2-20, uid 200, gid 200, size 5123, Tue Jun 17 10:16:10 MDT 1997 z slw2 C 1 D slw2 F /etc/motd P 20 t simple U irving s 0x0100 #
表 45-4 は、文字コードとそれに対応する LP requests ログ内の行を示しています。
表 45-4 LP requests ログ内の文字コード
文字 |
行の内容 |
---|---|
= |
区切り行。ユーザーの要求 ID、ユーザー ID (UID)、グループ ID (GID)、元の (フィルタを通す前の) ファイルサイズ、および要求が待ち行列に入れられた時刻が入っている |
C |
印刷部数 |
D |
出力先のプリンタかクラス、または any |
F |
印刷されたファイル名。この行は印刷されたファイルごとに区切られ、各ファイルは表示された順序で印刷される |
f |
使用されたフォーム名 |
H |
特殊処理 resume、hold、または immediate |
N |
印刷要求が正常に完了したときに使用された警告のタイプ。ユーザーが電子メールで通知を受けた場合は M タイプ、端末へのメッセージで通知を受けた場合は W タイプ |
O |
プリンタ依存の -o オプション (nobanner など) |
P |
印刷要求の優先順位 |
p |
印刷されたページのリスト |
r |
ユーザーがファイルの「raw」処理を要求した場合 (lp コマンドの -r オプション) に含まれる 1 文字の行 |
S |
使用された文字セット、印字ホイール、またはカートリッジ |
s |
16 進数形式の各ビットの組み合わせで表される要求の結果。印刷サービスの内部では複数のビットが使用される。各ビットとその意味については表 45-5 を参照 |
T |
バナーページに印刷されるタイトル |
t |
ファイル内で見つかった内容形式 |
U |
印刷要求を出したユーザー名 |
x |
印刷要求に使用された低速フィルタ |
Y |
要求の印刷に使用された印刷フィルタの特殊モードのリスト |
z |
要求に使用されたプリンタ。要求がプリンタまたはプリンタクラスの待ち行列に入れられた場合や、要求が別の出力先に移動された場合は、このプリンタは出力先 (D 行) とは異なる |
表 45-5 は、LP requests ログ内の結果コードとその説明です。
表 45-5 LP requests ログ内の結果コード
結果コード |
説明 |
---|---|
0x0001 |
要求は保留され再開を待機中 |
0x0002 |
低速フィルタを実行中 |
0x0004 |
低速フィルタを正常に完了 |
0x0008 |
要求はプリンタ上にある |
0x0010 |
印刷を正常に完了 |
0x0020 |
要求は保留されユーザーによる変更を待機中 |
0x0040 |
要求は取り消し済み |
0x0080 |
要求は次に印刷される |
0x0100 |
フィルタ処理または印刷要求に失敗 |
0x0200 |
要求はリモートプリンタに転送中 (現在は使用されない) |
0x0400 |
ユーザーに通知 |
0x0800 |
通知が動作中 |
0x1000 |
リモートシステムが要求を受け付け済み (現在は使用されない) |
0x2000 |
管理者が要求を保留した |
0x4000 |
プリンタのフィルタを変更しなければならなかった |
0x8000 |
要求は一時的に停止された |
印刷待ち行列に入れられたファイルは、印刷されるまで /var/spool/lp ディレクトリに格納されますが、それがわずか数秒の場合があります。表 45-6 は、/var/spool/lp ディレクトリの内容を示します。
表 45-6 /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 |
ディレクトリ |
印刷要求が印刷されるまでログが記録される構成済みの各プリンタのディレクトリ。既存の印刷要求を変更した場合も、このログに記録される |