たけ(tk)です
[vine-users:070973] Re: ls > /dev/lp0 で /dev/lp0: Device or resource busy になる にて
長南洋一 <cyoichi@xxxxxxxxxxxxxxx> さん曰く:
> # 新しいスレッドにした方がよかったと思うけれど。
そうでした。
プリンタケーブルのつなぎ換えは業務時間中には出来ないので、回答が遅くなっ
てすみません。
> たけ(tk) さんのメールより [vine-users:070958]
> >
> > で LPRng に変更したのですが、印刷できませんでした。調べてみたら、
> > /dev/lp0 がビジーだと言われてしまいました。
> >
> > [root@EDiCube-02 root]# ls > /dev/lp0
> > -bash: /dev/lp0: Device or resource busy
>
> 未完了の印刷 job が残っていませんか。lprm で job をすべて消してから
> やってみたらどうなります。いっそのこと、lpd を止めてしまってもよいと
> 思います。それでも ls >/dev/lp0 で印刷できないようなら、パラレル用の
> ドライバかハードウェア関係に問題があるのではないでしょうか。たとえば、
(1)/etc/init.d/lpd stop すると、 ls >/dev/lp0 で印刷できました。
[root@EDiCube-02 root]# ls | lpr -Plp7900
[root@EDiCube-02 root]# ls | /usr/libexec/filters/bfout2 > /dev/lp0
-bash: /dev/lp0: Device or resource busy
[root@EDiCube-02 root]# /etc/init.d/lpd stop
Stopping lpd: [ OK ]
[root@EDiCube-02 root]# ls | /usr/libexec/filters/bfout2 > /dev/lp0
[root@EDiCube-02 root]#
* /usr/libexec/filters/bfout2 は後述のofフィルター。ちゃんとプリンタが
切り替わる。
(2)lprm で空にしてから /etc/init.d/lpd restart した直後でも印刷できま
した。
[root@EDiCube-02 root]# ls | lpr -Plp7900
[root@EDiCube-02 root]# ls | /usr/libexec/filters/bfout2 > /dev/lp0
-bash: /dev/lp0: Device or resource busy
[root@EDiCube-02 root]# lprm
Printer lp7900@localhost:
checking perms 'root@localhost+64'
dequeued 'root@localhost+64'
[root@EDiCube-02 root]# /etc/init.d/lpd restart
Stopping lpd: [ OK ]
Starting lpd: [ OK ]
[root@EDiCube-02 root]# ls | /usr/libexec/filters/bfout2 > /dev/lp0
(3)しかし、lpr を実行すると、反応がなく、その後の ls >/dev/lp0 でビジー
になります。
[root@EDiCube-02 root]# ls | lpr -Plp7900
[root@EDiCube-02 root]# ls | /usr/libexec/filters/bfout2 > /dev/lp0
-bash: /dev/lp0: Device or resource busy
> また /var/log/messages の結果
Mar 23 15:29:42 EDiCube-02 (Worker - Print)[20144]: lp7900: Wait_for_pid: OF filter died with signal 'Hangup'
> ・かりにプリンタ名が lp だとして、/var/spool/lpd/lp にあるログファイル
> (log とか status.lp とか)に何か出ていないか。
[root@EDiCube-02 root]# cat /var/spool/lpd/lp7900/log
2005-03-23-14:56:04.433 localhost lp7900: Wait_for_pid: OF filter died with signal 'Hangup'
[root@EDiCube-02 root]# cat /var/spool/lpd/lp7900/status.pr
waiting for subserver to exit at 2005-03-23-15:18:37.046 ## A=<NULL> number=0 process=20067
subserver pid 20068 starting at 2005-03-23-15:18:37.050 ## A=root@localhost+64 number=64 process=20068
accounting at start at 2005-03-23-15:18:37.050 ## A=root@localhost+64 number=64 process=20068
opening device '/dev/lp0' at 2005-03-23-15:18:37.050 ## A=root@localhost+64 number=64 process=20068
printing job 'root@localhost+64' at 2005-03-23-15:18:37.051 ## A=root@localhost+64 number=64 process=20068
printing 'root@localhost+64' starting OF 'bfout1' at 2005-03-23-15:18:37.051 ##A=root@localhost+64 number=64 process=20068
lp7900: Wait_for_pid: OF filter died with signal 'Hangup' at 2005-03-23-15:26:36.416 ## A=<NULL> number=0 process=20068
OF filter problems, error 'JSIGNAL' at 2005-03-23-15:26:36.417 ## A=root@localhost+64 number=64 process=20068
accounting at end at 2005-03-23-15:26:36.417 ## A=root@localhost+64 number=64 process=20068
finished 'root@localhost+64', status 'JSIGNAL' at 2005-03-23-15:26:36.417 ## A=root@localhost+64 number=64 process=20068
waiting for subserver to exit at 2005-03-23-15:29:31.631 ## A=<NULL> number=0 process=20143
subserver pid 20144 starting at 2005-03-23-15:29:31.635 ## A=root@localhost+140number=140 process=20144
accounting at start at 2005-03-23-15:29:31.635 ## A=root@localhost+140 number=140 process=20144
opening device '/dev/lp0' at 2005-03-23-15:29:31.635 ## A=root@localhost+140 number=140 process=20144
printing job 'root@localhost+140' at 2005-03-23-15:29:31.635 ## A=root@localhost+140 number=140 process=20144
printing 'root@localhost+140' starting OF 'bfout1' at 2005-03-23-15:29:31.636 ## A=root@localhost+140 number=140 process=20144
lp7900: Wait_for_pid: OF filter died with signal 'Hangup' at 2005-03-23-15:29:42.360 ## A=<NULL> number=0 process=20144
OF filter problems, error 'JSIGNAL' at 2005-03-23-15:29:42.360 ## A=root@localhost+140 number=140 process=20144
accounting at end at 2005-03-23-15:29:42.361 ## A=root@localhost+140 number=140process=20144
finished 'root@localhost+140', status 'JSIGNAL' at 2005-03-23-15:29:42.361 ## A=root@localhost+140 number=140 process=20144
waiting for subserver to exit at 2005-03-23-15:31:28.950 ## A=<NULL> number=0 process=20188
subserver pid 20189 starting at 2005-03-23-15:31:28.953 ## A=root@localhost+185number=185 process=20189
accounting at start at 2005-03-23-15:31:28.953 ## A=root@localhost+185 number=185 process=20189
opening device '/dev/lp0' at 2005-03-23-15:31:28.953 ## A=root@localhost+185 number=185 process=20189
printing job 'root@localhost+185' at 2005-03-23-15:31:28.954 ## A=root@localhost+185 number=185 process=20189
printing 'root@localhost+185' starting OF 'bfout1' at 2005-03-23-15:31:28.954 ## A=root@localhost+185 number=185 process=20189
[root@EDiCube-02 root]#
* 'JSIGNAL' って何でしょう?
> また /proc/ioports の結果も
[root@EDiCube-02 root]# cat /proc/ioports
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : ide1
01f0-01f7 : ide0
0376-0376 : ide1
0378-037a : parport0
03c0-03df : vga+
03f6-03f6 : ide0
03f8-03ff : serial(auto)
0cf8-0cff : PCI conf1
4000-40ff : PCI CardBus #02
4400-44ff : PCI CardBus #02
4800-48ff : PCI CardBus #06
4c00-4cff : PCI CardBus #06
a000-afff : PCI Bus #01
a800-a87f : Silicon Integrated Systems [SiS] SiS630 GUI Accelerator+3D
b400-b47f : Silicon Integrated Systems [SiS] Intel 537 [56k Winmodem]
b800-b8ff : Silicon Integrated Systems [SiS] Intel 537 [56k Winmodem]
d000-d0ff : Silicon Integrated Systems [SiS] SiS PCI Audio Accelerator
d400-d4ff : Silicon Integrated Systems [SiS] SiS900 10/100 Ethernet
d400-d4ff : sis900
d800-d80f : Silicon Integrated Systems [SiS] 5513 [IDE]
d800-d807 : ide0
d808-d80f : ide1
[root@EDiCube-02 root]#
> また /sbin/lsmod の結果も
[root@EDiCube-02 root]# lsmod
Module Size Used by Not tainted
parport_pc 32072 1 (autoclean)
lp 8512 0 (autoclean)
parport 35400 1 (autoclean) [parport_pc lp]
ds 8660 2
yenta_socket 13792 2
pcmcia_core 57600 0 [ds yenta_socket]
smbfs 52400 0 (autoclean)
autofs 13492 0 (autoclean) (unused)
sis900 15660 1
crc32 3592 0 [sis900]
usbmouse 3192 0 (unused)
usb-ohci 22648 0 (unused)
hid 24900 0 (unused)
rtc 9352 0 (autoclean)
usb-storage 76960 0 (unused)
sd_mod 13420 0 (unused)
scsi_mod 69528 1 [usb-storage sd_mod]
[root@EDiCube-02 root]#
> ls >/dev/lp0 をお試しになったということは、lpr hoge.ps では印刷でき
> なかったのでしょうか。それならば、次のような情報が必要だと思います。
>
> ・Vine 3.1 は新規インストールなのか。
Windowsをつぶして、『日経Linux 2004/10』の付録のCD(Vine Linux 3.0)を
新規インストール。
> ・プリンターの機種名。
プリンターはエプソンのlp8300とlp7900ですが途中にmelcoのjwpというプリンタ
切替機がついている。「@bFOUT1;」を送るとそれ以後のデータがlp7900に送られ、
「@bFOUT2;」を送るとそれ以後のデータがlp8300に送られるという仕組み。
> ・ドライバは何を選択したのか。
ドライバは無し。生データです。Samba用なので、Windowsで加工して送る。
> ・/etc/printcap の内容。
[root@EDiCube-02 root]# cat /etc/printcap
# This file was automatically generated by cupsd(8) from the
# /etc/cups/printers.conf file. All changes to this file
# will be lost.
##PRINTTOOL3## LOCAL
lp7900:\
:sd=/var/spool/lpd/lp7900:\
:mx#0:\
:of=/usr/libexec/filters/bfout1:\
:sh:\
:lp=/dev/lp0:
##PRINTTOOL3## LOCAL
lp8300:\
:sd=/var/spool/lpd/lp8300:\
:mx#0:\
:of=/usr/libexec/filters/bfout2:\
:sh:\
:lp=/dev/lp0:
[root@EDiCube-02 root]#
* http://search.luky.org/vine-users.6/msg03700.html によると、「空行1
行」である必要があるらしいが、うえの設定では「##PRINTTOOL3## LOCAL」で区
切られている。これで良いのだろうか?
* うえに書かれているofフィルターは下記の通り。プリンタに印刷できる場合
には、プリンタの切り替えもうまくいっている。
[root@EDiCube-02 root]# cat /usr/libexec/filters/bfout2
#!/bin/sh
echo -n '@bFOUT2;'
cat
[root@EDiCube-02 root]#
[root@EDiCube-02 root]# cat /usr/libexec/filters/bfout1
#!/bin/sh
echo -n '@bFOUT1;'
cat
[root@EDiCube-02 root]#
[root@EDiCube-02 root]# ls | /usr/libexec/filters/bfout1
@bFOUT1;anaconda-ks.cfg
Desktop/
hoge.txt
mbox
rpm/
upgrade-log
[root@EDiCube-02 root]#
> ・プリンタ設定後 lpd の restart はしたのか。
はい
> ・/sbin/update-alternatives --display print の結果。
> # 最初の二三行をお見せになれば、充分でしょう。
[root@EDiCube-02 root]# /sbin/update-alternatives --display print
print - status is manual.
link currently points to /usr/bin/lpr.lprng
/usr/bin/lpr.cups - priority 50
slave print-lpqman: /usr/share/man/man1/lpq-cups.1.gz
> ・ちょっとくどいけれど、念のため。
> ls -l /usr/bin/lpr
[root@EDiCube-02 root]# ls -l /usr/bin/lpr
lrwxrwxrwx 1 root root 23 Oct 16 15:59 /usr/bin/lpr -> /etc/alt
ernatives/print*
[root@EDiCube-02 root]#
> ls -l /etc/alternatives/print
[root@EDiCube-02 root]# ls -l /etc/alternatives/print
lrwxrwxrwx 1 root root 18 Mar 5 16:02 /etc/alternatives/print
-> /usr/bin/lpr.lprng*
[root@EDiCube-02 root]#
> ・printtool からテスト印刷したとき、何かエラーメッセージは出なかったか?
> ・lpr -Pプリンタ hoge.ps のときは?
take_tk = kumagai hidetake