印刷を行うためには、lpd システムがどのように動作するのか理解する必要が あります。
LPD は Line Printer Daemon の頭文字をとっています。また文脈によっては そのデーモンという意味で用いられたり、印刷のスプールを実行する一連の プログラム全体という意味で用いられたりします。これらは以下のようなもの です。
lpd
スプールを行うデーモンです。マシン上のあらゆることを 制御するためにこれらの 1つが実行されています。プリンタが印刷している間 は、印刷するプリンタ毎にさらにもう 1つが実行されます。
lpr
ユーザがスプールを実行させるコマンドです。lpr は lpd と連絡をとり、新たな印刷ジョブをスプールの印刷キューに入れます。
lpq
印刷キューの中の印刷待ちジョブ・リストを表示します。
lpc
lpd システムを制御するコマンドです。このコマンド を用いることで、印刷キューを止めたり、キューを開始させたり、キューの 中の順番を変更する、といったようなことが可能になります。
lprm
lprm
は印刷のスプールから印刷ジョブを削除します。
コマンドとデーモンはそれぞれどのように連携して印刷を行うのでしょうか? システムの起動時に lpd が起動します。 lpd は自分がどのプリンタのスプール を管理しているのか知るために、/etc/printcap ファイルを参照し ます。 lpr コマンドが実行されるごとに、lpr は /dev/printer と いうデバイス名のソケットを経由して lpd と連携をとります。そして 印刷するファイル、誰が印刷するのか、どうやって印刷するのか、と いったようないくつかの情報を lpd に与えます。それから lpd はファイル を適切なプリンタ上で順番に印刷するのです。
lp システムは、かつてほとんどのプリンタが ascii 文字のみを印刷する ラインプリンタだった頃に元々デザインされたものです。そのため、 現在の印刷ジョブ (PostScript、テキスト、 dvi といったようなもの) の ために lpd を問題なく動作させるには、わずか数行ではありますが追加で スクリプトを記述しなければならない、ということがわかります。