나는 도트 매트릭스 프린터인 Epson LQ-500을 가지고 있습니다.
목록, 텍스트 파일 등을 인쇄하는 데 가끔 사용하는 CUPS와 잘 작동합니다.
이제 로그 프린터로 사용하고 싶습니다. 이렇게 하려면 파일이나 명명된 파이프에 추가될 때 한 줄을 인쇄해야 합니다.
나는 다음과 같은 것을 사용할 생각입니다 :
tail -n1 -f file | lpr -l -h -P Epson-LQ-500
하지만 작동하지 않고 인쇄 작업이 계속 보류됩니다. 그런 다음 이것을 시도했습니다.
tail -n1 -f file | lp -d Epson-LQ-500 -o raw -H immediate
역시 작동하지 않습니다. 인쇄 작업이 무기한 보류됩니다.
tail
없이 사용하거나 -f
사용 cat
하면 모든 것이 잘 작동하지만 CUPS에서는 한 줄씩 인쇄할 수 없습니다.
그럼 어떻게 해야 하나요?
답변1
CUPS 시스템은 프린터입니다.스풀러(즉, 프린터가 공유된다고 가정합니다. 인쇄 중인 내용을 수집하여 인쇄가 완료된 후에만 프린터로 보냅니다. 헤더를 보내는 동안 다른 사람의 인쇄가 지연되지 않도록 1/2시간 계산을 수행한 다음 나머지를 인쇄합니다.) .
이 문제를 해결하는 가장 쉬운 방법은 출력을 프린터 장치로 직접 보내는 것입니다. 이는 먼저 CUPS가 출력을 그대로 두도록 설득하고 프린터가 실제로 전송되는 텍스트를 이해하는지 확인하는 것을 의미할 수 있습니다.
답변2
tail -f file > /dev/lp0
병렬 프린터와 적절한 권한이 있고 프린터를 공유할 수 없다고 가정합니다.
답변3
나는 이것을 사용하여 문제를 해결했습니다.
tail -n2 -f file | while read line
do
echo $line | lpr -l -h -P Epson-LQ-500
done
그러나 이것이 최선의 방법인지는 확실하지 않습니다.
답변4
tail -n2 -f file | while read line
do
echo $line | lpr -l -h -P Epson-LQ-500
done
기존 라인 프린터는 즉시성 때문에 매우 유용했습니다. 캐릭터가 버려졌을 때/dev/lp0, 깨지지 않는 종이에 직접 들어갑니다.
침입(또는 시스템 충돌)을 포착하기 위해 이 파일을 추적하는 경우 시스템에 추가하기 전에 점점 더 많은 소프트웨어 단계(셸, lpr, 프린터 필터)를 거치는 라인의 지연과 불일치를 추가한 것입니다. 안전. 페이지.
컴퓨터가 충돌하거나 전원이 꺼지거나 누군가가 lpr을 해킹하는 경우 프린터는 이벤트를 정확하게 기록할 수 없습니다.
중요하지 않은 작업의 경우 다른 편의 기능이 있으면 좋을 것입니다. 저는 기존 라인 프린터를 사용하여 한 번에 하나씩 라벨을 인쇄합니다(레이저 프린터를 사용하려면 종이 전체를 인쇄해야 합니다).
시간이나 보안에 중요한 콘텐츠를 프린터로 보내야 하는 경우 다음을 사용하십시오.
tail -f file > /dev/lp0
(그래도 만약진짜종이에 로그온하는 데 필요한 핵심 정보는 커널의 셸과 파일 시스템을 완전히 우회할 수 있다는 것입니다. )
구형 라인 프린터에는 필요하지 않습니다.어느일반 텍스트를 실시간으로 인쇄하는 드라이버입니다.