previous.png
Cursus Linux       Basis       Printen       lpd   
gnu.png


up.png Linux Printing down.png

In deze paragraaf van de printing les behandelen we 'lpd' (Line Printer Daemon), de oudere manier van printen onder linux.

Wat leren we in dit hoofdstuk:

up.png 1 lpd printing : van printer tot gebruiker down.png

Alvorens een print opdracht wordt afgehandeld komt hij dus eerst in de printer wachtrij terecht. De print-queue is het centrale onderdeel in de afhandeling van een print opdracht en bestaat uit verschillende onderdelen:

up.png 2 De spool directory down.png

Van een print queue kan pas sprake zijn als er een spool directory is aangemaakt. Het nut daarvan is dat print opdrachten tijdelijk opgeslagen worden tot de printer tijd heeft om ze af te drukken. Om gebruik te kunnen maken van de spool directory, moet men een regel opnemen in het configuratie bestand /etc/printcap. In dit bestand wordt de spool directory verbonden met een specifieke printer. De deamon lpd zorgt voor de afhandeling van print opdrachten die in de spool directory voorkomen. Elke printer moet een spool directory hebben.

up.png 3 De printer deamon 'lpd' down.png

De printer-deamon lpd wordt meestal automatisch geactiveerd wanneer het systeem wordt gestart. Tijdens het opstarten kijkt lpd in het bestand /etc/printcap om te zien welke printers er bestaan. Daarna kijkt lpd voor elke printer in de spooldirectory die met de printer verbonden is en drukt bestanden die daar aanwezig zijn af. Vervolgens houdt lpd de spool-directories in de gaten om te kijken of er nieuwe opdrachten bijkomen. Als er een nieuwe opdracht in een spool directory verschijnt, wordt er voor de betreffende printer een spool process gestart. Dit zorgt voor de verdere afhandeling van de print opdracht en wordt automatisch ook afgesloten als de opdracht is afgehandeld. Als er spool directories worden aangemaakt of verwijderd moet het lpd process opnieuw gestart worden, lpd leest namelijk het /etc/printcap bestand alleen maar als het wordt opgestart. Men kan dit regelen met de opdracht:
killall -HUP lpd.

up.png 4 De printer definitie down.png

Als men een opdracht met de printopdracht lpr of vanuit een toepassing naar de spooldirectory stuurt, moet lpd in staat zijn om de opdracht daar weer uit te halen en door te sturen naar de juiste printer. Dit gebeurd op basis van informatie uit het bestand /etc/printcap. Hierin kan men definiëren hoe de printers zich moeten gedragen. In /etc/printcap kan men zowel printers definiëren die lokaal op het systeem zijn aangesloten als printers die ergens op het netwerk voorkomen.

up.png 5 Configuratie bestand: /etc/printcap down.png

Het bestand /etc/printcap bestaat uit één of meerdere entry's. In elke entry wordt een printer beschreven en voor elke printer worden er vervolgens enkele opties gegeven die beschrijven hoe de printer zich moet gedragen. Elke printer in /etc/printcap moet gedefinieerd worden op één enkele regel. Dit komt echter de leesbaarheid niet ten goede. Daarom staan in de praktijk de diverse opties onder elkaar, maar wordt elke tekst regel die niet de laatste regel is afgesloten met een '\' teken (line continuation character), dat het new-line teken onderdrukt. Elk veld in een entry wordt van het vorige veld gescheiden door een dubbele punt. Het eerste veld in een entry begint bij de linker marge van het bestand en bevat de naam van de printer. Men kan hier eventueel meerdere namen aangeven door ze van elkaar te scheiden met een '|' teken. De hier volgende velden definiëren de mogelijkheden van de printer. Kenmerkend voor deze velden is dat ze allemaal inspringen met een tab.

up.png 5.1 printcap velden down.png

Veld naam Betekenis
lp Specifeert de naam van het device waarnaar geprint moet worden, bijvoorbeeld /dev/lp0, wat vanf kernel 2.2 overeenkomt met DOS lpt1
sd naam van de spool directory
if Naam van het algemene input filter dat gebruikt wordt. Naast dit veld kunnen ook cf, df, tf, gf, nf, en vf gebruikt worden om filter aan de duiden die gebruikt worden voor bestanden met een specifief data-formaat.
lf Naam van het bestand waarin foutmeldingen genoteerd worden
sh Suppress headers, ofwel onderdruk headers. Een header is in linux jargon een pagina die voor de printopdracht uit de printer komt en die wat algemene dingen over de print opdracht bevat., zoals de naam van diegene van wie de print opdracht afkomstig is
sf Onderdruk formfeed na de printopdracht. Deze parameter dient gebruikt te worden als er na elke print opdracht een leeg vel papier door de printer gevoerd wordt
mx Geeft de maximale grootte voor de print opdracht
rm Geeft de naam van de remote computer waarop de printer voorkomt. Deze parameter wordt gebruikt wanneer men wil afdrukken op een netwerk printer
rp De naam van de netwerk printer
rg alleen leden van de gedefinieerde groep hebben toegang tot de printer
rs Alleen remote-users die een account hebben op deze machine mogen printen

up.png 6 Voorbeeld down.png

0601.png

Hier volgen de betekenis van iedere lijn:

up.png 7 Beheer van de lpd omgeving down.png

De opdracht om print opdrachten te geven is lpr Behalve 'lpr' zijn er ook nog het beheer van bestaande print opdrachten, diegenen die nog niet zijn afgedrukt en dus in de printer wachtrij verblijven. Hiervoor bestaan de opdrachten zoals:

up.png 7.1 De print opdracht lpr down.png

De opdracht lpr zorgt ervoor dat de print opdracht in een spool directory geplaatst wordt. Als alternatief wordt er natuurlijk ook gebruik gemaakt van de ingebouwde print functie in allerlei toepassingen. Nadat dit is gebeurd zorgt de 'lpd' deamon ervoor dat de print opdracht afgehandeld wordt. Als er geen 'lpd' actief is kan lpr ervoor zorgen dat de deamon alsnog gestart wordt.

Het belangrijkste argument bij de lpr opdracht is de -Pprinternaam, waarmee men opgeeft op welke printer de opdracht moet afgedrukt worden. Als de printer is opgegeven moet de naam overeen stemmen met één van de namen zoals gedefinieerd in /etc/printcap. Als men het argument -P niet gebruikt, wordt geprint op de standaard printer zoals gedefinieerd in de omgevings variabele PRINTER, of de eerste printer die gedefinieerd is in /etc/printcap als er geen PRINTER variabele bestaat.

Met de opdracht 'lpr' kan men een aantal opties meegeven waarmee men aan de lpd deamon verteld dat de print opdracht een bijzonder formaat tekst bevat. Zo kan man aangeven dat de printopdracht in DVI-formaat is opgemaakt door lpr -d myfile.dvi in te voeren. De 'lpd' kan dan een filter gebruiken waardoor de tekst in het juiste formaat aan de printer wordt aangeboden. Hierdoor kan een printer de output op de juiste wijze interpreteren. In de meeste gevallen wordt echter gebruik gemaakt van een intelligent filter om de print opdracht te kunnen interpreteren.

up.png 7.2 De spool directory bekijken: lpq down.png

Met de opdracht lpq kan de inhoud van een spool directory worden bekeken. Als men geen argumenten opgeeft bij lpq, krijgt men een overzicht van alle opdrachten in de print queue van de printer die als eerste in /etc/printcap gedefinieerd is, of indien er een omgevings variabele PRINTER bestaat, de printer die daarin vermeld is. Daarnaast is het mogelijk om informatie op te vragen over een job (specifieke print opdracht), of over jobs die geplaatst zijn door en specifieke gebruiker. Met het argument -Pprinternaam kan aangegeven worden over welke specifieke printer meer informatie gewenst is. Men krijgt vervolgens voor elke job de volgende informatie te zien:

up.png 7.3 Print opdrachten verwijderen down.png

Als men print opdrachten wil verwijderen kan men hiervoor de opdracht lprm gebruiken. Gewone gebruikers kunnen met 'lprm' hun eigen print opdrachten verwijderen, de gebruiker root kan hiermee alle print opdrachten verwijderen. Indien een job in gebruik is door de deamon 'lpd', zal 'lprm' de deamon de-activeren teneinde de job te kunnen verwijderen. Na verwijdering zal 'lprm' de deamon terug activeren.
Enkele parameters voor de opdracht lprm:

Parameter Betekenis
-Pprinternaam De naam van een bepaalde printer. Specifeert de spooldirectory gekoppeld aan de gegeven printer. Indien deze optie niet is gegeven wordt de default printer gebruikt. Wanneer men een liggend streepje als argument geeft, verwijderd lprm alle print opdrachten waarvan men de eigenaar is. Als men su is verwijderd lprm alle print opdrachten uit de spool directory
user nnn Door gebruik te maken van deze parameter kan de superuser de opdrachten van de user nnn verwijderen.
job # Via het job-nummer kan een individuele job verwijderd worden. Voor job-nummers - zie lpq.

up.png 7.4 De printer beheren: lpc down.png

Het line printer controle programma lpc kan men gebruiken om de werking van een printer te beheren. Met 'lpc' kan men printers en spool directories activeren en de-activeren. Dit is vaak nodig om problemen op te lossen.
Daarnaast kan men met 'lpc' de volgorde van jobs in een print queue wijzigen en de status van de printers instellen. Omdat de opdracht lpc ingrijpende gevolgen heeft voor de werking van de printers op een systeem, kan de opdracht alleen door de superuser gebruikt worden.
Wanneer men 'lpc' zonder argumenten gebruikt komt men in een interactieve mode terecht.
Hieronder volgt een overzicht van opdrachten die men in lpc kan gebruiken.

opdracht betekenis
help [opdracht] geeft een korte beschrijving van de opdracht die als argument is gegeven. Als geen opdracht is gegeven volgt er een lijst van opdrachten
abort { all | printer } Sluit een actieve 'lpd' af en zorgt dat nieuwe print-opdrachten geen nieuwe deamons kunnen starten voor de gespecifeerde printers.
clean { all | printer } Verwijdererd alles wat geen print opdracht is uit de spool directory. Onder andere tijdelijke bestanden.
disable { all | printer } Zet de gegeven printer uit, zodat geen nieuwe opdrachten geplaatst kunnen worden
restart { all | printer } Probeert bij voorkomende fout condities de printer deamon te herstarten. Als een print opdracht was vastgelopen kan men hiermee proberen om de print-opdracht opnieuw af te drukken
start { all | printer } Activeerd de aangegeven printer
status { all | printer } Geeft de status van de printer weer. Dank aan informatie zoals is de queue actief, is de printer actief, hoeveel jobvs staan er in de queue
stop { all | printer } Stopt de deamon na de huidige job en deactiveert de printer
exit Sluit de interactieve modus van 'lpc'
topq [job-nummer] [user] Plaatst de genoemde print opdrachten bovenaan in de queue

up.png 8 Installatie van een filter down.png

Om een filter te installeren dient men ervoor te zorgen dat een verwijzing naar het filter bestaat in /etc/printcap. Deze verwijzing wordt opgenomen met de regel :if=/var/spool/lpd/lp0/filter. Daarnaast moet het filter in de juiste directory geïnstalleerd worden. Als men een kant en klaar filter heeft, moet dit alleen maar naar de juiste directory gekopieerd te worden. Heeft men geen kant en klaar filter dan moet er eentje geïnstalleerd worden. Het aspfilter bijvoorbeeld heeft een eigen installatie routine. Lees het bij het filter meegeleverde informatie.

up.png Samenvatting down.png

In deze paragraaf hebben we het gehad over printen onder Linux met behulp van het ouderwetse 'lpd' printing systeem. Gebruik dit systeem alleen als het niet anders kan, op moderne distributies is het printing systeem vervangen door CUPS.

up.png Literatuur down.png



previous.png
Cursus Linux       Basis       Printen       lpd   
Last modified: Wed Jan 28 13:01:59 2015