Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

印刷時が途中で停止してしまう

90 views
Skip to first unread message

Hideki Suzuki

unread,
Mar 10, 2003, 4:23:34 AM3/10/03
to
鈴木と申します。
新規に設定・調整している社内のサーバーで印刷の不具合が発生し
ています。
どなたかアドバイスいただけないでしょうか?
長くなりますが、下記にまとめてみます。


■症状
印刷が途中で停止してしまう

■詳細
・Linux上で、Samba を実行し、Windows2000SP3から AcrobatReader
 を使用して、そのLinuxBoxに接続したプリンターに印刷したとこ
 ろ、全10ページのうち3ページ目を出力した時点で停止してしまっ
 た。

■確認1
・上記時点で、プリンターの「ジョブ」ランプは点灯したままの
 状態。
 これは、プリンター内のバッファにデータが残っている状態。
 LinuxBoxからのデータ送信は停止してしまっている状態。
・しばらく放置後、lpq で確認すると該当 job は、stalled の
 状態になっている。
・lprm によるクリア、プリンターの再起動、サーバーの再起動、
 クライアントの再起動を行い数回行うが、同じ状態。

■確認2
・Samba の影響かどうかを確認。
・Windowsの AcrobatReader の印刷先をファイルに変更し、
 foo.dat として保存。
 ファイルをLinuxBoxに持っていき、lpr foo.dat で出力。
・このファイルは、10ページ分のデータをLIPS4のドライバで出力
 したもので、約3.8Mbytes。
・最初と同じように途中で停止してしまう。

■確認3
・lpd の影響かどうかを確認。
・上記確認2のファイルを cat foo.dat > /dev/lp0 で出力。
・最初と同じように途中で停止してしまう。

■確認4
・PDFファイル、プリンタードライバの影響を確認。
・WindowsPCに直接プリンターを接続し、AcrobatReader から出力
 すると問題なく最後まで出力された。

■その他
・Windows2000 - Samba の状態で、画像を多く含む Word 文書を印
 刷した際にも同様にプリンターが停止する症状がある。
・他のPCサーバー(他メーカー、異ハード構成、OSは同一)にも同様
 の設定をして実験したところ、同じ症状が出た。

■想像...
こんなことが起きてしまっているのでは、と想像。
・印刷データが大きくなった場合に停止している。
・プリンターのバッファが一杯になった時点で、プリンターから
 サーバーに対し「待て」がかかる。
・プリンターの処理が進み、プリンターは「受信準備OK」をサー
 バーに指示するが、サーバーが送信を開始しない。

■環境(プリンター)
Canon LBP-740e
パラレルポート接続

■環境(サーバーハードウェア)
DELL PowerEdge 600SC
Pentium4 1.7GHz
256 Memory
IDE 40G x 3 RAID5 (有効 80G)

■環境(サーバーソフトウェア)
# cat /etc/redhat-release
Red Hat Linux release 8.0 (Psyche)
# uname -r
2.4.18-14
# rpm -q LPRng
LPRng-3.8.20-1

■環境(設定)
# head -n25 /etc/printcap
# /etc/printcap
#
# DO NOT EDIT! MANUAL CHANGES WILL BE LOST!
# This file is autogenerated by printconf-backend during lpd init.
#
# Hand edited changes can be put in /etc/printcap.local, and will be
included.

lbp-740:\
:ml#0:\
:mx#0:\
:sd=/var/spool/lpd/lbp-740:\
:sh:\
:lp=/dev/lp0:
以下略


# cat /etc/modules.conf
alias parport_lowlevel parport_pc
alias eth0 e1000
alias scsi_hostadapter aic7xxx
alias scsi_hostadapter1 megaraid
alias usb-controller usb-ohci


/etc/lpd.conf はデフォルトのままです。


■まとめ
・要するに、Windows上で作成された、LIPS4のデータを
 Samba - lpr - lpd - /dev/lp0 - プリンター
 と、そのまま出力してくれればいいのですが...
・「ここを調べてみたら?」や、「ここの設定をこうしてみたら?」
 等、何かアドバイスをいただければと思います。


よろしくお願いします。


_/_/_/_/
_/_/_/_/ Hideki Suzuki
_/_/_/_/ hi...@dainana.jp
_/_/_/_/

Hideki Suzuki

unread,
Mar 12, 2003, 7:21:10 PM3/12/03
to
 こんにちは、鈴木です。
 (タイトルおかしかったです、修正しました)


 印刷時の不具合について、なんとか解決しました。

 ■対処方法
  spintime の設定を変更し、対処した

 ■参考文書
  Kernel 付属の parport.txt
  /usr/src/linux-xxxx/Documentation/ にあります。
  xxxx は、kernel のバージョンです。

 ■詳細
  ・/proc/sys/dev/parport/parport0/spintime
   の値 初期値 500 を 125 にした。
  ・但し、直接修正しても、ファイルが「つかまれている」
   様子で正しく修正できない。
  ・/etc/rc.d/rc.local に下記を付加し、処理した。
   -----8<-----8<-----
   rmmod lp
   rmmod parport_pc
   echo 125 > /proc/sys/dev/parport/default/spintime
   insmod parport_pc
   -----8<-----8<-----
  ・default/spintime を指定することにより、parport0/spintime
   も同じ値になる。
  ・spintime とは (上記、parport.txt より抜粋)
   > The number of microseconds to busy-loop while waiting
   > for the peripheral to respond.
   ということで、プリンターとのやり取りのタイミングについて
   関連しているものと思われる。


 spintime の設定については、もっといい方法があるかもしれ
 ません。
 ご存知の方がいらっしゃいましたら、ご指摘ください。


> ■症状
> 印刷が途中で停止してしまう
>
> ■詳細
> ・Linux上で、Samba を実行し、Windows2000SP3から AcrobatReader
>  を使用して、そのLinuxBoxに接続したプリンターに印刷したとこ
>  ろ、全10ページのうち3ページ目を出力した時点で停止してしまっ
>  た。

SEKINE Tatsuo

unread,
Mar 12, 2003, 11:10:19 PM3/12/03
to linux...@linux.or.jp
関根です。

Hideki Suzuki <hi...@dainana.jp> wrote


>   ・/etc/rc.d/rc.local に下記を付加し、処理した。
>    -----8<-----8<-----
>    rmmod lp
>    rmmod parport_pc
>    echo 125 > /proc/sys/dev/parport/default/spintime
>    insmod parport_pc
>    -----8<-----8<-----

(snip)

>  spintime の設定については、もっといい方法があるかもしれ
>  ません。
>  ご存知の方がいらっしゃいましたら、ご指摘ください。

/etc/modules.conf に以下のように記述すればよいかと。

post-install parport echo 250 > /proc/sys/dev/parport/default/spintime 2>/dev/null || :

--
SEKINE Tatsuo:
http://www.sdri.co.jp/~tsekine/
tse...@sdri.co.jp(business) System Design & Research Institute Co.,Ltd.
tse...@ylug.org(private) Yokohama Linux Users Group

Hideki Suzuki

unread,
Mar 16, 2003, 9:02:19 PM3/16/03
to linux...@linux.or.jp
 関根さん、こんにちは。
 鈴木です。

 情報ありがとうございます。

> /etc/modules.conf に以下のように記述すればよいかと。
>
> post-install parport echo 250 > /proc/sys/dev/parport/default/spintime 2>
> /dev/null || :


 man modules.conf
 > post-install module command
 > 指定したモジュールをインストールした後に command を実行
 > する。
 ですね。

 もしかしたら、pre-install の方が、上手くいくかも知れません。
 但し、現状では、既存の modules.conf の parport の行を削除
 しても、parport モジュールがインストールされていたので、上
 手くいくかどうか心配です。

 サーバーが稼動し始めてしまいましたので、次回停止可能な時に
 トライしてみます。


 大変参考になりました。

SEKINE Tatsuo

unread,
Mar 16, 2003, 9:16:08 PM3/16/03
to linux...@linux.or.jp
関根です。

Hideki Suzuki <hi...@dainana.jp> wrote


> > post-install parport echo 250 > /proc/sys/dev/parport/default/spintime 2>
> > /dev/null || :
>

(snip)


>
>  もしかしたら、pre-install の方が、上手くいくかも知れません。
>  但し、現状では、既存の modules.conf の parport の行を削除
>  しても、parport モジュールがインストールされていたので、上
>  手くいくかどうか心配です。

多分 post-install じゃなきゃだめです。
/proc/sys/dev/parport/default/spintime
という proc エントリ(仮想ファイル)は、parport モジュールがロード
されないとできません。

/proc/sys 以下のエントリについては
rc.sysinit 実行中にエントリが存在する
→ /etc/sysctl.conf に記述
モジュールをロードするとエントリが作成される
→ /etc/modules.conf の post-install に記述
になると思います。

>  サーバーが稼動し始めてしまいましたので、次回停止可能な時に
>  トライしてみます。

サーバを止めなくても、プリンターさえ止めてよければ確認できますよ。

# /etc/init.d/lpd stop
# /sbin/modprobe -r lp
# /sbin/modprobe -r parport_pc
# /sbin/modprobe -r paport
<ファイル修正>
(それと、/proc/sys/dev/parport がないことの確認)
# /sbin/depmod -a
# /etc/init.d/lpd start

パラレルポートが 2 つ以上あるなら無理ですが。

Hideki Suzuki

unread,
Mar 24, 2003, 4:16:13 AM3/24/03
to linux...@linux.or.jp
 関根さん、こんにちは。
 鈴木です。


 返信が遅れてすみませんでした。
 教えていただいたとおり、/etc/modules.conf への記述のみで目
 的は達成できました。

 プリンターのみの停止、サーバーの再起動の双方とも、テストし
 確認できました。

 詳しく説明していただき、ありがとうございました。
 /proc/sys 以下の生成について、理解を深めることができました。


> 多分 post-install じゃなきゃだめです。
> /proc/sys/dev/parport/default/spintime
> という proc エントリ(仮想ファイル)は、parport モジュールがロード
> されないとできません。
>
> /proc/sys 以下のエントリについては
> rc.sysinit 実行中にエントリが存在する
> → /etc/sysctl.conf に記述
> モジュールをロードするとエントリが作成される
> → /etc/modules.conf の post-install に記述
> になると思います。
>
> >  サーバーが稼動し始めてしまいましたので、次回停止可能な時に
> >  トライしてみます。
>
> サーバを止めなくても、プリンターさえ止めてよければ確認できますよ。
>
> # /etc/init.d/lpd stop
> # /sbin/modprobe -r lp
> # /sbin/modprobe -r parport_pc
> # /sbin/modprobe -r paport
> <ファイル修正>
> (それと、/proc/sys/dev/parport がないことの確認)
> # /sbin/depmod -a
> # /etc/init.d/lpd start

_/_/_/_/

0 new messages