Мережевий друк в операційній системі FreeBSD

КОНТРОЛЬНА РОБОТА № 4



Мережевий друк в операційній системі FreeBSD




Мета роботи: Отримати практичні навички мережевого друку в операційній системі 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 , щоб програма читала команди з файлу. Команди можуть бути скорочені.

Список команд, які розпізнаються.

? [command ...] help [command ...]

Друк короткого опису кожної команди, вказаної у списку параметрів, або, якщо не дається ніякого параметру, список команд, які розпізнаються.

abort { all | printer }

Негайно припинити виконання активного spooling-демону на локальному комп`ютері і потім відключити друк (запобігання запуску нових демонів програмою lpr (1)) для вказаних принтерів).

clean { all | printer }

Знищує будь-які тимчасові файли, файли даних, та керуючі файли, які не можуть бути надруковані (тобто, не формує закінчене завдання принтеру) з вказаної черги принтеру на локальній машині.

disable { all | printer }

Відключити вказані черги принтеру . Це запобігає вводу нових завдань принтеру в чергу lpr.

down { all | printer } message ...

Виключає вказану чергу принтеру, відключить друк, та розташувати повідомлення у файл стану принтеру. Повідомлення не повинне цитуватися, параметри які залишилися обробляються подібно ECHO.

enable { all | printer }

Допустити spooling на локальній черзі для перерахованих принтерів. Це дозволить lpr (1) розташовувати нові завдання в чергу.

exit

Вийти з lpc.

restart { all | printer }

Намагається запустити новий демон принтеру. Це корисно, коли деяка аварійна умова змушує демон несподівано зупинитися, залишаючи завдання в черзі. Lpq (1) повідомляє, що нема демону, коли ця умова відбувається. Якщо користувач – супер-користувач, намагайтеся спочатку перервати діючого демону (тобто, знищити, та перезапустити демон, який завис).

start { all | printer }

Допустити друк, і запустити spooling-демон для перерахованих принтерів.

status { all | printer }

Відобразити стан демонів та черг на локальній машині.

stop { all | printer }

Зупинити spooling-демон після того, як діюче завдання закінчить роботу і

відключить друк.

topq printer [ jobnum ... ] [ user ... ]

Розташувати завдання вгорі черги принтеру.

up { all | printer }

Допустити усі настройки та запустити новий демон принтеру. Відміняє ефекти відключення.

Lpd:

lpd – демон спулеру порядкового друку

РЕЗЮМЕ

lpd [-dlp] [port#]

ОПИС

Lpd - демон пристрою порядкового друку і часто викликається при початковому завантаженні з rc-файлу. Програма продивляється printcap файл, щоб визначити інформацію відносно існуючих принтерів і друкує будь-які файли, які залишилися після аварійної зупинки. 

Доступні опції:

-d 

Вмикає SO_DEBUG 

-l прапорець. 

 -l заставляє lpd реєструвати запити, отримані з мережі. Це може бути корисне при відладці.

-p	

Прапорець -p наказує lpd не відкривати Internet сокет.

port# 	 

Номер порту, котрий використовується для зв`язку з іншими процесами, він звично отримується за допомогою getservbyname (3), але може бути змінений і з допомогою параметру port# .

Керування доступом забезпечується двома засобами. По перше, усі запити повинні виходити від однієї з машин, перерахованих у файлі /etc/hosts.equiv чи /etc/hosts.lpd. По друге, якщо можливість rs визначена у запису printcap для принтеру, до якого звертаються, lpr запити будуть розбирати для користувачів з обліковими записами на машині з принтером.

Файл minfree у кожному каталозі черги утримує число дискових блоків, котрі повинні залишатися пустими, щоб черга пристрою порядкового друку повністю не заповнила диск. Minfree файл може бути відредагований текстовим редактором.

Демон починає оброблять файли після того, як він поставив блокування для монопольного доступу, та продивляється каталог черги для файлів, що починаються з cf. Рядки у кожному cf файлі визначають файли, котрі будуть надруковані чи події, які будуть виконані, але не можуть бути надруковані. Кожен такий рядок починається з ключового символу, який визначає, що робити з залишком рядка.

J	 Назва завдання (роботи). Рядок, який використовується для назви завдання на сторінці розмежовувачі. 

C	 Класифікація. Рядок, який використовується для створення класифікаційної лінії на сторінці розмежовувачі.

L	 Літерал. Рядок містить ідентифікаційну інформацію з файлу пароля тв викликає друк титульного листа.

T	 Заголовок. Рядок, який потрібно використовувати як заголовок для pr.

H	 Ім`я хоста. Назва (ім`я) машини, де була викликана програма lpr .

P	 Персона. Ім`я користувача, котрий викликав lpr. Цей рядок використовується, щоб перевірити право на використання lprm.

M	 Переслати пошту вказаному користувачу, коли діюче завдання по друкуванню виконається.

f	 Відформатований файл. Ім`я файлу, який уже відформатовано.

l	 Подібно " " f ", але пропускаються керуючі символи і не друкуються розмежовувачі сторінок.

v	 Файл містить растрове зображення (образ).

r	 Файл містить текстові дані з символами керування кареткою ФОРТРАНУ.

1	 Troff Шрифт R. Назва(ім`я) файлу шрифту, який використовується замість шрифту по замовчанню.

2	 Troff Шрифт I. Назва(ім`я) файлу шрифту, який використовується замість шрифту по замовчанню.

3	 Troff Шрифт B. Назва(ім`я) файлу шрифту, який використовується замість шрифту по замовчанню.

4	 Troff Шрифт S. Назва(ім`я) файлу шрифту, який використовується замість шрифту по замовчанню.

W	 Ширина. Заміняє ширину сторінки (в символах), яку використовує pr і текстові фільтри.

I	 Відступ. Число символів, щоб вирівняти вивід (в ASCII).

U	 Розчепити. Ім`я файлу, який необхідно знищити після завершення друку.

N	 Ім`я файлу. Ім`я файлу, який надрукується, чи пробіл для стандартного вводу (коли lpr викликаний у конвеєрі).

Z	 Регіон. Рядок, який необхідно використати як регіон для pr.

Якщо файл не може бути відкритий, повідомлення буде зареєстроване через syslog, використовуючи засіб LOG_LPR . 

Lpd використовує flock, щоб забезпечити монопольний доступ до файлу. Якщо робота демону була припинена, файл блокування не потребує знищення. Файл блокування записується в ASCII формі і містить два рядки. Перший - ідентифікатор процесу демона, і другий - назва (ім`я) керуючого файлу поточного надрукованого завдання. Другий рядок постійно модифікується, щоб відобразити поточний стан lpd для програм lpq та lprm.




Завдання на роботу



1. Відправити на друк файл TEXT на принтері lx1050 у 2 екземплярах без сторінки розмежовувача. Передивитися чергу друку.

2.Надрукувати файл TEXT на принтері lx1050 у одному екземплярі з сторінкою розмежовувача, з використанням титульного аркушу, де вказаний власник файлу, присутні надписи “Secret” та номер варіанту – “Variant2”

3. Надрукувати файл TEXT на принтері lx1050 у 2 екземплярах сторінки розмежовувача з повідомленням після роздрукування.

4. Відправити будь-яке завдання на принтер. Передивитися чергу друку та визначити номер завдання друку, яке було присвоєне операційною системою. Знищити дане завдання з черги друкування.