Nyomtatás

A nyomtatással kapcsolatos kérdéseket két külön pontban tárgyaljuk, mert az SVR4 és a BSD eltérő parancskészletet használ. Elöljáróban azonban néhány szó arról, ami közös: a UNIX nyomtatáskezelése erősen tükrözi a nagygépes rendszerek filozófiáját, annak minden előnyével és hátrányával együtt. Az előnyök közé sorolható az, hogy egy UNIX rendszer számos nyomtató egyidejű és megkülönböztetett kezelésére képes, a nyomtatási feladatokat, a nyomtatókat és a felhasználókat igen komplex szempontok figyelembe vételével képes egymáshoz rendelni. Megoldható az, hogy egyes printerek csak meghatározott felhasználók meghatározott típusú fájljait nyomtassák ki, másokat bárki használhasson, stb. Mindennek viszont (a rendszeradminisztrátorra nehezedő terheken kívül) ára is van: a nyomtatás erősen helyfüggővé válik, az a speciális nyomtatási opció, vagy nyomtatónév, ami egy adott rendszerben használható, nem feltétlenül, sőt, nagy valószínűséggel egyáltalán nem használható a másikban. A felhasználó szempontjából csak egy biztos fogódzó akad: ha van a rendszerben nyomtató installálva, akkor a default nyomtatási parancs kiadásával valahol, valamilyen formában az adott fájl kinyomtatódik - bármi, ezen túlmutató speciális igény esetén (nyomtató, karakterkészlet, speciális opciók megválasztása stb) az illetékes rendszergazdához kell fordulni.

Mindkét UNIX verzióban igaz az, hogy a nyomtatási parancs (lp, lpr) kiadásakor nem közvetlenül a nyomtatóra kerül az elküldött fájl, hanem egy belső adattároló területre (spooling area), ahonnan a nyomtatásvezérlő démonok indítják el a tényleges nyomtatást. Az egy paranccsal nyomtatásra küldött fájlokat a rendszer egy egységként, úgynevezett nyomtatási feladatként (print job) kezeli; ez a jobfogalom hasonlatos a C és a Korn shell job fogalmához. A nyomtatásvezérlő alrendszer a beérkező nyomtatási feladatokat sorba állítja, és egymás után hajtja végre őket. Mind a BSD, mind az SVR4 verziójban külön parancsok szolgálnak a nyomtatási sor állapotának lekérdezésére, illetve már elküldött nyomtatási feladatoknak a sorból való kivételére.

SVR4 rendszerek

Az lp parancs

Az lp parancs szolgál az SVR4 UNIX rendszerekben a nyomtatásra, illetve a már elküldött nyomtatási feladatok egyes jellemzőinek utólagos módosítására. A parancs általános formátuma a következő:

 

lp [options] [file(s)...]

illetve

 

lp -i req-id [options]

Az első forma a fájlok nyomtatásának elindítására szolgál. Ha nem adunk meg fájlnevet, a standard bemenetet olvassa és küldi tovább nyomtatásra.

Az lp parancs második formájában a már elindított nyomtatási feladatok jellemzőit lehet módosítani; a nyomtatási feladatra annak req-id azonosítójával hivatkozunk. Az azonosítót az lp parancs kiírja a képernyőre, az alábbihoz hasonló formában:

 

hp 29: lp proba.c

request id is hp3d-2347 (1 file)

hp 30:

Az lp által elfogadott opciók az alábbiak (megint csak lehetségesek kisebb-nagyobb, implementációtól függő eltérések):

 

-c Nyomtatás előtt másolatot készít a fájlról, nem az eredetit nyomtatja.

-d dest A dest nyomtatóra, illetve egy, a dest nyomtatóosztályba tartozó nyomtatóra küldi a fájlt. Ha a dest egy konkrét nyomtató neve, akkor kizárólag azon nyomtatódhat ki az állomány, ellenkező esetben bármelyik, abba az osztályba tartozó nyomtatón. Ha nem adunk meg nyomtatónevet, az LPDEST shell-változóból veszi a rendszer, ennek hiányában a default nyomtatóra küldi az állományokat.

-f form-name

[-d any] A kiküldött fájlt a form-name nyomtatvány forma szerint nyomtatja. Ha a választott printer nem támogatja e nyomtatványformát, vagy egyáltalán nincs nyomtatványforma definiálva, a nyomtatást visszautasítja a rendszer. (A nyomtatványformák előre definiált fájlok, például amik a fejléces céges papír leírását tartalmazzák.)

-m A nyomtatás befejeztekor levelet küld a felhasználónak.

-n num num példányban nyomtatja a fájl(oka)t.

-o options A nyomtató-specifikus opciók megadása. Ezen opciók értelemszerűen eltérnek egymástól, az alábbiak azok, amelyek az úgynevezett standard nyomtatási felülethez tartoznak, s elvileg minden nyomtatónak ismerni kell őket (zárójelben adjuk meg az alternáló jellegű opciók párját):

nobanner

(banner) Nem nyomtat az egyes feladatokhoz fedlapot.

nofilebreak

(filebreak) Az egy feladatban elküldött több fájl esetén nem tesz a fájlok közé lapdobás karaktert.

length =scaled_dec_num scaled_dec_num sor hosszú lapokat nyomtat. scaled_dec_num egy decimális szám lehet, amit az lci karakterek valamelyike követ, és sorban, centiméterben, vagy hüvelykben adja meg a lap méretét. Például a

length=10.6c a 10,6cm laphossznak felel meg. Ha skálázás nélkül, csak számot adunk meg, az sorszámként értelmeződik, azaz a

length=66 beállítás 66 soros laphosszúságot jelent.

width=scaled_dec_num

A fentiekhez hasonlóan értendően, a lapszélességet adja meg. A mértékegység hiányában itt oszlopszámot kell érteni, azaz az

width=72 megadással 72 karakter széles sorokat definiáltunk.

lpi=scaled_dec_num

A sortávolságot állítja be. Mértékegység nélküli szám esetén sor/hüvelyk értendő.

 

cpi=scaled_dec_num

A karaktersűrűséget állítja be, mértékegység hiányában karakter/hüvelyk értendő. Használható még értékként a pica (10 cpi), az elite (12 cpi) és a tömörített (condensed) - utóbbi az adott nyomtató által kezelhető mindenkori legsűrűbb betűkiosztásnak felel meg.

A length, width, lpi és cpi beállításokkal egyidőben nem adható meg a -f opció.

-P page-list A fájl megadott oldalait nyomtatja csak ki. Az oldalszámok mind önálló számok, mind tól-ig jellegű tartománymegadások, mind a kettő kombinációi lehetnek. Nem minden nyomtató szűrő támogatja ezt az opciót.

-q A nyomtatási sor prioritásszintjét lehet változtatni a 0-39 tartományban (0 a legmagasabb).

-s Elnyomja az lp program "szószátyár" üzeneteit (például a req-id megadást).

-S char-set [-d any]

-S print-wheel

[-d any] A nyomtatandó fájlt a megadott char-set karakterkészlettel, vagy cserélhető íróműves nyomtató esetén a print-wheel írófejjel nyomtatja ki. Ha az adott nyomtató vagy nyomtatóosztály nem támogatja a kívánt karakterkészletet, a nyomtatási kérést az lp visszautasítja.

-t title A fedlapon a title címet nyomtatja ki (alapértelmezés szerint nem nyomtat címet).

-T cont-type [-r] A nyomtatandó fájlt egy olyan nyomtatóra küldi, amelyik képes a cont-type típusú fájlok direkt nyomtatására. Ha ilyen nyomtató nincsen, olyan nyomtatóhoz küldi a fájlt, amelyik rendelkezik a cont-type típusú fájl kinyomtatásához szükséges szűrővel. Ha nem talál ilyen nyomtatót, a nyomtatási kérést visszautasítja. (A leggyakoribb, csak ASCII karaktereket tartalmazó fájlok típusa simple, s alapértelmezés szerint a nyomtatók is ilyen típusú fájlokhoz vannak rendelve. Ennek az opciónak a használatára akkor lehet szükség, ha például egy PostScript formátumú fájlt akarunk nyomtatni; ilyenkor nem szükséges tudnunk, melyik nyomtatót címezzük meg név szerint, az

lp -T postscript ... file

parancs hatására garantáltan olyan nyomtatón fog megjelenni a fájl, amelyik képes a PostScript formátum lekezelésére, ellenkező esetben a kérést visszautasítja a rendszer.

-w A nyomtatás végén üzenetet ír ki a felhasználó termináljára, illetve ha már nincs bejelentkezve, levelet küld neki.

A cancel parancs

A cancel paranccsal lehet nyomtatási feladatmtatási feladatokat törölni a sorból. A törlendő feladatokat kijelölhetjük azonosítójuk (req-id) alapján, törölhetjük az adott nyomtatóra küldött összes feladatot, vagy az adott felhasználó által indított feladatokat.

A cancel parancs hívási formái a következők lehetnek:

 

cancel [req-id ...] [printer ...]

 

cancel -u login-id ... [printer ...]

Az első hívási formánál vagy a törlendő nyomtatási feladatok azonosítóit írjuk be, vagy a nyomtató nevét - utóbbi esetben a kurrens feladat fog törlődni az adott nyomtatón.

A második hívási mód esetén az adott felhasználó által a megnevezett nyomtató(ko)n indított összes nyomtatási feladat törlődik.

Normál felhasználó csak a saját maga által indított feladatokat törölheti a sorból, a privilégizált felhasználó jogosult csak a teljes sor törlésére.

Az lpstat parancs

Az lpstat parancs révén szerezhetünk információkat a nyomtatási alrendszer állapotáról, beleértve a nyomtatási sorokat is. Argumentum nélkül az összes nyomtatási feladatot kilistázza. Ha argumentum opció nélkül szerepel, azt feladatazonosítóként kezeli a parancs, és az adott feladatra vonatkozó információkat listázza ki. Ha az opcióbetű után nem szerepel érték, vagy az all szócska áll, az adott opcióval kapcsolatos valamennyi nyomtatási feladatot kilistázza az lpstat. Az lpstat legfontosabb opciói a következők:

 

-a [list] Kiírja, hogy a megnevezett nyomtatók, illetve nyomtatási osztályok fogadnak-e nyomtatási kérelmeket. list a nyomtatók és nyomtatási osztályok neveit tartalmazza.

-c [list] A nyomtatási osztályok neveit írja ki, továbbá a hozzájuk tartozó nyomtatókat.

-d A default nyomtatót, illetve nyomtatási osztályt adja meg.

-f [list] [-l] A listában megnevezett nyomtatványformákat ellenőrzi, hogy ismeri-e őket a nyomtatási alrendszer. A -l opció hatására a nyomtatványformák leírását is kilistázza.

-o [list] A nyomtatási feladatok állapotát jelzi ki. A -o opció el is maradhat. A lista tartalmazhat vegyesen nyomtató és nyomtatási osztály neveket, továbbá feladatazonosítókat.

-p [list] [-D] [-l] A listában megnevezett nyomtatók állapotát jelzi ki. -D és -l hatására részletesebb státuszinformációt szolgáltat.

-r A nyomtatásütemező háttérprogram (LP scheduler) állapotát írja ki.

-R A megnevezett feladatnak a nyomtatási sorban elfoglalt helyzetét adja meg.

-s Részletes státuszinformációkat ad az ütemezőről, a default nyomtatóról, az egyes nyomtatási osztályokról és azok tagjairól, a nyomtatókhoz rendelt fizikai perifériákról, a nyomtatványformákról és a használható karakterkészletekről.

-S [list] [-l] A listában felsorolt karakterkészletek illetve írófejek hozzáférhetőségét ellenőrzi le. A -l opció hatására mindegyik készlethez kiírja az azt kiszolgálni képes nyomtatók listáját is.

-t Teljeskörű státuszinformációt ad, a -s opció által szolgáltatott adatokon kívül az összes printer üzemkészségi állapotát is kiírja.

-u [login-id-list] A listában szereplő felhasználók nyomtatási feladataira vonatkozó információkat listázza. A felhasználók mind lokális, mind távoli gépeken lévő felhasználók lehetnek, utóbbi esetben a host!user megadással hivatkozhatunk rájuk.

-v [list] Az egyes nyomtatókat és a hozzájuk tartozó fizikai perifériákat listázza ki.

BSD rendszerek

BSD alapú UNIX rendszerekben a felhasználó számára fontos nyomtatási parancsok az lpr (fájl kiküldése a nyomtatónak), az lpq (a nyomtatási sor lekérdezése) és az lprm (job törlése a nyomtatási sorból).

Az lpr parancs

E paranccsal lehet a fájlokat a nyomtatónak kiküldeni, illetve a különféle nyomtatási opciókat beállítani. Hívási formája:

 

lpr [options] [file(s)...]

Ha nem adunk meg fájlnevet, a standard inputot olvassa. A legfontosabb opciók a következők:

 

-P printer A megnevezett nyomtatóra küldi a fájlt; ennek hiányában a PRINTER környezeti shell-változóban megadott, illetve a default nyomtatóra.

-#n n példányban nyomtatja a fájl(oka)t.

-C class A feladatazonosító szövegként class fog megjelenni a nyomtatási fedlapon, nem a küldő gép neve.

-J job Nem az első megadott fájl nevét, hanem a job szöveget írja ki azonosítónak a nyomtatási fedlapon.

-T title A title szöveget írja ki azonosítónak a nyomtatási fedlapra.

-i [indent] A kimenetre indent szóközzel beugratva nyomtat. (A default 8.)

-w cols cols karakteres lapszélességet tételez fel.

-m A nyomtatás befejeztekor levelet küld a felhasználónak.

-h Nem nyomtat fedlapot (banner page).

-s Nem másolja be a nyomtatási adatterületre (spooling area) a nyomtatandó fájlokat, hanem az eredeti példánnyal dolgozik.

-filter Az alábbi egybetűs opciókkal lehet szűrőt definiálni a nyomtatáshoz. A nyomtatandó fájlok először a megfelelő szűrőn haladnak át, s csak utána kerülnek a nyomtatási adatterületre. A használható szűrők listája erősen rendszerspecifikus, az alábbiak csak a leggyakoribbak.

-p A fájlokat a pr parancshoz hasonlóan formázza.

-t troff formátumú fájlokhoz.

-d TeX formátumú fájlokhoz.

(Számos régi lpr implementációban nem engedélyezett az opciók egybeírása, tehát például az lpr -fs megadási mód.)

Az lpq parancs

Az lpq paranccsal lehet a nyomtatási sor tartalmát megjeleníteni. Paraméter nélkül meghívva a sorban álló összes nyomtatási feladatot kilistázza, egyébként az alábbi opciók segítségével lehet egyes kiválasztott feladatokról (job#), vagy az egy adott user felhasználóhoz tartozó nyomtatási feladatokról információt kapni.

 

lpq [options] [job#] [user]

Az opciók az alábbiak:

 

-P printer A printer nyomtató nyomtatási sorát adja meg, ennek hiányában a PRINTER környezeti shell-változó, illetve a default printer sorát.

-l Részletesebb listát ad a nyomtatási feladatokról, a küldő gép nevét is kiírva.

+ [interval] Periodikusan kilistázza a sort, amíg teljesen el nem fogy. interval a lekérdezések közti idő (másodpercekben).

 
Az lprm parancs

E paranccsal lehet nyomtatási feladatokat törölni a nyomtatási sorból.

 

lprm [options] [job#] [user]

A feladatokat törölhetjük a feladatazonosító (job#) megadásával, illetve a felhasználó nevének megadásával az adott felhasználóhoz tartozó összes feladat törlődik a sorból. Argumentum nélkül meghívva az lprm parancsot, az éppen aktív feladat törlődik, feltéve hogy mi indítottuk, tehát van törlési jogosultságunk. Az opciók:

 

-P printer A printer nyomtató nyomtatási sorából törli a feladatokat, ennek hiányában a PRINTER környezeti shell-változó által meghatározott, illetve a default printer sorából.

A felhasználó által indított összes nyomtatási feladatot törli a sorból. Ha privilégizált felhasználó adja ki e parancsot, az összes nyomtatási feladat törlődik.

 

Tartalomjegyzék