Solaris のシステム管理 (第 2 巻)

LP 印刷サービスの構造

この節では、LP 印刷サービスのディレクトリ構造、ファイル、ログ、およびコマンドについて説明します。

ディレクトリ

LP 印刷サービスのファイルは、表 7-1 のように 7 つのディレクトリに分散されています。

表 7-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

ファイルが印刷待ち行列に入れられるスプーリングディレクトリ 

構成ファイル

スケジューラは、表 7-2 のように、/etc/lp ディレクトリに入っている LP 構成ファイルに構成情報を格納します。


注意 - 注意 -

表 7-2 の構成ファイルはプライベートインタフェースで、将来のリリースでは変更される可能性があります。現在の場所にあるファイルに依存する、または現在使用している形式のデータに依存するソフトウェアを構築しないようにしてください。


表 7-2 /etc/lp ディレクトリの内容

ファイル 

タイプ 

説明 

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 つずつサブディレクトリが入っています。次の例は、プリンタ sparc1luna/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

プリンタ固有の各ディレクトリ内では、次のファイルを使用してプリンタを記述できます。

通常、プリンタ 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

terminfo データベース

/usr/share/lib ディレクトリには、terminfo データベースのディレクトリが入っており、そのディレクトリには多数のタイプの端末とプリンタに関する定義が入っています。LP 印刷サービスは、terminfo データベース内の情報を使用してプリンタを初期設定し、選択されたページサイズ、文字ピッチ、行ピッチ、および文字セットを設定し、一連のコードをプリンタに送ります。

各プリンタは、terminfo データベース内で短縮名を使用して識別されます。terminfo データベースの構造については、「プリンタタイプ」を参照してください。必要であれば、terminfo データベースにエントリを追加できますが、これは煩雑で時間のかかる作業です。詳細は、「サポートされていないプリンタの terminfo エントリを追加する」 を参照してください。

デーモンと LP 内部ファイル

/usr/lib/lp ディレクトリには、表 7-3 に示すような LP 印刷サービスに使用されるデーモンとファイルが入っています。

表 7-3 /usr/lib/lp ディレクトリの内容

ファイル 

タイプ 

説明 

bin

ディレクトリ 

印刷警告、低速フィルタ、待ち行列管理プログラムを生成するファイルが入っている 

lpsched

デーモン 

LP 印刷要求のスケジューリングを管理する 

model

ディレクトリ 

標準プリンタインタフェースプログラムが入っている 

postscript

ディレクトリ 

SunOS 5.7 または互換 LP 印刷サービスで提供されているすべての PostScript フィルタプログラムが入っている。これらのフィルタには、フィルタの特性とその格納場所を LP 印刷サービスに指示する /etc/lp/fd ディレクトリ内の記述子ファイルが含まれる

ログファイル

LP 印刷サービスは、次の 2 組のログファイルを管理します。

印刷待ち行列ログ

各システムのスケジューラは、ディレクトリ /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 印刷サービスは、lpschedrequests という 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
1998
z slw2
C 1
D slw2
F /etc/motd
P 20
t simple
U irving
s 0x0100
#

表 7-4 に、文字コードとそれに対応する LP requests ログ内の行を示します。

表 7-4 LP requests ログ内の文字コード

文字 

行の内容 

=

区切り行。ユーザーの要求 ID、ユーザー ID (UID)、グループ ID (GID)、元の (フィルタを通す前の) ファイルサイズ、および要求が待ち行列に入れられた時刻が入っている 

C

印刷部数 

D

出力先のプリンタかクラス、または any

F

印刷されたファイル名。この行は印刷されたファイルごとに区切られ、各ファイルは表示された順序で印刷される 

f

使用されたフォーム名 

H

特殊処理 resumehold、または immediate

N

印刷要求が正常に完了したときに使用された警告のタイプ。ユーザーが電子メールで通知を受けたときは M タイプ、端末へのメッセージで通知を受けた場合は W タイプ

O

プリンタ依存の -o オプション (nobanner など)

P

印刷要求の優先順位 

p

印刷されたページのリスト 

r

ユーザーがファイルの「raw」処理を要求したとき (lp -r コマンド) に含まれる 1 文字の行

S

使用された文字セット、印字ホイール、またはカートリッジ 

s

16 進数形式の各ビットの組み合わせで表される要求の結果。印刷サービスの内部では複数のビットが使用される。各ビットとその意味については、表 7-5 を参照

T

バナーページに印刷されるタイトル 

t

ファイル内で見つかった内容形式 

U

印刷要求を出したユーザー名 

x

印刷要求に使用された低速フィルタ 

Y

要求の印刷に使用された印刷フィルタの特殊モードのリスト 

z

要求に使用されたプリンタ。要求がプリンタまたはプリンタクラスの待ち行列に入れられた場合や、要求が別の出力先に移動された場合は、このプリンタは出力先 (D 行) とは異なる

表 7-5 に、LP requests ログ内の結果コードとその説明を示します。

表 7-5 LP requests ログ内の結果コード

結果コード 

説明 

0x0001

要求は保留され再開を待機中 

0x0002

低速フィルタを実行中 

0x0004

低速フィルタを正常に完了 

0x0008

要求はプリンタ上にある 

0x0010

印刷を正常に完了 

0x0020

要求は保留されユーザーによる変更を待機中 

0x0040

要求は取り消し済み 

0x0080

要求は次に印刷される 

0x0100

フィルタ処理または印刷要求に失敗 

0x0200

要求はリモートプリンタに転送中 (現在は使用されない) 

0x0400

ユーザーに通知 

0x0800

通知が動作中 

0x1000

リモートシステムが要求を受け付け済み (現在は使用されない) 

0x2000

管理者が要求を保留した 

0x4000

プリンタのフィルタを変更しなければならなかった 

0x8000

要求は一時的に停止された 

スプーリングディレクトリ

印刷待ち行列に入れられたファイルは、印刷されるまで /var/spool/lp ディレクトリに格納されますが、それがわずか数秒の場合があります。表 7-6 は、/var/spool/lp ディレクトリの内容を示します。

表 7-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

ディレクトリ 

印刷要求が印刷されるまでログが記録される構成済みの各プリンタのディレクトリ。既存の印刷要求を変更した場合も、このログに記録される