プロが教える店舗&オフィスのセキュリティ対策術

■CUPS について詳しい方、教えて下さい。

(1)端末の環境
・VineLinux4.0
・CUPS Version 1.1.23-0vl7
・RICHO のプリンタ1台につき、30台のクライアントが接続されている。
・学校で使用している為、クライアントから一斉に印刷するケースがある。

(2)状況
・普段は正常に印刷が可能だが、何らかのタイミングで CUPS の error.log に
 エラーが書き込まれ、それ以降は印刷不能となる。
・印刷不能となる端末は 30台中、2台程度。
・恐らく、30台から一斉に印刷が開始された際に、プリンターへ負荷が掛かり、
 キューを受け付けられなくなった状態と思われる。
・CUCPS を再起動すると、正常に印刷が可能となる。
・原因追求の為、エラーログを debug2 レベルに変更し、error.log を取得。
・エラーログを読み、ステータスなどのコードについて調べてみたが情報が
 見当たらない。

(3)CUPS error.log (一部分のみ抽出)

■正常印刷時
D [12/Jul/2007:15:08:22 +0900] [Job 16] lpd_command 02
D [12/Jul/2007:15:08:22 +0900] [Job 16] lpd_command returning 0
D [12/Jul/2007:15:08:22 +0900] StopJob: printer state is 3

■印刷不能時
D [17/Jul/2007:10:18:23 +0900] [Job 46] lpd_command 02
D [17/Jul/2007:10:18:23 +0900] [Job 46] lpd_command returning 1
D [17/Jul/2007:10:18:23 +0900] StopJob: printer state is 5

(4)不明な点
・CUPS error.log の「StopJob: printer state is 5」の"5"はどのような
 意味なのでしょうか?

A 回答 (1件)

こんばんは。



>「StopJob: printer state is 5」の"5"はどのような
>意味なのでしょうか?

CUPSのオンラインWEBマニュアルがVineLinuxにインストールされているので
読んでみました。

http://localhost:631/

Printer States
The printer state values are used to represent the current printer state.
* IPP_PRINTER_IDLE - Printer is idle
* IPP_PRINTER_PROCESSING - Printer is processing
* IPP_PRINTER_STOPPED - Printer is stopped


これだけでは、どのStatesが何番か分からないので、cupsのソースを
ダウンロードして、確認してみました。

cups-1.1.23-source.tar.gz cups/ipp.h より

typedef enum  /**** Printer States.... */
{
IPP_PRINTER_IDLE = 3,
IPP_PRINTER_PROCESSING,
IPP_PRINTER_STOPPED
} ipp_pstate_t;

ということで、5番は、IPP_PRINTER_STOPPED (プリンタが止まった)
ですね。


「StopJob: printer state is 5」
このデバッグ用メッセージは、scheduler/job.c の2149行で出力されています。

2142 if (current->status < 0 &&
2143 !(current->dtype & (CUPS_PRINTER_CLASS | CUPS_PRINTER_IMPLICIT)) &&
2144 !(current->printer->type & CUPS_PRINTER_FAX))
2145   SetPrinterState(current->printer, IPP_PRINTER_STOPPED, 1);
2146 else if (current->printer->state != IPP_PRINTER_STOPPED)
2147   SetPrinterState(current->printer, IPP_PRINTER_IDLE, 0);
2148
2149 LogMessage(L_DEBUG, "StopJob: printer state is %d", current->printer->state);

参考にして下さい。
    • good
    • 0
この回答へのお礼

 xjd さん、ご回答ありがとうございます。
ソースまで読んで頂き、大変感謝しております。

 どのように対処しようか考えておりましたが、
CUPS 1.3 系には「ErrorPolicy」という設定が追加され、
デフォルトでは「stop-printer」になっているようです。
これを「retry-job」に変更し、印刷されるようになるか
経過を見てみたいと思います。

お礼日時:2007/08/24 10:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!