КОНТРОЛЬНА РОБОТА № 4
Мережевий друк в операційній системі FreeBSD
Для організації друку у ОС FreeBSD використовується механізм черг, який забезпечує коректний доступ до принтерів у багатокористувацькій системі. Цей механізм дозволяє розділити у часі доступ до принтерів різних користувачів у разі одночасного отримання запитів на друк. Знов отримана задача друку заноситься у відповідну чергу і відправляється на друк тільки тоді, коли принтер готовий її прийняти. При цьому враховуються пріоритети задач у черзі. Збереження задачі в черзі відбувається до тих пір, поки принтер не буде готовий її виконувати (навіть у випадку відключення чи відсутності принтера), чи до її знищення зі списку задач. Крім того, адміністратор серверу друку може контролювати та коректувати процес друку через управління чергами.
Механізм друку підтримує два типи черг: локальні черги для організації друку на локальній машині та знищені для друку через сервер друку (по мережі).
Коли система друкує файл, вона використовує спеціальні каталоги, які називаються буферними каталогами (spool). Завдання на друк являють собою файли, котрі необхідно надрукувати. Отримавши команду друкувати, система створює копію цього файлу і розташовує її у буферний каталог, створений для даного принтеру. Місце знаходження кожного каталогу вказане у відповідній цьому принтеру запису файлу /etc/printcap. Для кожного завдання на друк у буферному каталозі створюються два файла. Ім`я першого файлу df; цей файл містить копію файлу, який збираються надрукувати. Ім`я другого файлу cf ; це керуючий файл. Він містить інформацію про завдання на друк, наприклад, відомості про користувача, якому воно належить.
Файл /etc/printcap міститьзаписи для кожного під`єднаного до системи принтера. Ці записи містять таку інформацію, як шляхове ім`я буферного каталогу (спула) принтеру та ім`я файлу обладнання для порту, яким користується принтер. Перше поле запису – список ймовірних імен даного принтеру. Ці імена користувач може створювати сам. Імена відділяються одне від одного знаком | . Вони використовуються для позначення принтера при введенні різних команд та опцій друку, наприклад, опції –P.
Крім того, ці імена використовуються як значення для спеціальних змінних shell, наприклад змінної PRINTER, яка використовується в багатьох сценаріях ініціалізації. Поля, що йдуть за списком імен, задають для принтера різні опції. Вони мають двосимвольні імена. З допомогою знаку рівності їм надаються значення. Операції присвоювання розділяються двокрапками. Три найбільш важливі паролі –lp, sd, if. У полі lp задається ім`я файлу пристрою, яким користується принтер. У полі sd задається шляхове ім`я пристрою, яким користується принтер, а в поле if ім`я фільтру, який використовується для даного принтера . Деякі поля мають булеві значення.
Приклад запису файлу printcap наводиться нижче.
##PRINTTOOL## LOCAL djet500c 600x600 letter {}
hp1| lp:\
:sd=/var/spool/lpd/lp:\
:mx#0:\
:lp=/dev/lp1:\
:if=/var/spool/lpd/lp/filter:
Розглянемо основні команди та програми операційної системи FreeBSD, які забезпечують друк lpr, lpc, lpd, lpq, lprm:
Lpr:
Lpr – програма для відправлення завдання на друк.
РЕЗЮМЕ
lpr [-Pprinter] [-#num] [-C class] [-J job] [-L locale] [-T title] [-U
user] [-Z daemon-options] [-i numcols] [-1234 font] [-w num]
[-cdfghlnmprstv] [name ...]
Опис
Lpr використовується для того, щоб ставити завдання в чергу на друк.
Lpr використовує spooling-демона (Lpd) , для того щоб надрукувати файли, коли пристрій друку є вбудованим.
Наступні однолітерні опції використовуються, щоб повідомити спулер пристрою порядкового друку, про те, що файли не є стандартними текстовими файлами. Демон ставлення в чергу буде використовувати необхідні фільтри, щоб друкувати дані.
-d Припускається, що файли містять дані у форматі DVI системи TeX.
-f Використовується фільтр, який інтерпретує перший символ кожного рядку як стандартний символ керування кареткою ФОРТРАНА.
-l Використовується фільтр, який дозволяє друк керуючих символів та подавляє розмежовувачі сторінок.
-p Використовується pr , щоб форматувати файли.
Наступні опції використовуються при обробці завдання під час друкування:
-P Скерувати вивід на визначений принтер. Найчастіше , використовується заданий по замовчанню принтер , чи значення змінної середовища PRINTER.
-h Стримується друк сторінки розмежовувача.
-m Відправляється пошта після завершення друку.
-r Знищується файл після завершення розміщення в черзі чи після завершення друку (використовується з -s опцією).
-s Використовуються символічні зв`язки. Звичайно файли копіюються у спул-каталог .Lpr з опцією -s буде використовувати symlink, щоб зв`язати файли даних до того як вони будуть перекопійовані, так що великі файли зможуть бути надруковані.
Інші параметри використовуються для визначення кількості копій, відображенню сторінки заголовка:
- #num Кількість num - число копій файлу.
-[1234]font
Визначає шрифт, який буде поставлений на позиції шрифту i. Демон створить railmag-файл, який посилається на шлях файлу шрифту.
-C class
Класифікація роботи, котра буде надрукована на сторінці розмежовувача.
-J job
Назва роботи, яка буде друкуватися на сторінці розмежовувачі.
Звичайно, використовується ім`я першого файлу завдання.
-T title
Назва заголовку для pr, замість ім`я файлу.
-U user
Ім`я користувача, котре буде друкуватися на сторінці розмежовувачі.
-Z daemon-options
Деякі спулери, типу LPRNG, приймають додаткові параметри,
використовуючи в роботі ' Z ' лінію контролю. Коли –Z визначений, і -p (pr ) не вимагається, указані параметри демону будуть прямувати до віддаленогоLPRNG спулеру.
-i numcols
Виведення буде вирівняне з допомогою numcols.
-w num
num використовується як ширина сторінки для pr.
Lpq:
Lpq - програма перевірки черги
РЕЗЮМЕ
lpq [-a] [-l] [-Pprinter] [job # ...] [user ...]
ОПИС
Lpq досліджує область розташування в чергу, яка використовується lpd для друку файлів на лінійному принтері, і повідомляє про стан вказаних завдань чи всіх завдань, зв`язаних з користувачем. Lpq викликаний без будь-яких параметрів повідомляє інформацію відносно будь-яких завдань які знаходяться в нинішній час у черзі.
Параметри:
-P Визначає специфічний принтер, інакше використовується заданий по замовчанню принтер (чи значення змінної PRINTER у середовищі).
-l Друкується інформація відносно кожного з файлів, які включені у запис завдання (роботи) .
-a Повідомлення відносно локальних черг для усіх принтерів, а не тільки вказаного принтеру.
Для кожної представленої роботи (тобто є звернення lpr ) lpq повідомляє інформацію про ім`я користувача, поточному ранзі в черзі, іменах файлів, включених у роботу, ідентифікатори роботи (номер, котрий може бути наданий lprm для знищення деякої роботи), та повного розміру роботи у байтах. Впорядкованість роботи залежить від алгоритму, перегляду каталогу черги і звичайно припускається використання FIFO. Імена файлів, які включені в роботу можуть бути недоступні (коли lpr використовується як приймач у конвеєрі тоді файл позначається як " " (стандарте позначення)).
Якщо lpq, попереджає що нема ніякого демону принтеру-друку (наприклад через деякий збій), то команда lpc може використовуватися, щоб перезавантажити демон принтеру.
Lprm:
Програма Lprm - знищує завдання з черги порядкового принтеру.
РЕЗЮМЕ
lprm [-Pprinter] [-] [job # ...] [user ...]
ОПИС
Lprm знищує завдання з черги принтеру. Так як каталог черги захищений від користувачів, використання lprm – звичайно єдиний метод, котрим користувач може знищити роботу. Власник роботи визначається ім`ям входу в систему користувача (login-ом) і ім`ям машини, де команда lpr (1) була викликана.
Параметри :
-Pprinter
Визначає чергу, зв`язану з визначеним принтером (інакше використовується заданий по замовчанню принтер).
Якщо дається єдиний "-" , то lprm знищить усі завдання, котрі має користувач. Якщо супер-користувач використовує цей прапор, черга буде повністю звільнена.
user
Примушує lprm знищувати будь-які поставлені в чергу завдання, які належать користувачу (чи користувачам). Ця форма виклику lprm корисна тільки супер-користувачу.
job#
Користувач може знищувати з черги індивідуальну роботу, визначаючи її номер. Цей номер може бути отриманий від програми lpq, наприклад.
% lpq -l
1st:ken [job #013ucbarpa]
(standard input) 100 bytes
% lprm 13
Якщо ніякі параметри чи параметри не даються, lprm знищить активну в нинішній час роботу, якщо вона належить користувачу, котрий визвав lprm.
Lprm оголошує імена файлів, які вона знищує
Lprm знищує активний демон, в разі необхідності, перед знищенням будь-яких файлів, поставлених у чергу. Якщо демон знищений, новий демон автоматично перезавантажується після закінчення знищення файлу.
Команду lprm не можна використовувати для скасування завдання на друк, котре вже виконується. Замість цього потрібно використовувати команду kill для процесу, що відповідає цьому завданню.
Lpc:
lpc – програма контролю принтеру
РЕЗЮМЕ
lpc [command [argument ...]]
ОПИС
Lpc використовується адміністратором системи, щоб керувати системою порядкового друку. Для кожного пристрою порядкового друку, конфігуюваного у /etc/printcap, lpc може використовуватися, щоб:
+ відключити чи підключити принтер,
+ відключити чи підключити spooling-чергу принтеру,
+ перебудувати порядок завдань у spooling-черзі,
+ визначити стан принтерів та зв`язаних spooling-черг та демонів принтеру
При вводі команди lpc без параметрів, вона запитує команди із стандартного вводу. Якщо програма забезпечена параметрами, lpc інтерпретує перший параметр як команду та аргументи, які залишилися, як параметри для команди. Стандартний ввод може бути переадресований, шляхом такого виклику lpc , щоб програма читала команди з файлу. Команди можуть бути скорочені.