ドットマトリックスプリンタで「tail -f」を使用して各行を印刷する方法

ドットマトリックスプリンタで「tail -f」を使用して各行を印刷する方法

私はドットマトリックスプリンターEpson LQ-500を持っています。

リスト、テキストファイルなどを印刷するために頻繁に使用されるCUPSとうまく機能します。

今ログプリンタとして使用したいと思います。これを行うには、ファイルまたは名前付きパイプに追加したときに1行を印刷する必要があります。

私は次のようなものを使うつもりです。

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行ずつ印刷できません。

ではどうすればいいですか?

答え1

CUPSシステムはプリンタです。スプーラ(つまり、プリンタが共有されているとします。印刷中のコンテンツを収集し、印刷が完了した後にのみプリンタに送信します。 .) 。

この問題を解決する最も簡単な方法は、出力をプリンタデバイスに直接送信することです。これは、まず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をハッキングしたりすると、プリンタはイベントを正確に記録できません。

重要でない作業の場合は、他の便利な機能があれば良いでしょう。私は既存のラインプリンタを使用して一度に1つずつラベルを印刷します(レーザプリンタを使用するには紙全体を印刷する必要があります)。

時間やセキュリティに重要なコンテンツをプリンタに送信する必要がある場合は、次を使用します。

tail -f file > /dev/lp0

(それでも本物紙にログオンするために必要な重要な情報は、カーネルのシェルとファイルシステムを完全にバイパスできることです。 )

古いラインプリンタには必要ありません。どのプレーンテキストをリアルタイムで印刷するドライバです。

関連情報