CUPSを実行するRedhatマシン(2.6.9-42.ELsmp)があります。たまに、大きなファイルをプリンターに送信すると、スタックが発生するため、プリンターを再起動します。 300秒間応答しなくなると、プリンタは使用できなくなります。その後、CUPSは使用可能なプリンターリストからプリンターを削除し、再試行することはありません。
とにかく、プリンターが再びオンラインになったときにCUPSがプリンターと通信して、リストに再度追加するように設定できますか?
これを「解決」する方法は、発生するたびに、printers.confファイルを手動で変更し、プリンターのステータスを「アイドル」に変更してから、サービスを再起動することです。これを行う方が良いと確信していますね。
ありがとう、
タム。
これは、cupsd.confまたはprinters.confのErrorPolicyを変更することで修正する必要があります。
CUPS 1.3/Mac OS X 10.5ErrorPolicy
例
ErrorPolicyabort-job
ErrorPolicy再試行ジョブ
ErrorPolicystop-printer
説明
ErrorPolicyディレクティブは、バックエンドが印刷ジョブをプリンターに送信できない場合に使用されるデフォルトのポリシーを定義します。 [...]
参照: http://www.cups.org/doc-1.4/ref-cupsd-conf.html#ErrorPolicy
デフォルトは次のとおりです。
stop-printer-プリンターを停止し、将来の印刷のためにジョブを保持します
しかし、あなたはおそらく望むでしょう:
再試行ジョブ-N秒待ってからジョブを再試行します[...]
(または、retry-this-job)。
注:CUPS V1.4 +では、FatalErrorsと呼ばれます。
実行しているCUPSのバージョンに応じて、さまざまな方法で問題に取り組むことができます。
また、CUPSサーバーのプリントキューが実際のプリントデバイスにどの程度正確に接続されているかによって異なります:ipp://?、socket://?、lpd://?
その他の最近のバージョンのCUPSには、ここで役立つ機能が組み込まれています。これは「ErrorPolicy」と呼ばれます。デフォルト設定はcupsd.confで選択されており、cupsdが期待どおりに動作しない印刷キューを処理する方法を決定します。デフォルトとして設定するか、各キューに個別にタグを付けるか、4つの選択肢があります。
ErrorPolicy abort-job
ErrorPolicy retry-job
ErrorPolicy retry-this-job
ErrorPolicy stop-printer
さらに、個別のErrorPoliciesを個別の印刷キューごとに設定できます。この設定は、printers.confファイルに記載されています。 (コマンドラインからlpadmin -p printername -o printer-error-policy=retry-this-job
を使用して設定します)。
古いバージョンのCUPSについては、beh
、CUPSを確認することをお勧めします バックエンドハンドラー 。 beh
は、任意のCUPSバックエンドに適用できるラッパーです。
印刷キューが現在socket://192.168.1.111:9100
のバックエンドを定義していて、それが気に入らない方法で動作すると仮定します(ネットワーク接続の問題のためにcupsdによって時々無効にされます)。 beh
を使用すると、バックエンドを次のように再定義します。
beh:/0/20/120/socket://192.168.1.111:9100
これにより、2分間隔でジョブが20回再試行され、それでも成功しない場合にのみキューが無効になります。または、これを行うことができます:
beh:/1/3/5/socket://192.168.1.111:9100
これにより、ジョブが3回再試行され、試行の間に5秒の遅延が発生します。それでもジョブが失敗する場合、ジョブは破棄されますが、キューは無効になりません。 cupsdにデバイスへの接続を無期限に試行させたいですか?よし、これを試してみてください:
beh:/1/0/30/socket://192.168.1.111:9100
プリンタが戻るまで、無限に試してください。接続試行の間隔は30秒です。プリンタの電源をオフにしても、ジョブは失われません。プリンタの電源を切るだけで、意図的に印刷を遅らせることができます。デスクトッププリンタやホームユーザーに適した構成。
全体として、実行中のCUPSキューを再アクティブ化するために、bashスクリプト、cronジョブ、lpadmin
、cupsenable
、またはSudo
をいじる必要はありません。不規則にダウンします。
Root(または他のcups管理者アカウント)として「enable」コマンドを使用するだけで済みます。頻繁に発生する場合は、「lpstat -a」を使用して小さなcrontabを追加し、無効になっているプリンタを見つけます。