Иногда требуется повторно распечатать задание — например, если оно ушло на печать, но в действительности не было распечатано по причине зависания принтера или принт-сервера. В рамках CUPS это решается достаточно просто.
Прежде всего, в cupsd.conf нужно настроить два параметра — сохранение отправленных на печать заданий:
PreserveJobFiles Yes
и максимальное количество хранимых заданий:
MaxJobs 1000
После этого перезапускаем сервис:
service cups restart
Самый простой вариант — воспользоваться web-интерфейсом (http://localhost:631/jobs?which_jobs=completed) и нажать кнопку «Restart Job».
Если же мы пользуемся командной строкой, нужно посмотреть /var/log/cups/page_log и найти в нем номер интересующего задания. Строка лога выглядит приблизительно так:
printer user 115221 [05/May/2010:16:51:15 +0400] 1 1 - localhost
Номер задания в данном случае — 115221. Пишем следующую команду:
lp -i 115221 -H restart
И задание будет распечатано. Можно написать небольшой скрипт, чтобы перезапускать сразу несколько заданий, разделяя их номера пробелами:
#!/bin/bash
# Restart completed print jobs
# Usage: rstjob [job num 1] [job num 2] ...
for N in "$@"
do
lp -i ${N} -H restart
done
Сами задания хранятся в /var/spool/cups. См. также man lp.