Назад | Перейти на главную страницу

Автоматическое повторное добавление принтера Linux CUPS?

У нас есть машина Redhat (2.6.9-42.ELsmp), на которой работает CUPS. Время от времени люди отправляют на принтер большие файлы, и он застревает, поэтому они перезапускают принтер. После 300 секунд отсутствия ответа принтер становится недоступным. После этого CUPS удалит принтер из списка доступных принтеров и больше никогда не попытается его выполнить.

Можно ли как-нибудь настроить его так, чтобы CUPS пытался поговорить с принтером, чтобы повторно добавить его в список, когда принтер снова будет в сети?

Мы «решаем» эту проблему каждый раз, когда это происходит, мы вручную изменяем файл printers.conf, меняем статус принтера на «Idle», а затем перезапускаем службу. Я уверен, что это лучше, не так ли?

Спасибо,

Там.

Это следует исправить, изменив ErrorPolicy в cupsd.conf или printers.conf:

CUPS 1.3 / Mac OS X 10.5ErrorPolicy

Примеры

ErrorPolicy abort-job

Повторное задание ErrorPolicy

ErrorPolicy стоп-принтер

Описание

Директива ErrorPolicy определяет политику по умолчанию, которая используется, когда серверная часть не может отправить задание печати на принтер. [...]

Видеть: http://www.cups.org/doc-1.4/ref-cupsd-conf.html#ErrorPolicy

По умолчанию:

stop-printer - Остановите принтер и сохраните задание для будущей печати

однако вы, вероятно, захотите:

retry-job - Повторяет задание после ожидания N секунд [...]

(или, может быть, повторить это задание).

Примечание. В 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  
прервать работу
- Прервать это задание и перейти к следующему в той же очереди
повторная работа
- Повторите это задание после ожидания в течение N секунд (где N определяется cupsd.confдиректива JobRetryInterval).
повтори-это-задание
- Повторять текущее задание немедленно и бесконечно.
стоп-принтер
- Остановите текущую очередь печати и сохраните задание для будущей печати. Это по-прежнему по умолчанию, если вы не определите иное в соответствии с вышеупомянутыми альтернативами. Это также было по умолчанию + только возможное поведение для всех очередей в предыдущих версиях CUPS (та, от которой вы хотите избавиться в соответствии с вашим вопросом).

Кроме того, вы можете установить отдельные ErrorPolicies для каждой отдельной очереди печати. Этот параметр будет отмечен в файле printers.conf. (Установите его из командной строки с помощью lpadmin -p printername -o printer-error-policy=retry-this-job).


Для старые версии CUPS Я бы порекомендовал взглянуть на beh, КУБОК BackEnd обработчик. beh это оболочка, которую можно применить к любому бэкэнду CUPS.

Предполагая, что ваша очередь печати в настоящее время определила серверную часть socket://192.168.1.111:9100, и он ведет себя так, как вам не нравится (время от времени отключается cupsd из-за проблем с сетевым подключением). С участием beh вы бы переопределили свой бэкэнд следующим образом:

beh:/0/20/120/socket://192.168.1.111:9100

Это повторит задание 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 секунд. Работа не теряется при выключении принтера. Вы можете намеренно отложить печать, просто выключив принтер. Хорошая конфигурация для настольных принтеров и / или домашних пользователей.


В целом, нет необходимости возиться со сценариями bash, заданиями cron, lpadmin, cupsenable или sudo для повторной активации очередей CUPS, которые беспорядочно падают.

Вы можете просто использовать команду «enable» от имени пользователя root (или другой учетной записи администратора cups). Если это случается слишком часто, добавьте небольшой crontab с помощью «lpstat -a», чтобы найти отключенные принтеры.