プリンター・インターフェース・スクリプトの作成
terminfo データベースへのエントリーの追加によってサポートされないプリンターを使用している場合、または印刷要件が standard インターフェース・スクリプトや、/etc/lp/model ファイルに提供されているその他のインターフェース・スクリプトによってサポートされない場合は、ユーザー独自のプリンター・インターフェース・スクリプトを作成できます。
カスタマイズしたインターフェース・スクリプトを作成するには、次の手順で行います。
障害メッセージを印刷サービスに送信するように指定するには、lp.tell コマンドを使用します。
standard プリンター・インターフェース・コードは、LPTELL シェル変数を指定して lp.tell コマンドを呼び出します。lp.tell プログラムは、標準入力を印刷サービスに送信します。印刷サービスは、メッセージをアラートとして管理者に転送します。標準入力が空の場合、lp.tell はアラートを開始しません。lp.tell (LPTELL) プログラムの使用法の例については、standard インターフェース・スクリプト内で次のコメントの直後にあるコードを検討してください。
# Here's where we set up the $LPTELL program to capture
# fault messages.
#
# Here's where we print the file.特殊終了コード 129 または lp.tell の場合、インターフェース・スクリプト自体がプリンターを使用不可に設定する必要はありません。インターフェース・スクリプトがプリンターを直接使用不可に設定することはできますが、このようにすると障害アラート・メカニズムが指定変更されます。アラートは、プリンターに障害が発生したことを印刷サービスが検出した場合のみ送信され、その主な検出手段は特殊終了コードと lp.tell プログラムです。
印刷サービスがファイルの印刷をいずれかの時点で中断する必要がある場合は、シグナル 15 を使用してインターフェース・スクリプトを強制終了します (詳しくは、signal コマンドと kill コマンドを参照)。
他のいずれかのシグナルを受信した時点でインターフェース・スクリプトが停止した場合、印刷サービスは、以降の印刷ジョブは影響を受けないと想定し、プリンターの使用を継続します。印刷サービスは、ジョブが正常に終了しなかったことを印刷ジョブの送信者に通知します。
シグナル SIGHUP、SIGINT、SIGQUI、および SIGPIP (トラップ番号 1、2、3、および 13) は、インターフェースの呼び出し時には無視されます。standard インターフェース・スクリプトはこの動作を変更して、適切な時点でこれらのシグナルを捕捉し、これらのシグナルがプリンターに問題があることを意味していると解釈して、障害を発行するようにします。