この章では、印刷サービスの設定または管理の際に発生する可能性のある印刷上の問題を解決する方法について説明します。
この章では次の手順を説明します。
印刷と LP 印刷サービスの概要については、第 39 章「印刷管理の概要」を参照してください。
プリンタを設定し終わった後に、何も印刷されないことがあります。また、若干は処理されるものの、何か印刷しても正しく出力されない、または読みづらいなど、期待どおりの結果が得られないことがあります。このような問題が発生すると、他にも次のような問題が発生することがあります。
LP コマンドがハングする
プリンタがアイドル状態になる
ユーザーが矛盾したメッセージを受け取る
この章の推奨事項の多くはパラレルプリンタに関連しますが、より一般的なシリアルプリンタにも当てはまります。
Solaris 2.6 リリースをインストールした後 Admintool を使用してリモートプリンタへのアクセスを追加しようとすると、次のメッセージが表示される場合があります。
Admintool: Error add remote printer failed
この場合は、SunSoft 印刷クライアントソフトウェアがネットワークにインストールされていて、リモートプリンタがすでに利用できる可能性があります。プリンタを追加する前に lpstat -t コマンドを使用して、プリンタが利用できるかどうかを確認してください。
何も印刷されないときは、次の部分をチェックします。
プリンタハードウェア
ネットワーク
LP 印刷サービス
バナーページは印刷されるのに、他には何も印刷されない場合は、不正な出力の特殊ケースです。「出力が正しくない場合の解決方法」を参照してください。
ハードウェアは、最初にチェックすべきポイントです。文字どおり、プリンタが電源に接続され、電源がオンになっているかどうかを確認してください。また、ハードウェア付属のマニュアルを参照して、ハードウェアの設定値を調べてください。コンピュータによっては、プリンタポートの特性を変更するハードウェアスイッチが付いているものがあります。
プリンタハードウェアには、プリンタ、コンピュータへの接続ケーブル、ケーブルの先端を接続するポートが含まれます。一般的なアプローチとしては、プリンタからコンピュータへと順番に調べてください。まず、プリンタをチェックします。次に、ケーブルがプリンタに接続される箇所をチェックします。次に、ケーブルをチェックします。最後に、ケーブルがコンピュータに接続されている箇所をチェックします。
よく問題が発生するのは、印刷クライアントから印刷サーバーに送られるリモート印刷要求です。印刷サーバーと印刷クライアント間でネットワークアクセスが使用可能になっているかどうかを確認してください。
ネットワークがネットワーク情報サービスプラス (NIS+) を実行している場合は、システム間のアクセスを使用可能にする方法について、『NIS+ と FNS の管理』を参照してください。ネットワークがネットワーク情報サービス (NIS) または NIS+ を実行していない場合は、印刷サーバーと印刷クライアントを設定する前に、各クライアントシステムのインターネットアドレスとシステム名を、印刷サーバー上の /etc/hosts ファイルに組み込んでください。また、印刷サーバーのインターネットアドレスとシステム名を、各印刷クライアントシステムの /etc/hosts ファイルに組み込まなければなりません。
正常に印刷するには、印刷サーバーと印刷クライアント上で LP スケジューラが動作していなければなりません。動作していない場合は、/usr/lib/lp/lpsched コマンドを使用して起動する必要があります。スケジューラの起動に問題がある場合は、「印刷スケジューラを再起動する方法」を参照してください。
スケジューラが動作していることの他に、出力を行う前にプリンタが使用可能になっていて、印刷要求を受け付けられる状態になっていなければなりません。LP 印刷サービスがプリンタへの要求を受け付けなければ、依頼した印刷要求は拒否されます。その場合、一般にユーザーは印刷要求を依頼すると警告メッセージを受け取ります。LP 印刷サービスがプリンタで使用可能になっていないと、印刷要求はプリンタが使用可能になるまでシステム上の待ち行列に残ります。
一般に、次のようにして印刷時の問題を分析してください。
手順ごとに印刷要求の経路を追跡します。
手順ごとに LP 印刷サービスの状態を調べます。
構成は正しいか
プリンタは要求を受け付けるか
プリンタは要求を処理できるか
要求が転送時にハングしている場合は、syslog.conf 内の lpr.debug を設定して、転送状況を表示します。
要求がローカルでハングしている場合は、プリンタデバイスエラー (障害) の通知を送らせ、プリンタを再度使用可能にします。
「印刷時の問題の解決」に掲載されている手順では、この方法を使用して LP 印刷サービスに関する各種の問題に対処する方法を説明します。
LP 印刷サービスの基本的な問題解決の手順で問題を解決できない場合は、当てはまる特定のクライアント/サーバーのケースごとに問題解決の手順を実行する必要があります。
SunOS 5.x 印刷サーバーを使用する SunOS 5.x 印刷クライアント (操作説明については、「SunOS 5.x クライアントから SunOS 5.x 印刷サーバーへの印刷をチェックするには」を参照)
SunOS 4.1 印刷サーバーを使用する SunOS 5.x 印刷クライアント (操作説明については、「SunOS 5.x クライアントから SunOS 4.1 印刷サーバーへの印刷をチェックするには」を参照)
SunOS 5.x 印刷サーバーを使用する SunOS 4.1 印刷クライアント (操作説明については、「SunOS 4.1 クライアントから SunOS 5.x 印刷サーバーへの印刷をチェックするには」を参照)
プリンタと印刷サービスソフトウェアが正しく構成されていない場合は、プリンタで印刷されても、期待どおりに出力されないことがあります。
LP 印刷サービスでプリンタを設定するときに間違ったプリンタタイプを使用すると、不適切なプリンタ制御文字がプリンタに送られる可能性があります。その結果は予測できません。何も印刷されない、出力が読みづらい、正しい文字セットやフォントで印刷されないなどの結果となります。
SunOS 5.x 印刷クライアントまたは SunOS 5.x 印刷サーバーで間違ったファイル内容形式を指定した場合、バナーページは印刷できますが、他には何も印刷されません。プリンタに指定されたファイル内容形式は、プリンタがフィルタなしで直接印刷できるファイル形式を示します。ユーザーがプリンタにファイルを送信すると、フィルタなしでファイルはプリンタに直接送信されます。プリンタが実際にその形式を処理できないときに、問題が発生します。
印刷クライアントの設定時には、ファイル内容形式が印刷サーバーと印刷クライアントの両方で正しくなければならないので、間違いをおかす機会が多くなります。推奨する方法は、印刷クライアントのファイル内容形式を any に設定することです。こうすると、ファイルはサーバーに直接送信され、フィルタが必要かどうかはサーバー側で決定されます。したがって、ファイル内容形式は、サーバー側だけで正しく指定すればよいことになります。
印刷クライアント側でファイル内容を指定し、フィルタリングの負荷をサーバーからクライアントに移すことができますが、内容の形式は印刷サーバー側でサポートしなければなりません。
デフォルトの stty (標準端末) 設定値がプリンタから要求される設定値と一致しないと、多数のフォーマット上の問題が生じる可能性があります。この後の節では、設定値の一部が間違っているときに発生する問題について説明します。
コンピュータのボーレート設定値がプリンタのボーレート設定値と一致しないときは、通常何らかの出力はありますが、希望する出力は得られません。特殊文字や不要なスペースが異常に混じったランダムな出力が表示されます。LP 印刷サービスのデフォルトは 9600 ボーレートです。
プリンタがパラレルポートで接続されている場合、ボーレート設定値は関係ありません。
プリンタによっては、パリティビットを使用して、印刷用に受け取ったデータに伝送中に誤りがなかったことを確認するものがあります。コンピュータとプリンタのパリティビットの設定値は一致しなければなりません。一致しない場合、文字によってはまったく印刷されないか、他の文字で置き換えられることもあります。その出力は、文字間隔が正しく、ほとんどの文字が正しい位置にあるので、一見正しいように見えます。LP 印刷サービスの場合、デフォルトではパリティビットは設定されません。
ファイルにタブが含まれていても、プリンタがタブを予期していなければ、印刷出力にはファイルの内容が完全に印刷されますが、テキストは右マージンに対して正確に配置されないことがあります。また、プリンタのタブ設定が間違っていると、テキストに左マージンがない、テキストがつながってしまう、テキストがページの一部分に集中する、間違ってダブルスペースになってしまうなどの問題が発生します。デフォルトでは、タブは 8 スペースごとに設定されます。
出力がシングルスペースのはずなのにダブルスペースになる場合は、プリンタのタブ設定値が間違っているか、プリンタが Return の後に 1 行追加されています。LP 印刷サービスは、改行の前に 1 つ Return を追加するので、その組み合わせによって 2 行の改行が発生します。
ジグザグに印刷される場合は、改行の前に Return を送る stty オプションの onlcr が設定されていません。stty=onlcr オプションはデフォルトで設定されますが、他の印刷問題を解決しようとしたときに、それをクリアした可能性があります。
lp コマンド (lpsystem、lpadmin、lpstat など) を入力しても何も発生しない (エラーメッセージ、状態情報、またはプロンプトが表示されない) 場合は、LP スケジューラに問題が発生した可能性があります。このような問題は、一般に LP スケジューラを停止して再起動すれば解決できます。操作手順については、「印刷スケジューラを停止する方法」と 「印刷スケジューラを再起動する方法」を参照してください。
プリンタが印刷要求を待ち行列に入れているのに、アイドル状態になっていることがあります。プリンタがアイドル状態になっている場合は、次の原因が考えられます。
現在の印刷要求にフィルタがかけられている
プリンタに障害がある
ネットワーク上の問題が原因で、印刷処理が中断されている
低速印刷フィルタは、プリンタを拘束しないようにバックグラウンドで実行されます。フィルタリングが必要な印刷要求は、フィルタリングが終わるまで印刷されません。
LP 印刷サービスが障害を検出すると、印刷はすぐにではありませんが自動的に再開されます。LP 印刷サービスは約 5 分間待機し、要求が正常に印刷されるまで試行し続けます。プリンタを使用可能にすると、すぐに再試行できます。
ネットワーク経由でファイルを印刷するときには、次の問題が発生することがあります。
印刷サーバーに送られた要求が、クライアントシステム (ローカル) の待ち行列で停止する
印刷サーバーに送られた要求が、印刷サーバー (リモート) の待ち行列で停止する
印刷サーバーに依頼された印刷要求は、次の原因でクライアントシステムの待ち行列で停止することがあります。
印刷サーバーがダウンしている
プリンタが印刷サーバー側で使用不可にされている
印刷クライアントと印刷サーバー間のネットワークがダウンしている
ベースになる SunOS 5.x ネットワークソフトウェアが適切に設定されていない
問題の原因を突き止めるときには、新しい要求を待ち行列に追加しないでください。詳細は、「プリンタへの印刷要求を受け付けるまたは拒否する方法」 を参照してください。
印刷要求が印刷サーバーの待ち行列で停止する場合は、プリンタが使用不可になっている可能性があります。プリンタが要求を受け付けても処理しないとき、その要求は印刷するために待ち行列に入れられます。プリンタを使用可能にすると、それ以外に問題がなければ、待ち行列内の印刷要求は印刷されます。
ユーザーが印刷要求を入力すると、クライアントシステムからは受け付けられたことが通知され、印刷サーバーからは印刷要求が拒否されたことを示すメールを受け取ることがあります。これらの矛盾したメッセージは、次の原因で発生することがあります。
印刷クライアントは要求を受け付けることができても、印刷サーバーは要求を拒否している場合
印刷クライアント側のプリンタの定義が、印刷サーバー側のプリンタの定義と一致しない場合。特に、フィルタ、文字セット、印字ホイール、フォームなど、印刷ジョブコンポーネントの定義が、クライアントとサーバーシステムの間で一致していない場合
ローカルユーザーが印刷サーバー上でプリンタにアクセスできるように、これらのジョブコンポーネントの定義が印刷クライアントと印刷サーバーの両方で登録されているかどうかを確認してください。
この節では、次の手順について説明します。
出力されない問題を解決する方法
出力が正しくない問題を解決する方法
LP コマンドのハングを解除する方法
アイドル状態になった (ハングした) プリンタの問題を解決する方法
矛盾した状態メッセージを解決する方法
この作業には、次の問題解決の手順が含まれています。印刷要求をプリンタに出したのに何も印刷されない場合は、これらの手順を試してください。
ハードウェアのチェック (「ハードウェアをチェックするには」)
ネットワークのチェック (「ネットワークをチェックするには」)
LP 印刷サービスの基本機能のチェック (「LP 印刷サービスの基本機能をチェックするには」)
SunOS 5.x 印刷クライアントから SunOS 5.x 印刷サーバーへの印刷チェック (「SunOS 5.x クライアントから SunOS 5.x 印刷サーバーへの印刷をチェックするには」)
SunOS 5.x 印刷クライアントから SunOS 4.1 印刷サーバーへの印刷チェック (「SunOS 5.x クライアントから SunOS 4.1 印刷サーバーへの印刷をチェックするには」)
SunOS 4.1 印刷クライアントから SunOS 5.x 印刷サーバーへの印刷チェック (「SunOS 4.1 クライアントから SunOS 5.x 印刷サーバーへの印刷をチェックするには」)
該当する印刷クライアント/サーバーのケースに進む前に、上記のうち最初の 3 つの手順をリストの順に試してください。ただし、バナーページは印刷されても他に何も印刷されない場合は、「出力が正しくない場合の問題を解決する方法」の説明に進んでください。
プリンタがコンセントに接続され、電源がオンになっているかどうかを確認します。
ケーブルがプリンタのポートと、システムまたはサーバーのポートに接続されているかどうかを確認します。
そのケーブルが正しいケーブルであり、欠陥がないことを確認します。
ハードウェア付属のマニュアルを参照してください。プリンタがシリアルポートに接続されている場合は、そのケーブルでハードウェアフロー制御がサポートされることを確認してください。NULL モデムアダプタでは、この機能がサポートされます。表 72-1 は、NULL モデムケーブル用のピン構成を示しています。
表 72-1 NULL モデムケーブル用のピン構成
ホスト |
プリンタ |
|
---|---|---|
Mini-Din-8 |
25-Pin D-sub |
25-Pin D-sub |
- |
1(FG) |
1(FG) |
3(TD) |
2(TD) |
3(RD) |
5(RD) |
3(RD) |
2(TD) |
6(RTS) |
4(RTS) |
5(CTS) |
2(CTS) |
5(CTS) |
4(RTS) |
4(SG) |
7(SG) |
7(SG) |
7(DCD) |
6(DSR)、8(DCD) |
20(DTR) |
1(DTR) |
20(DTR) |
6(DSR)、8(DCD) |
ポート用のハードウェアスイッチが正しく設定されていることを確認します。
正しい設定については、プリンタのマニュアルを参照してください。
プリンタが動作するかどうかを確認します。
プリンタにセルフテスト機能が付いている場合は、それを使用します。プリンタのセルフテストの詳細は、プリンタのマニュアルを参照してください。
コンピュータとプリンタのボーレートの設定値が正しいかどうかを確認します。
コンピュータとプリンタのボーレートの設定値が一致しなければ、何も印刷されないことがあり、さらに正しく出力されない場合もあります。詳細は、「出力が正しくない場合の問題を解決する方法」を参照してください。
ping コマンドを使用すると、印刷サーバーと印刷クライアント間のネットワークが正しく設定されているかどうかを確認できます。
print_client# ping print_server print_server is alive print_server# ping print_client print_client not available
システムが動作していることを示すメッセージが表示されれば、そのシステムにアクセスできることがわかるので、そのネットワークは正常です。また、このメッセージは、入力したホスト (システム) 名が、ネームサーバーまたはローカルの /etc/hosts ファイルによって IP アドレスに変換されたことを示します。変換されていない場合は、IP アドレスを入力する必要があります。
「not available」というメッセージが表示された場合は、次の 3 点を確認してください。まず、NIS または NIS+ はサイトでどのように設定されているか。次に、印刷サーバーと印刷クライアントが相互に通信できるように付加的な作業が必要か。最後に、サイトが NIS または NIS+ を実行していない場合、各印刷クライアントの /etc/hosts ファイルに印刷サーバーの IP アドレスを入力し、印刷サーバーの /etc/hosts ファイルにすべての印刷クライアントの IP アドレスを入力したか確認します。
(SunOS 5.0 - 5.1 印刷サーバーのみ) listen ポートモニターが正しく構成されているかどうかを確認します。
(SunOS 5.0 - 5.1 印刷サーバーのみ) ネットワーク待機サービスが印刷サーバー上のポートモニターに登録されているかどうかを確認します。
この手順では、基本 LP 印刷サービス機能をチェックする例として、プリンタ luna を使用しています。
印刷サーバー上と印刷クライアント上で、LP 印刷サービスが動作していることを確認します。
このコマンドは、LP スケジューラが動作しているかどうかを表示します。
# lpstat -r scheduler is running
スケジューラが動作していない場合は、スーパーユーザーまたは lp になり、スケジューラを起動します。
# /usr/lib/lp/lpsched
スケジューラを起動できない場合は、「LP 印刷サービスのハングを解除する方法」を参照してください。
印刷サーバー上と印刷クライアント上で、プリンタが要求を受け付けていることを確認します。
プリンタが要求を受け付けていることを確認します。
# lpstat -a mars accepting requests since Jun 04 16:13 1997 luna not accepting requests since Jun 04 08:10 1997 unknown reason
このコマンドは、LP システムがシステム用に構成された各プリンタの要求を受け付けているかどうかを確認します。
プリンタが要求を受け付けていない場合は、スーパーユーザーまたは lp になり、プリンタが印刷要求を受け付けるようにします。
# accept luna
これで、指定したプリンタは要求を受け付けます。
印刷サーバー上と印刷クライアント上で、プリンタが依頼された印刷要求の印刷で使用可能になっているかどうかを確認します。
プリンタが使用可能になっていることを確認します。
# lpstat -p luna printer luna disabled since Jun 04 09:40 1997. available. unknown reason
このコマンドは、プリンタの状態に関する情報を表示します。プリンタ名を省略すると、システム用に設定されたすべてのプリンタに関する情報を表示できます。次の例は、使用不可になっているプリンタを示しています。
プリンタが使用不可になっている場合は、スーパーユーザーまたは lp になり、プリンタを使用可能にします。
# enable luna printer "luna" now enabled.
指定したプリンタが、印刷要求の処理に使用可能になります。
印刷サーバー上で、プリンタが正しいシリアルポートに接続されていることを確認します。
プリンタが正しいシリアルポートに接続されていることを確認します。
# lpstat -t scheduler is running system default destination: luna device for luna: /dev/term/a
「device for printer-name」というメッセージは、ポートアドレスを示します。LP 印刷サービスの接続先のポートにケーブルが接続されているかどうかを確認します。ポートが正しければ、手順 5に進みます。
スーパーユーザーまたは lp になります。
ポートを表すデバイスファイルのファイル所有権を変更します。
# chown lp device-filename
このコマンドは、特殊なユーザー lp をデバイスファイルの所有者として割り当てます。このコマンドで、device-filename はデバイスファイル名です。
プリンタポートのデバイスファイルのアクセス権を変更します。
# chmod 600 device-filename
このコマンドにより、root または lp だけがプリンタポートデバイスファイルにアクセスできます。
印刷サーバー上と印刷クライアント上で、プリンタが正しく構成されていることを確認します。
プリンタが適切に設定されていることを確認します。
# lpstat -p luna -l printer luna is idle. enabled since May 20 17:39 1997. available. Content types: postscript Printer types: PS
上の例は、正しく設定された PostScript プリンタと、そのプリンタを印刷要求の処理に利用できることを示しています。プリンタタイプとファイル内容形式が正しい場合は、手順 6 に進みます。
プリンタタイプまたはファイル内容形式が違っている場合は、印刷クライアント上で、プリンタタイプを unknown に設定し、内容形式を any に設定してください。
# lpadmin -p printer-name -T printer-type -I file-content-type
印刷サーバー上で、プリンタがプリンタ障害のために待機していないことを確認します。
プリンタ障害のためにプリンタが待機していないことを確認します。
# lpadmin -p printer-name -F continue
このコマンドは LP 印刷サービスに対して、障害のために待機していない場合は続行するように指示します。
プリンタを再び使用可能にすることによって、すぐに再試行させます。
# enable printer-name
(省略可能) プリンタ障害をすぐに通知するように、LP 印刷サービスに指示します。
# lpadmin -p printer-name -A 'write root'
このコマンドは LP 印刷サービスに対して、プリンタが障害を起こした場合に、root に書き込むというデフォルトポリシーを設定し、root がログインした端末にプリンタ障害メッセージを送るように指示します。これにより、問題を修正するときに障害通知をすぐに受け取れます。
プリンタがログイン端末として間違った設定になっていないかどうかを確認します。
ログイン端末としてプリンタを設定する作業では誤りをおかしやすいので、当てはまらないように思われる場合にも、必ず設定値を確認してください。
ps -ef コマンドの出力で、プリンタポートのエントリを探します。
# ps -ef root 169 167 0 Apr 04 ? 0:08 /usr/lib/saf/listen tcp root 939 1 0 19:30:47 ? 0:02 /usr/lib/lpsched root 859 858 0 19:18:54 term/a 0:01 /bin/sh -c ¥ /etc/lp/ interfaces/luna luna-294 rocket!smith "passwd¥n## #
このコマンドの出力で、プリンタポートのエントリを探します。上の例で、ポート /dev/term/a はログイン端末として間違って設定されています。この行の最後に "passwd¥n## 情報が付いているのでわかります。ポートが正しく設定されている場合は、この手順の最後を飛ばしてください。
印刷要求を取り消します。
# cancel request-id
このコマンドで、request-id は取り消したい印刷要求の要求 ID 番号です。
プリンタポートをログインデバイス以外のものとして設定します。
# lpadmin -p printer-name -h
ps -ef コマンドからの出力をチェックして、プリンタポートがログインデバイスではなくなったことを確認します。
基本的な LP 印刷サービス機能に印刷時の問題の原因が見つからない場合は、次の中から該当するクライアント/サーバーの手順に進んでください。
まだチェックしていない場合は、印刷サーバー上で LP 印刷サービスの基本機能をチェックします。
基本機能をチェックする手順については、「LP 印刷サービスの基本機能をチェックするには」を参照してください。印刷クライアントから要求が出されたときに何も印刷されない原因を探す前に、プリンタがローカルで正しく動作することを確認してください。
まだチェックしていない場合は、印刷クライアント上で LP 印刷サービスの基本機能をチェックします。
基本機能をチェックする手順については、「LP 印刷サービスの基本機能をチェックするには」を参照してください。クライアントからの要求が印刷される前に、印刷クライアント上で LP スケジューラが動作していなければならず、またプリンタが使用可能であり、要求を受け付けられる状態になっていなければなりません。
次の手順のほとんどは、root または lp としてログインして実行しなければなりません。
SunOS 5.1 印刷クライアント上でのみ、Admintool の 「プリンタの変更 (Modify Printer)」ウィンドウを表示して、印刷サーバーのタイプが s5 になっていることを確認します。
このコマンドでは、印刷サーバーが正常に動作しているかどうかが表示されます。
# lpstat -t luna scheduler is running system default destination: luna device for luna: /dev/term/a luna accepting requests since May 20 17:41 1997. available. printer luna now printing luna-314. enabled since May 20 17:41 1997. available. luna-129 root 488 May 20 17:45 #
上の例は、印刷サーバーが起動され、動作していることを示しています。
印刷サーバーが正常に動作していない場合は、手順 1 に戻ります。
まだチェックしていない場合は、印刷クライアント上で LP 印刷サービスの基本機能をチェックします。
手順については、「LP 印刷サービスの基本機能をチェックするには」を参照してください。
印刷サーバーがアクセス可能であることを確認します。
印刷サーバーの lpd デーモンが正しく構成されていることを確認します。
印刷サーバー上でスーパーユーザーになり、lpc コマンドを入力します。
# /usr/etc/lpc lpc>
LP 状態情報を取得します。
lpc> status luna: queuing is enabled printing is enabled no entries no daemon present lpc>
状態情報が表示されます。上の例で、デーモンは動作していないので再起動する必要があります。
lpc> restart luna
デーモンが再起動されます。
lpd デーモンが起動されていることを確認します。
lpc> status
lpc コマンドを終了します。
lpc> quit
シェルプロンプトが再表示されます。
印刷クライアントが印刷サーバーにアクセスできることを確認します。
4.1 印刷サーバー上に /etc/hosts.lpd ファイルがあるかどうかをチェックします。
4.1 印刷サーバー上では、このファイルが存在する場合は、着信印刷要求を受け付けられるかどうかの判定に使用されます。このファイルが存在しない場合、すべての印刷クライアントシステムがアクセスできるため、次の手順 b と c を飛ばしてください。
ファイルが存在する場合は、印刷クライアントがファイルにリストされるかどうかを調べます。
ファイルにリストされていないクライアントシステムからの要求は、印刷サーバーに転送されません。
クライアントがリストされていない場合は、印刷クライアントをファイルに追加します。
ここまでで特に問題点が見つからない場合は、SunOS 4.1 システムは正常に設定され、機能しているはずです。
印刷クライアントからリモート lpd 印刷デーモンへの接続が正しく行われていることを確認します。
リモート印刷サーバーが SunOS 4.1 システムとして正しく識別されていることを確認します。
まだチェックしていない場合は、印刷サーバー上で LP 印刷サービスの基本機能をチェックします。
手順については、「LP 印刷サービスの基本機能をチェックするには」を参照してください。印刷クライアントから要求が出されたときに何も印刷されない原因を調べる前に、プリンタがローカルで動作していることを確認してください。
次の手順で指定されたシステムでは、スーパーユーザーまたは lp としてログインする必要があります。
印刷クライアントにアクセスできることを確認します。
印刷クライアント上で、プリンタが正しく設定されているかを確認します。
# lpr -P luna /etc/fstab lpr: cannot access luna #
このコマンドでは、印刷クライアントが動作しているかどうかが表示されます。上の例は、印刷クライアントが正常に動作していないことを示しています。
印刷クライアント上で lpd デーモンが動作していることを確認します。
印刷クライアント上で、印刷サーバーを識別する printcap エントリが存在することを確認します。
プリンタが認識されていることを確認します。
# lpr -P mercury /etc/fstab lpr: mercury: unknown printer #
上の例は、指定したプリンタのエントリが /etc/printcap ファイルに入っていないことを示しています。
エントリがない場合は、/etc/printcap ファイルを編集して次の情報を追加します。
printer-name|print-server:¥ :lp=:rm=print-server:rp=printer-name:br#9600:rw:¥ :lf=/var/spool/lpd/printer-name/log:¥ :sd=/var/spool/lpd/printer-name:
次の例は、印刷サーバー neptune に接続されたプリンタ luna のエントリを示しています。
luna|neptune:¥ :lp=:rm=neptune:rp=luna:br#9600:rw:¥ :lf=/var/spool/lpd/luna/log:¥ :sd=/var/spool/lpd/luna:
再試行を強制し、印刷クライアント lpd が待機状態になっていないことを確認します。
印刷サーバーが動作し応答している場合は、印刷クライアント lpd は再試行する前に待ち状態になっている可能性があります。
印刷サーバーへの接続をチェックします。
印刷クライアント上でスーパーユーザーになり、プリンタのログファイルを調べます。
# more /var/spool/lpd/luna/log
多くの場合、何も表示されません。
プリンタ状態ログもチェックします。
# more /var/spool/lpd/luna/status waiting for luna to come up #
接続が正常な場合は、印刷サーバー上で印刷サーバーが正しく設定されているかを確認します。
# lpstat -t scheduler is running system default destination: luna device for luna: /dev/term/a luna accepting requests since May 20 17:45 1997 printer luna now printing luna-314. enabled since May 20 17:45 1997. available. luna-129 root 488 May 20 17:47 #
上の例は、印刷サーバーが起動され、動作していることを示しています。
印刷サーバーが動作していない場合は、先に進む前に 手順 1 に戻ってください。
スーパーユーザーまたは lp としてログインします。
プリンタタイプが正しくないと、正しく出力されないことがあります。たとえば、プリンタタイプ PS を指定してページを逆順に印刷する場合は、プリンタタイプ PSR を試してください (この 2 つのタイプ名は大文字で指定しなければなりません)。また、プリンタタイプが正しくないと、テキストの欠落、読みづらいテキスト、または間違ったフォントのテキストが出力されることがあります。プリンタタイプを判別するには、terminfo データベース内のエントリを調べます。terminfo データベースの構造については、「プリンタタイプ」を参照してください。
印刷サーバー上で、プリンタの特性を表示します。
$ lpstat -p luna -l printer luna is idle. enabled since Tue Apr 29 11:55:52 MDT 1997. available. Form mounted: Content types: any Printer types: NeWSprinter20 Description: Connection: direct Interface: /etc/lp/interfaces/alamosa After fault: continue Users allowed: (all) Forms allowed: (none) Banner not required Character sets: Default pitch: Default page size: 80 wide 66 long Default port settings: $
プリンタのマニュアルを参照して、プリンタのモデルを調べます。
プリンタタイプが正しくない場合は、Admintool の「プリンタの変更 (Modify Printer)」オプションを使用して変更するか、次の lpadmin コマンドを使用します。
# lpstat -p printer-name -T printer-type
印刷クライアント上では、プリンタタイプを unknown にしてください。印刷サーバー上では、プリンタタイプは使用するプリンタのモデルをサポートするように定義された terminfo エントリと一致しなければなりません。使用するプリンタのタイプに関する terminfo エントリがない場合は、「サポートされていないプリンタの terminfo エントリを追加する方法」を参照してください。
バナーページは印刷されるが文書の本文が印刷されない場合は、ファイル内容形式を確認します。
プリンタに指定したファイル内容形式は、プリンタがフィルタなしで直接印刷できるファイル形式を示します。ファイル内容形式が正しくなければ、必要なときにフィルタリングがバイパスされることがあります。
前の手順の lpstat コマンドで表示されたファイル内容形式に関する情報をメモします。
印刷クライアント上では、1 つ以上の明示的な内容形式を指定する理由がない限り、ファイル内容形式を any にしてください。クライアント上で内容を指定すると、印刷サーバー上ではなく印刷クライアント上でフィルタリングが実行されます。また、クライアント上の内容形式は、印刷サーバー上で指定した内容形式と一致しなければならず、印刷サーバー上の内容形式はプリンタの機能を反映していなければなりません。
プリンタのマニュアルを参照し、プリンタで直接印刷できるファイルのタイプを判別します。
これらのファイル形式を参照するために使用する名前は、プリンタメーカーが使用している名前と一致しなくてもかまいません。ただし、使用する名前は LP 印刷サービスに認識されるフィルタで使用する名前と一致しなければなりません。
ファイル内容形式が正しくない場合は、Admintool の「プリンタの変更 (Modify Printer)」オプションで変更するか、次の lpadmin コマンドを使用します。
# lpadmin -p printer-name -I file-content-type(s)
必要に応じて、このコマンドを印刷クライアント上、印刷サーバー上、またはその両方で実行します。印刷クライアント上で -I any を試し、印刷サーバー上で -I "" を試してください。-I "" は、NULL のファイル内容形式リストを指定します。これは、プリンタはそのプリンタタイプと正確に一致するファイルしか直接印刷できないので、すべてのファイルをフィルタにかけることを意味します。
ファイルが印刷されないときは、まずこの組み合わせを選択してみるとよいでしょう。それで成功したら、印刷サーバー上で明示的な内容形式を指定し、不要なフィルタリングを減らすことができます。ローカルの PostScript プリンタでは、プリンタでサポートされている場合は、postscript または postscript,simple を使用してください。PS と PSR はファイル内容形式ではなく、プリンタタイプなので注意してください。
-I を省略すると、ファイル内容のリストはデフォルトの simple になります。-I オプションを使用し、simple 以外にもファイル内容形式を指定したい場合は、リストに simple を含めなければなりません。
複数のファイル内容形式を指定するときは、名前をカンマで区切ります。また、名前をスペースで区切り、リストを引用符で囲むこともできます。ファイル内容形式として any を指定すると、フィルタリングは行われないので、プリンタで直接印刷できるファイルタイプのみを送信する必要があります。
フォントのダウンロードに必要なフィルタリングを、印刷要求がバイパスしていないかどうかをチェックします。
ユーザーがコマンド lp -T PS を使用して印刷要求を PostScript プリンタに依頼すると、フィルタリングは実行されません。フィルタリングを強制するコマンド lp -T postscript を使用して要求を依頼しようとすると、文書に必要な非常駐フォントがダウンロードされることがあります。
プリンタポートの stty 設定値が正しいことを確認します。
プリンタのマニュアルを参照して、プリンタポートに合った stty 設定値を判別します。
プリンタがパラレルポートで接続されている場合、ボーレートの設定値は無関係です。
現在の設定値を調べるには、stty コマンドを使用します。
# stty -a < /dev/term/a speed 9600 baud; rows = 0; columns = 0; ypixels = 0; xpixels = 0; eucw 1:0:0:0, scrw 1:0:0:0 intr = ^c; quit = ^|; erase = ^?; kill = ^u; eof = ^d; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^q; stop = ^s; susp = ^z; dsusp = ^y; rprnt = ^r; flush = ^o; werase = ^w; lnext = ^v; parenb -parodd cs7 -cstopb -hupcl cread -clocal -loblk -parext -ignbrk brkint -ignpar -parmrk -inpck istrip -inlcr -igncr icrnl -iuclc ixon -ixany -ixoff imaxbel isig icanon -xcase echo echoe echok -echonl -noflsh -tostop echoctl -echoprt echoke -defecho -flusho -pendin iexten opost -olcuc onlcr -ocrnl -onocr -onlret -ofill -ofdel tab3 #
このコマンドでは、プリンタポートの現在の stty 設定値が表示されます。
LP 印刷サービスの標準プリンタインタフェースプログラムで使用されるデフォルトの stty オプションを表 72-2 に示しています。
表 72-2 標準インタフェースプログラムで使用されるデフォルトの stty 設定値
オプション |
意味 |
---|---|
-9600 |
ボーレートを 9600 に設定 |
-cs8 |
8 ビットバイトを設定 |
-cstopb |
1 バイト当たり 1 ストップビットを送信 |
-parity |
パリティを生成しない |
-ixon |
XON/XOFF (START/STOP または DC1/DC3 ともいう) を使用可能にする |
-opost |
以下にリストされた設定値をすべて使用して「処理後出力」を実行する |
-olcuc |
小文字を大文字に割り当てない |
-onlcr |
改行をキャリッジリターン/改行に変更する |
-ocrnl |
キャリッジリターンを改行に変更しない |
-onocr |
カラム 0 でもキャリッジリターンを出力する |
-n10 |
改行後の遅延なし |
-cr0 |
キャリッジターン後の遅延なし |
-tab0 |
タブ後の遅延なし |
-bs0 |
バックスペース後の遅延なし |
-vt0 |
垂直タブ後の遅延なし |
-ff0 |
用紙送り後の遅延なし |
stty 設定値を変更します。
# lpadmin -p printer-name -o "stty= options"
表 72-3 を使用して、印刷出力に影響する様々な問題を解決する stty オプションを選択します。
表 72-3 印刷出力の問題を解決する stty オプション
stty 値 |
結果 |
間違った設定から起こり得る問題 |
---|---|---|
110, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400 |
ボーレートを指定した値に設定する (ボーレートを 1 つだけ入力する) |
ランダム文字と特殊文字が印刷され、間隔がバラバラになることがある |
oddp evenp -parity |
奇数パリティを設定する 偶数パリティを設定する パリティを設定しない |
文字が欠落または間違った文字がランダムに表示される |
-tabs |
タブを設定しない |
テキストが右マージンにくっついてしまう |
tabs |
8 スペースごとにタブを設定する |
テキストに左マージンがなく、つながってしまうか、くっついてしまう |
-onlcr |
行頭でキャリッジリターンを設定しない |
間違ったダブルスペース |
onlcr |
行頭でキャリッジリターンを設定する |
ジグザグに印刷される |
オプションをスペースで区切り、オプションリストを単一引用符で囲むと、複数のオプションの設定を変更できます。たとえば、奇数パリティを使用可能にし、7 ビットの文字サイズを設定する必要のあるプリンタを仮定します。そのためには、次の例のようなコマンドを入力します。
# lpadmin -p neptune -o "stty='parenb parodd cs7'"
stty オプション parenb でパリティチェック/生成を使用可能にし、parodd で奇数パリティの生成を設定し、cs7 で文字サイズを 7 ビットに生成します。
文書が正しく印刷されることを確認します。
# lp -d printer-name filename
スーパーユーザーまたは lp としてログインします。
LP 印刷サービスを停止します。
# lpshut
このコマンドがハングする場合は、Control-c キーを押して次の手順に進みます。このコマンドが正常に実行された場合は、手順 4 に進みます。
LP のプロセス ID を確認します。
# ps -el | grep lp 134 term/a 0:01 lpsched #
次の手順の pid には、最初のカラムのプロセス ID 番号 (PID) を使用します。
kill -15 コマンドを使用して、LP プロセスを停止します。
# kill -15 134
これで LP 印刷サービスプロセスが停止します。プロセスが停止しない場合は、最後の手段として手順 5 に進みます。
最後の手段として、プロセスを強制終了します。
# kill -9 134
すべての lp プロセスが終了します。
次のコマンドでは、LP 印刷サービスを再起動できるように、SCHEDLOCK ファイルが削除されます。
# rm /usr/spool/lp/SCHEDLOCK
LP 印刷サービスを再起動します。
# /usr/lib/lp/lpsched
LP 印刷サービスが再起動されます。スケジューラが再起動されない場合は、「印刷スケジューラを再起動する方法」を参照してください。
この作業には、プリンタがアイドル状態であってはならないのにアイドル状態になるときに使用する多数の手順が含まれています。通常は各手順を順番に試しますが、順番どおりでなくてもかまいません。
プリンタ状態情報を表示します。
# lpstat -p printer-name
表示される情報は、プリンタがアイドル状態かアクティブ状態か、使用可能か使用不可か、または印刷要求を利用できるか受け付けていないかを示します。すべて正常と思われる場合は、この節の他の手順に進んでください。lpstat コマンドを実行できない場合は、「LP 印刷サービスのハングを解除する方法」を参照してください。
プリンタが利用できない (要求を受け付けていない) 場合は、プリンタが要求を受け付けるようにします
# accept printer-name
プリンタは、その印刷待ち行列に要求を受け付け始めます。
プリンタが使用不可になっている場合は、再び使用可能にします。
# enable printer-name
このコマンドでは、待ち行列にある要求を処理するように、プリンタを再び使用可能にします。
lpstat -o コマンドを使用して、印刷のフィルタリングをチェックします。
$ lpstat -o luna luna-10 fred 1261 Mar 12 17:34 being filtered luna-11 iggy 1261 Mar 12 17:36 on terra luna-12 jack 1261 Mar 12 17:39 on terra $
待機している最初の要求がフィルタリングされているかどうかを調べます。上の例のような出力になる場合は、ファイルがフィルタリングされています。プリンタはハングせず、要求の処理に少し時間がかかっているだけです。
プリンタ障害に関するメッセージを探し、ある場合は、その障害を解決してください。
プリンタ障害の警告がどのように指定されているかに応じて、メッセージを電子メールで root に送らせるか、root がログインした端末に書き出すことができます。
プリンタを再び使用可能にします。
# enable printer-name
プリンタ障害によって要求がブロックされた場合は、このコマンドで強制的に再試行します。このコマンドが動作しない場合は、この節の他の手順を続行します。
印刷クライアント上で、印刷サーバーへの印刷要求を、それ以上待ち行列に入れないようにします。
# reject printer-name
印刷クライアント上で、印刷サーバーに ping 要求 (存在をチェックする要求) を送信します。
print_client# ping print_server print_server is alive
「print_server not available」というメッセージが表示される場合は、ネットワークに問題があります。
問題を解決したら、新しい印刷要求を待ち行列に入れられるようにします。
# accept printer-name
必要であれば、再びプリンタを使用可能にします。
# enable printer-name
印刷サーバー上で、印刷クライアントから印刷サーバーへの印刷要求を、それ以上待ち行列に入れないようにします。
# reject printer-name
lpsched ログファイルを表示します。
# more /var/lp/logs/lpsched
表示される情報を参考にして、印刷クライアントから印刷サーバーへの印刷要求が印刷されない原因を正確に把握できます。
問題を解決したら、新しい印刷要求を待ち行列に入れられるようにします。
# accept printer-name
必要であれば、印刷サーバー上で再びプリンタを使用可能にします。
# enable printer-name
印刷サーバー上でプリンタが使用可能になっており、要求を受け付けているかどうかを確認します。
# lpstat -p printer-name
印刷クライアントが要求を受け付けているのに、印刷サーバーが要求を拒否しているときは、矛盾した状態メッセージが表示されます。
印刷サーバー上で、印刷クライアント上のプリンタの定義が、印刷サーバー上のプリンタの定義と一致するかどうかを確認します。
# lpstat -p -l printer-name
印刷フィルタ、文字セット、印字ホイール、フォームなど、印刷ジョブコンポーネントの定義を調べて、印刷クライアントとサーバー上で一致し、ローカルユーザーが印刷サーバーシステムのプリンタにアクセスできることを確認します。