Стоит cups-1.2.10 под Gentoo. К нему подключены два принтера HP P2015 (драйвер HP LaserJet Series PCL 6 CUPS из комплекта cups-а).
Эти принтеры через samba сервер расшарены для виндовс-пользователей.
Иногда по пока непонятной мне причине, первый принтер останавливается (сам). В интерфейсе cups-а об этом пишут следующее:
netprinter-hp1 (Default Printer) "/usr/libexec/cups/backend/lpd failed"
Description: HP LaserJet P2015
Make and Model: HP LaserJet Series PCL 6 CUPS
Printer State: stopped, accepting jobs, published.
Соответственно, никто печатать на этот принтер больше не может. Помогает только заход в интерфейс cups-а под принт-администратором и
нажимание кнопки "start printer".
Принтер успешно стартует и начинает печатать все, что накопилось у
него в очереди и все новые задания.... до очередной остановки. Такие
остановки могут случаться несколько раз в час, а могут - пару раз на
дню всего лишь.
Понятно, что можно написать простой скрипт, который будет ходить в
веб-интерфейс cups-а, проверять, остановлен ли принтер. И, если
принтер опять остановился, стартовать его.
Но хотелось бы узнать причину остановки. Куда вообще рыть? В логах cups-а
тишина, никакой информации похожей на "принтер остановился потому-то потому-то"
я там не нашел :(
Может у cups-а есть какая то скрытая опция типа "автостартовать принтер
если он остановился"?
есть такая опция, правишь конфиг на предмет рутового доступа с localhost и пишешь скрипт, который будет "жать" на url "start printer", и ставишь вызов в cron'е каждые пять минут :)
пока не увидел ответов, решил проблему так (автостарт принтера, если его статус в "pause") - добавлением этого в крон:
for name in `/usr/bin/wget -O - http://localhost:631/printers/ 2>&1 | grep -B 1 Paused | grep -E "netprinter.*</" | sed -r "s/.*\">(.*)<\/[Aa]>.*/\1/" `; do echo printer $name stopped at `date`\, reenable it; /usr/sbin/cupsenable $name; done
Потому узнал о существовании beh (удобная вещь) и с удивлением обнаружил опцию "printer error policy > retry job".
Включил ее - подозреваю, что теперь оно останавливаться не будет ;-)