Печать и CUPS [108.4]

Рейтинг: 64.6% · 7 голосов
Полный курс LPIC-1 (экзамены 101-500 и 102-500): архитектура, загрузка, пакеты, команды и текст, ФС и права, шелл-скрипты, пользователи, сервисы, сеть, безопасность. Debian и RHEL.
Ответить
Аватара пользователя
Sergey_Sysadmin
Сообщения: 134
Зарегистрирован: 11 май 2026, 05:31

Печать и CUPS [108.4]

Сообщение Sergey_Sysadmin »

Оглавление курса (41)
  1. Введение в LPIC-1 и как устроен путь администратора
  2. Железо, устройства и модули ядра [101.1]
  3. Загрузка системы: от BIOS до systemd [101.2]
  4. systemd, цели и уровни выполнения [101.3]
  5. План разметки диска и swap [102.1]
  6. Загрузчик GRUB 2 [102.2]
  7. Разделяемые библиотеки [102.3]
  8. Управление пакетами в Debian: dpkg и apt [102.4]
  9. Управление пакетами RPM, DNF и Zypper [102.5]
  10. Linux как гость виртуализации [102.6]
  11. Командная строка Bash [103.1]
  12. Обработка текста фильтрами [103.2]
  13. Базовое управление файлами [103.3]
  14. Потоки, конвейеры и перенаправление [103.4]
  15. Процессы: создание, мониторинг, сигналы [103.5]
  16. Приоритеты выполнения процессов [103.6]
  17. Регулярные выражения [103.7]
  18. Редактор vi и vim [103.8]
  19. Разделы и создание файловых систем [104.1]
  20. Целостность и обслуживание ФС [104.2]
  21. Монтирование файловых систем [104.3]
  22. Урок 21. Права доступа и владение: rwx, chmod, umask и специальные биты
  23. Жёсткие и символические ссылки
  24. FHS и поиск файлов в системе [104.7]
  25. Окружение и кастомизация оболочки [105.1]
  26. Урок 25. Написание простых bash-скриптов [105.2]
  27. Графика, рабочие столы и доступность
  28. Учётные записи пользователей и групп
  29. Автоматизация задач: cron, at, таймеры [107.2]
  30. Локализация и интернационализация [107.3]
  31. Системное время и синхронизация [108.1]
  32. Системное логирование [108.2]
  33. Основы почтового агента (MTA) [108.3]
  34. Печать и CUPS [108.4] (вы здесь)
  35. Основы интернет-протоколов [109.1]
  36. Постоянная конфигурация сети [109.2]
  37. Диагностика сети [109.3]
  38. DNS на стороне клиента [109.4]
  39. Задачи администрирования безопасности [110.1]
  40. Настройка безопасности хоста [110.2]
  41. Шифрование данных: SSH и GnuPG [110.3]
Урок 33. Печать и CUPS

Печать в Linux выглядит обманчиво просто: ткнул lp, лист выехал. Но за этим стоит сетевой сервер со своим протоколом, очередями и драйверами, и когда лист НЕ выезжает, администратор должен понимать, где именно застряло задание. В этом уроке разберём архитектуру CUPS изнутри: что такое демон cupsd, зачем ему веб-интерфейс на порту 631, как устроены очереди и задания, какими командами ими рулить, где лежит конфигурация и как читать логи, когда печать встала. Заодно поясню, почему старые команды lpr и lpq до сих пор работают, хотя LPD как сервер давно мёртв.

Изображение

Как это работает

CUPS (Common Unix Printing System) - это не просто утилита, а полноценный сетевой сервер печати. Центр всего - демон cupsd. Когда вы отправляете задание, оно не идёт напрямую на принтер: клиент по сети (даже если это localhost) стучится к cupsd, тот ставит задание в очередь, прогоняет его через цепочку фильтров и только потом отдаёт на устройство через бэкенд. Принтер при этом может быть локальным по USB, сетевым по IP или вообще общим на другом сервере.

Главная идея современного CUPS (версия 2.x) - всё общение идёт по IPP, Internet Printing Protocol. Это HTTP-подобный протокол, который и работает поверх HTTP на TCP-порту 631. Поэтому веб-интерфейс администрирования и сам протокол печати живут на одном порту - откройте в браузере адрес самой машины с двоеточием 631 и попадёте в панель управления. Современные принтеры умеют IPP Everywhere и AirPrint, и тогда драйвер вообще не нужен: принтер сам сообщает свои возможности, а CUPS говорит с ним напрямую. Это важный сдвиг 2026 года - классические PPD-драйверы объявлены устаревшими, ставка сделана на драйверless-печать.

Очередь (queue) - ключевое понятие. Каждый настроенный принтер - это именованная очередь. У очереди два независимых состояния. Первое: принимает она новые задания или нет (accepting/rejecting). Второе: обрабатывает ли она их прямо сейчас (enabled/disabled). Это разные вещи: очередь может принимать задания, но стоять на паузе - они копятся, но не печатаются. Понимание этой пары спасает при диагностике: задание есть, а печати нет именно потому, что очередь disabled.

Внутри обработки задание проходит через фильтры. Фильтр - это программа, которая конвертирует один формат в другой: PDF в растр, растр в язык конкретного принтера. CUPS выстраивает конвейер фильтров автоматически, ориентируясь на MIME-тип входных данных и возможности устройства. В конце цепочки стоит бэкенд (usb, ipp, socket, lpd) - он-то и пихает байты в железо.

Команды и примеры

Сначала убедимся, что демон жив. Управление через systemd одинаково в обоих семействах, отличаются только имена пакетов.

Код: Выделить всё

# проверить и запустить демон
systemctl status cups
systemctl enable --now cups

# Debian/Ubuntu - установка
apt install cups cups-client

# RHEL/Fedora - установка
dnf install cups
Базовая диагностика статуса - команда lpstat. Это первое, что запускают, когда печать барахлит.

Код: Выделить всё

lpstat -p -d        # список принтеров и принтер по умолчанию
lpstat -t           # полный дамп: устройства, очереди, задания
lpstat -a           # кто принимает задания
lpstat -o           # активные задания во всех очередях
Отправка на печать. Есть два диалекта команд - System V (lp) и BSD (lpr). Оба работают, выбирайте любой.

Код: Выделить всё

# System V стиль
lp -d office report.pdf        # на принтер office
lp -n 2 -o sides=two-sided-long-edge file.pdf
echo "test" | lp              # печать из stdin

# BSD стиль
lpr -P office report.pdf
lpr -#2 file.pdf              # две копии
Ключ -o задаёт опции задания: число копий, двусторонность, формат бумаги (media=A4), диапазон страниц (page-ranges=2-5). Эти опции - тоже атрибуты IPP.

Посмотреть очередь и удалить задание:

Код: Выделить всё

lpq -P office          # BSD: что в очереди office
lpstat -o office       # то же в System V стиле, с ID заданий

# отменить задание по ID (например office-42)
cancel office-42       # System V
lprm 42                # BSD
cancel -a office       # снести ВСЕ задания очереди office
Управление состоянием очереди делается командами с теми же корнями. Включить/выключить обработку - cupsenable и cupsdisable, приём заданий - accept и reject.

Код: Выделить всё

cupsdisable office     # пауза: задания копятся, не печатаются
cupsenable office      # возобновить печать
reject office          # перестать принимать новые задания
accept office          # снова принимать
lpadmin -d office      # сделать office принтером по умолчанию
Частые грабли
  • Путают enabled и accepting. Если lpstat показывает, что задания есть, но ничего не печатается - почти всегда очередь в состоянии disabled. Лечится cupsenable, а не перезагрузкой.
  • После сбоя печати CUPS сам ставит очередь на паузу и НЕ снимает её автоматически, пока вы не разберётесь. Разобрались с принтером - не забудьте cupsenable, иначе будете ждать вечно.
  • Брандмауэр режет порт 631. Сетевую печать и веб-интерфейс с других машин не видно - откройте 631/tcp (и 631/udp для обнаружения) в nftables/firewalld.
  • Веб-интерфейс просит логин и отвергает обычного пользователя. Админ-доступ в CUPS требует членства в группе lpadmin (Debian/Ubuntu) или sys/wheel по конфигу (RHEL).
  • Тащат древний демон lpd. В 2026 отдельный LPD-сервер не нужен: CUPS сам принимает протокол LPD как один из бэкендов и слушает его при необходимости. Команды lpr/lpq/lprm - это просто BSD-совместимый интерфейс к cupsd, а не признак живого lpd.
  • Логи смотрят не там. Полезное лежит в /var/log/cups/error_log, а уровень детализации задаётся директивой LogLevel в cupsd.conf - на warn вы половины не увидите, ставьте debug для разбора.
  • Ставят PPD-драйвер на современный принтер. Для IPP Everywhere драйвер вреден: проще добавить принтер как драйверless (everywhere) и не воевать с конвертацией форматов.
Мини-лаба
  • Шаг 1. Установите CUPS и убедитесь, что демон активен: systemctl enable --now cups, затем systemctl status cups.
  • Шаг 2. Создайте виртуальный принтер в файл, чтобы тренироваться без железа: lpadmin -p lab -E -v file:/tmp/lab.prn -m everywhere (или укажите PPD). Проверьте: lpstat -p.
  • Шаг 3. Откройте в браузере адрес машины с :631, найдите раздел Printers и посмотрите свою очередь lab.
  • Шаг 4. Отправьте задание: echo "Hello CUPS" | lp -d lab. Посмотрите очередь через lpstat -o.
  • Шаг 5. Поставьте очередь на паузу cupsdisable lab, отправьте ещё одно задание и убедитесь через lpq, что оно висит, а не печатается.
  • Шаг 6. Снимите паузу cupsenable lab, удалите оставшиеся задания через cancel -a lab.
  • Шаг 7. Поднимите LogLevel до debug в /etc/cups/cupsd.conf, перезапустите cups и найдите следы вашего задания в /var/log/cups/error_log.
Контрольные вопросы
  • На каком TCP-порту работает CUPS и почему веб-интерфейс и сам протокол печати делят один порт?
  • Чем отличаются состояния очереди accepting и enabled? Какая команда меняет каждое из них?
  • Чем отличаются семейства команд lp/lpstat/cancel и lpr/lpq/lprm и почему оба работают в одной системе?
  • Какой файл содержит основную конфигурацию демона и где искать журнал ошибок печати?
  • Что значит драйверless-печать (IPP Everywhere) и почему в 2026 она предпочтительнее установки PPD-драйвера?
  • Почему наличие команд lpr и lpq не означает, что в системе запущен отдельный демон LPD?
👍4 ❤️2 🔥1 😄 🤔
Аватара пользователя
rawdeadlock
Сообщения: 1
Зарегистрирован: 28 май 2026, 08:17

Re: Печать и CUPS [108.4]

Сообщение rawdeadlock »

А зачем cancel -a, если можно lprm? У меня lprm без номера сносит только мое последнее задание, а cancel -a office чистит всю очередь скопом - удобнее когда тестовых заданий навалил пачку.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
oleg6
Сообщения: 2
Зарегистрирован: 01 июн 2026, 04:39

Re: Печать и CUPS [108.4]

Сообщение oleg6 »

Поймался ровно на граблях с disabled: принтер замялся, я бумагу вытащил, а печать так и не пошла. lpstat -t показал disabled, cupsenable office - и поехало. CUPS реально не снимает паузу сам.
👍3 ❤️1 🔥 😄 🤔
Ответить
← Предыдущая глава
Основы почтового агента (MTA) [108.3]
Следующая глава →
Основы интернет-протоколов [109.1]

Все главы курса «LPIC-1: администратор Linux (101 + 102)»

Поделиться темой: ✈ Telegram VK
  • Похожие темы

Вернуться в «LPIC-1: администратор Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость