У меня есть принтер в CUPS, который из-за проблем с драйверами (HP 1010) время от времени переходит в паузу.
Я хотел бы написать сценарий оболочки, который будет выполняться раз в час, чтобы возобновить работу принтера в CUPS. Но я не знаю после нескольких минут поиска, как возобновить работу принтера из командной строки оболочки.
Ответы:
Есть команда cusenable.
cupsenable printer
запускает отключенный принтер (чтобы узнать имя принтера, вы можете перечислить свои принтеры с помощью
lpstat -p
илиlpc status
).Возможно, вам придется выполнить команду как root или через sudo. Поэтому, если вам нужно включить принтер в сценарии оболочки, вам нужно будет добавить оболочку в корневой каталог root или отредактировать файл sudoers.
источник
Ваша проблема может быть решена по-разному, в зависимости от версии CUPS, которую вы используете.
Более свежие версии CUPS (версии 1.2 и выше) поставляются со встроенной функциональностью, которая может помочь здесь. Это называется «ErrorPolicy». Его настройка по умолчанию выбрана в cupsd.conf и определяет, как cupsd должен обрабатывать очереди печати, которые ведут себя не так, как ожидалось. У вас есть 3 варианта пометить каждую очередь в отдельности:
Объяснение:
abort-job
- отменить эту работу и перейти к следующей работе в той же очереди
retry-job
- Повторить эту работу после ожидания в течение N секунд (где N определяется cupsd.conf «ы„JobRetryInterval“директивы).
retry-this-job
- Повторите текущую работу немедленно и на неопределенный срок.
stop-printer
- Остановите текущую очередь печати и сохраните задание для дальнейшей печати. Это по-прежнему по умолчанию, если вы не определите иначе в соответствии с вышеупомянутыми альтернативами. Это также было по умолчанию + только возможное поведение для всех очередей в предыдущих версиях CUPS (ту, от которой вы хотите избавиться в соответствии с вашим вопросом).
Кроме того, вы можете установить отдельные ErrorPolicies для каждой отдельной очереди печати. Этот параметр будет указан в файле printers.conf. (Установите его из командной строки с помощью
lpadmin -p printername -o printer-error-policy=retry-this-job
).Для более старых версий CUPS я бы порекомендовал взглянуть на
beh
CUPS BackEnd Handler .beh
это обертка, которая может быть применена к любому бэкэнду CUPS.Предполагая, что ваша очередь печати в настоящий момент определила серверную часть
socket://192.168.1.111:9100
, и она ведет себя так, как вам не нравится (время от времени она отключается cupsd из-за проблем с сетевым подключением). С этимbeh
вы бы изменили свой бэкэнд следующим образом:Это будет повторять задание 20 раз с двухминутным интервалом и отключать очередь только в том случае, если она по-прежнему не выполняется. Или вы могли бы сделать это:
Это повторяет задание 3 раза с 5-секундными задержками между попытками. Если задание все еще не выполнено, оно отбрасывается, но очередь не отключается. Вы хотите, чтобы cupsd пытался бесконечно подключаться к устройству? Хорошо, попробуйте это:
Попробуйте бесконечно, пока принтер не вернется. Интервалы между попытками подключения составляют 30 секунд. Задание не теряется при выключении принтера. Вы можете намеренно задержать печать, просто выключив принтер. Хорошая конфигурация для настольных принтеров и / или домашних пользователей.
В целом, нет необходимости возиться с Баш сценариев, хрон рабочих мест,
lpadmin
,cupsenable
илиsudo
для того , чтобы повторно активировать CUPS очереди спускаясь хаотично.источник
JobRetryInterval 58
попробовать каждые 58 секунд. Другие возможные значения:1w
(1 неделя),3d
(3 дня),7h
(7 часов) или4m
(4 минуты).cupsd.conf
параметры, вплоть до CUPS v1.7, описаны здесь: http://www.cups.org/documentation.php/doc-1.7/ref-cupsd-conf.html . Проверьте аннотации для каждого параметра в правом краю страницы: он скажет вам, какой выпуск CUPS первым поддержал его. Счастливого открытия более полезных параметров! :-)Опция
-E
принтера, используемая сlpadmin
должна сделать это. Вы можете, вероятно, просто создать задание cron с помощьюlpadmin
команды.Почасовая
cron
запись:Вы можете добавить это, запустив:
Убедитесь, что вы добавили
-E
после имени принтера, потому что это здесь опция принтера, а не опция lpadmin. Обратите внимание на следующую выдержку соman lpadmin
страницы, которая была указана в комментарии ниже:источник
error-policy
Ничего не исправить.cupsenable
ничего не исправить Толькоlpadmin
делает для меня.Мой принтер HP CP1215 также имел ошибку: Принтер приостановлен - "/ usr / lib / cups / backend / hp fail"
После перезагрузки , как
cups
иavahi-daemon
и идентификации принтера сlpstat -p
и позволяет сcupsenable
, я был в состоянии печатать снова. Только перезапускcups
и включение не помогли.Я также изменил политику по умолчанию на retry-job и в итоге избежал ошибок в будущем с помощью cronjob:
где
poissa käytöstä
финский текст локализации для обслуживания "вышел из строя" иHP_Tuloostin
имя моего принтера.По моему опыту, политики по умолчанию и текущие политики принтеров должны быть настроены для повторной работы. Политика по умолчанию - это просто политика, которую вы получаете при установке нового принтера.
источник
В этом списке перечислены все файлы ppd, которые представляют собой установленный принтер, отключается расширение ppd, игнорируется ppd VMware, включенный на многих серверах VMware (если вам это не нужно, просто удалите
|grep -v VMware
), иxargs
передаются другие имена, для которых все паузы снимаются принтеры.Работа cron должна сделать это хорошо.
источник
Если проблема связана с тем, что для возобновления работы принтера для входа в GUI требуется вход в систему, тогда можно разрешить возобновление работы принтера через GUI без входа в систему. Для этого отключите чашки и отредактируйте эту строку
sudo vi /etc/cups/cupsd.conf
:И удалите
Resume-Printer
директиву, затем перезапустите чашки. Если директива присутствует в нескольких<Limit>
разделах, вы можете удалить ее из соответствующего<Policy>
раздела или удалить из всех. Теперь вы сможете возобновить работу принтера без входа в систему через графический интерфейс. Я видел это на macworld, но это относится к любой установке чашек.источник
Ответ от Janne выше, например:
... приведет к перезапуску CUPS каждую минуту, независимо от того, в каком состоянии находится какой-либо принтер. Это связано с тем, что условие перезапуска cups не связано с &&.
Вот короткий BASH-скрипт, который я использовал, чтобы сделать перезапуск CUPS условным при обнаружении состояния сбоя.
Замените «DS40» тем принтером, состояние которого вы ищете, а «отключен» - тем, что выводит lpstat -p на вашем языке.
источник
Я обновил cupsd.conf с помощью строки:
ErrorPolicy abort-job
Затем я перезапустил cupsd, используя: /etc/init.d/cups restart
Но когда я смотрю на файл printers.conf, ErrorPolicy не обновляется. Согласно документации на чашки, в разделе принтера должна появиться строка «ErrorPolicy abort-job».
Я также пытался с помощью lpadmin обновить ErrorPolicy. Ничто не изменяет ErrorPolicy или не делает его в файле printers.conf.
Чего мне не хватает? Как мне убедиться, что cupsd на самом деле прерывает работу по ошибке?
источник
lpadmin -p p-go-avtom2 -v p-go-avtom2 -E
Источник
источник
Некоторые решения здесь не сработали (например, sudo cupsenable и lpadmin -E).
Если вы используете Debian 8.6, Cinnamon 2.2.16 (Linux) делает это из меню запуска вашего графического интерфейса:
Для Ubuntu 16.04:
Это открывает принтер устранения неполадок. Он скажет вам, что делать дальше.
Возможно, вам просто нужно проверить свойство Enabled для вашего принтера CUPS в настройках печати. (Вам нужно будет сначала разблокировать).
Наконец, чтобы этого не произошло, измените «политику» принтеров на «повторное задание» в настройках принтера, упомянутых выше (в свойствах | политики).
Исправил это для меня!
Что вызывает эту проблему: если мой принтер Wi-Fi выключен, когда я печатаю на принтере CUPS, и моя политика - «остановить принтер», то я получаю сообщение, что не могу печатать, и принтер отключен («Включено» не проверено) , Только если для политики задано значение «Повторить задание», параметр «Включить» не будет отключен. Через несколько минут после включения принтера ваши задания начнут печататься.
(Мой другой пост об этом.)
источник
Пришлось иметь дело с той же ерундой CUPS здесь ... Решением для меня был сценарий systemd, который запускается каждые n минут.
/usr/local/cups/enable_cups_printers.sh
cups.enable.printers.service
cups.enable.printers.timer
источник
Как уже говорили другие, «cupsenable» или «lpadmin -E» должны помочь.
С этим связана проблема IIRC, которая по умолчанию CUPS настраивает принтер таким образом, что если печать задания не выполняется, принтер отключается. Вы можете изменить это, чтобы прервать работу.
источник