10.5. Printers gebruiken

Hieronder wordt beschreven hoe printers die onder FreeBSD geïnstalleerd zijn gebruikt moeten worden. Nu volgt een overzicht van de commando's op gebruikersniveau:

lpr(1)

Druk opdrachten af

lpq(1)

Controleer printerwachtrijen

lprm(1)

Verwijder opdrachten uit de wachtrij van een printer

Er is ook een administratief commando, lpc(8), beschreven in Printers beheren, dat gebruikt wordt om printers en hun wachtrijen in te stellen.

Alledrie de commando's lpr(1), lprm(1) en lpq(1) accepteren een optie -Pprinternaam om aan te geven op welke printer uit /etc/printcap een opdracht van toepassing is. Dit biedt de mogelijkheid opdrachten te versturen, verwijderen en controleren voor verschillende printers. Als -P niet wordt gebruikt, werken deze commando's op de printer gedefinieerd in de omgevingsvariabele PRINTER. Tot slot, wanneer de omgevingsvariabele PRINTER niet is gedefinieerd, wordt standaard verwezen naar de printer met de naam lp.

10.5.1. Opdrachten afdrukken

Om bestanden af te drukken:

% lpr bestandsnaam ...

Dit drukt elk van de opgegeven bestanden af op de standaard printer. Als geen bestanden worden opgegeven, drukt lpr(1) de standaard invoer af. De volgende opdracht drukt bijvoorbeeld een paar belangrijke systeembestanden af:

% lpr /etc/host.conf /etc/hosts.equiv

Om een specifieke printer te selecteren:

% lpr -P printernaam bestandsnaam ...

Dit voorbeeld drukt een lange opgave van de huidige map af op de printer rattan:

% ls -l | lpr -P rattan

Omdat er geen bestanden worden meegegeven aan het commando lpr(1), drukt lpr de gegevens af die het van de standaard invoer leest: de uitvoer van het commando ls -l.

lpr(1) accepteert ook een breed scala aan opties om de vorm aan te passen, bestandsconversies toe te passen, meerdere kopieën af te drukken, enzovoort. Meer informatie staat in Afdrukopties.

10.5.2. Opdrachten controleren

Als lpr(1) wordt gebruikt om af te drukken, dan worden de gegevens die afdrukt moet worden in een pakketje samengevoegd dat een “afdrukopdracht” wordt genoemd en naar het wachtrijsysteem LPD gestuurd. Elke printer heeft een wachtrij met opdrachten van alle gebruikers. Een printer drukt deze opdrachten op volgorde van binnenkomst af.

De wachtrij voor de standaardprinter kan worden weergegeven met lpq(1). Voor een specifieke printer moet de optie -P meegegeven worden. Het volgende commando toont de wachtrij van printer bamboo:

% lpq -P bamboo

Hieronder volgt een voorbeeld van de uitvoer van het commando lpq:

bamboo is ready and printing
Rank   Owner    Job  Files                              Total Size
active kelly    9    /etc/host.conf, /etc/hosts.equiv   88 bytes
2nd    kelly    10   (standard input)                   1635 bytes
3rd    mary     11   ...                                78519 bytes

Dit laat drie opdrachten zien in de wachtrij voor bamboo. De eerste opdracht, gegeven door gebruiker kelly, heeft opdrachtnummer 9 gekregen. Elke opdracht voor een printer krijgt een uniek opdrachtnummer. Dit nummer kan in de meeste gevallen genegeerd worden, maar is nodig om een opdracht te annuleren. In Opdrachten verwijderen staan meer details.

Opdrachtnummer negen bestaat uit twee bestanden; meerdere bestanden opgegeven naar lpr(1), worden als één enkele opdracht behandeld. Het is de actieve opdracht (active onder de kolom “Rank”), wat betekent dat de printer deze opdracht momenteel aan het afdrukken is. De tweede opdracht bestaat uit gegevens doorgegeven aan lpr(1) als standaard invoer. De derde opdracht is afkomstig van gebruiker mary. Het is een veel grotere opdracht. De bestandsnaam van het bestand dat ze probeert af te drukken is te lang voor het overzicht, daarom toont lpq(1) drie puntjes.

De allereerste regel uitvoer van lpq(1) is ook handig: die vertelt wat de printer momenteel aan het doen is; dat wil zeggen, wat LPD denkt dat de printer aan het doen is.

Het commando lpq(1) ondersteunt ook een optie -l om een gedetailleerd, lang overzicht te geven. Hieronder volgt voorbeelduitvoer van lpq -l:

waiting for bamboo to become ready (offline ?)
kelly: 1st				 [job 009rose]
       /etc/host.conf                    73 bytes
       /etc/hosts.equiv                  15 bytes

kelly: 2nd				 [job 010rose]
       (standard input)                  1635 bytes

mary: 3rd                                [job 011rose]
      /home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytes

10.5.3. Opdrachten verwijderen

Een gebruiker die van gedachten verandert over een af te drukken opdracht, kan een opdracht uit een wachtrij halen met het commando lprm(1). Vaak kan met lprm(1) zelfs een actieve opdracht worden verwijderd, maar een deel of alles van de opdracht kan desondanks toch worden afgedrukt.

Om een opdracht van de standaardprinter te verwijderen dient eerst met lpq(1) het opdrachtnummer gevonden te worden. Typ vervolgens:

% lprm opdrachtnummer

Om een opdracht van een specifieke printer te verwijderen, moet de optie -P worden toegevoegd. Het volgende commando verwijdert opdrachtnummer 10 uit de wachtrij van printer bamboo:

% lprm -P bamboo 10

Het commando lprm(1) heeft een aantal snelkoppelingen:

lprm -

Verwijder alle opdrachten (voor de standaardprinter) van de huidige gebruiker.

lprm gebruiker

Verwijder alle opdrachten (voor de standaardprinter) die van gebruiker zijn. De supergebruiker kan opdrachten van andere gebruikers verwijderen. Andere gebruikers kunnen alleen hun eigen opdrachten verwijderen.

lprm

Zonder een opdrachtnummer, gebruikersnaam of - op de opdrachtregel, verwijdert lprm(1) de huidige actieve opdracht van de huidige gebruiker op de standaard printer. Alleen de supergebruiker kan iedere actieve opdracht verwijderen.

Gebruik de optie -P met bovenstaande snelkoppelingen om een specifieke printer in plaats van de standaard printer te selecteren. Het volgende voorbeeld verwijdert alle opdrachten van de huidige gebruiker uit de wachtrij van printer rattan:

% lprm -P rattan -

Opmerking: Als in een netwerkomgeving wordt gewerkt, staat lprm(1) alleen toe opdrachten te verwijderen vanaf hosts waarvan de afdrukopdrachten zijn gegeven, ook als dezelfde printer vanaf andere hosts bereikbaar is. Het volgende voorbeeld demonstreert dit:

% lpr -P rattan mijnbestand
% rlogin orchid
% lpq -P rattan
Rank   Owner	  Job  Files                          Total Size
active seeyan	  12	...                           49123 bytes
2nd    kelly      13   myfile                         12 bytes
% lprm -P rattan 13
rose: Permission denied
% logout
% lprm -P rattan 13
dfA013rose dequeued
cfA013rose dequeued

10.5.4. Meer dan platte tekst: afdrukopties

Het commando lpr(1) ondersteunt een aantal opties voor de opmaak van platte tekst, het converteren van grafische en andere bestandsformaten, het afdrukken van meerdere kopieën, afwikkeling van een opdracht en meer. In deze sectie worden die opties beschreven.

10.5.4.1. Opties voor opmaak en conversie

De volgende opties voor lpr(1) zorgen voor de opmaak van de bestanden in de opdracht. Gebruik deze opties als de opdracht geen platte tekst bevat of als platte tekst opgemaakt dient te worden met behulp van pr(1).

Het volgende commando drukt bijvoorbeeld een DVI-bestand af (van het TeX typesettingsysteem) met de naam visrapport.dvi op de printer bamboo:

% lpr -P bamboo -d visrapport.dvi

Deze opties zijn van toepassing op alle bestanden in de opdracht. Het is dus niet mogelijk om bijvoorbeeld DVI- en ditroff-bestanden in een opdracht samen te voegen. In plaats hiervan moeten deze bestanden als aparte opdrachten worden gegeven, elk met een andere conversie-optie.

Opmerking: Al deze opties, behalve -p en -T, vereisen dat er conversiefilters zijn geïnstalleerd voor een printer. De optie -d vereist bijvoorbeeld het DVI-conversiefilter. In Conversiefilters staan de details beschreven.

-c

Afdrukken van cifplot-bestanden.

-d

Afdrukken van DVI-bestanden.

-f

Afdrukken van FORTRAN tekstbestanden.

-g

Afdrukken van plotgegevens.

-i aantal

De uitvoer wordt aantal kolommen ingesprongen. Als nummer wordt weggelaten, wordt acht kolommen ingesprongen. Deze optie werkt alleen met bepaalde conversiefilters.

Opmerking: Plaats geen spatie tussen de -i en het nummer.

-l

Drukt letterlijke tekstgegevens af, inclusief controlekarakters.

-n

Afdrukken van ditroff (apparaatonafhankelijke troff) gegevens.

-p

Opmaak van platte tekst met pr(1) alvorens af te drukken. Zie pr(1) voor meer informatie.

-T titel

Gebruik titel op de pr(1) koptekst in plaats van de bestandsnaam. Deze optie heeft alleen effect in combinatie met de optie -p.

-t

Afdrukken van troffgegevens.

-v

Afdrukken van rastergegevens.

In het volgende voorbeeld wordt een mooi opgemaakte versie van de handleiding ls(1) afgedrukt op de standaardprinter:

% zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t

Het commando zcat(1) pakt de broncode van de ls(1) handleiding uit en geeft het door aan het commando troff(1), dat de broncode opmaakt, er GNU troff van maakt en dit doorstuurt naar lpr(1), dat de opdracht naar de LPD wachtrij stuurt. Omdat de optie -t meegeven wordt aan lpr(1), converteert het wachtrijsysteem de GNU troff uitvoer naar een formaat dat de standaardprinter begrijpt als de opdracht wordt afgedrukt.

10.5.4.2. Opties voor opdrachtafhandeling

De volgende opties voor lpr(1) geven LPD aan de opdracht speciaal te behandelen:

-# kopieën

Produceer een aantal van kopieën kopieën van elk bestand in de opdracht, in plaats van één kopie. Een beheerder kan deze optie uitschakelen om slijtage van de printer te voorkomen en gebruik van een kopieerapparaat aan te moedigen. Zie Meerdere kopieën beperken.

Dit voorbeeld drukt drie kopieën af van parser.c gevolgd door drie kopieën van parser.h op de standaardprinter:

% lpr -#3 parser.c parser.h
-m

Stuur een email na voltooiing van de afdrukopdracht. Met deze optie stuurt het LPD-systeem een email als een opdracht is afgehandeld. In dit bericht vertelt het of de opdracht succesvol is uitgevoerd of dat er een fout was met (vaak) de aard van de fout.

-s

Kopieer de bestanden niet naar de wachtrijmap, maar maak in plaats hiervan een symbolische link.

Bij het afdrukken van een grote opdracht is het handig van deze optie gebruik te maken. Het spaart ruimte in de wachtrijmap (het kan zijn dat de opdracht de vrije ruimte verbruikt in het bestandssysteem waarin de wachtrijmap zich bevindt). Het bespaart ook tijd, omdat LPD niet elke byte van de opdracht naar de wachtrijmap hoeft te kopieëren.

Er is echter een nadeel: aangezien LPD het originele bestand nodig heeft, is het niet mogelijk dit te wijzigen, of te verwijderen totdat het is afgedrukt.

Opmerking: Bij het afdrukken op een printer in een netwerk, moet LPD een bestand uiteindelijk toch kopieëren van een lokale host naar een netwerkhost. De optie -s bespaart dus ruimte in een lokale wachtrijmap, niet in die van een host in een netwerk. Het blijft echter nuttig.

-r

Verwijder bestanden in een opdracht na ze naar een wachtrij gekopieerd te hebben of na ze te hebben afgedrukt als de optie -s is gebruikt. Wees voorzichtig met deze optie!

10.5.4.3. Voorbladopties

Deze opties voor lpr(1) passen de tekst aan die gewoonlijk op het voorblad van een opdracht verschijnt. Deze opties hebben geen effect als het afdrukken van voorbladen wordt onderdrukt op een gebruikte printer. Zie Voorbladen voor meer informatie over het opzetten van voorbladen.

-C tekst

Vervang de hostnaam op het voorblad door tekst. De hostnaam is gewoonlijk de naam van de host waarvan de opdracht is verstuurd.

-J tekst

Vervang de naam van de opdracht op het voorblad door tekst. De naam van de opdracht is standaard de naam van het eerste bestand in de opdracht of stdin als de standaard uitvoer wordt afgedrukt.

-h

Druk geen voorblad af.

Opmerking: Bij sommige installaties kan het zijn dat deze optie geen effect heeft door de manier waarop de voorbladen worden gegenereerd. Zie Voorbladen voor de details.

10.5.5. Printers beheren

De beheerder van de printers in een netwerk heeft deze moeten installeren, opzetten en testen. Met het commando lpc(8) kan een beheerder op nog meer manieren communiceren met printers. Met lpc(8) is het mogelijk om:

Ten eerste een opmerking over terminologie: als een printer is gestopt, drukt die niets uit een wachtrij af. Gebruikers kunnen nog steeds opdrachten geven, maar opdrachten wachten in een wachtrij totdat de bijbehorende printer is gestart of als de wachtrij vrij is.

Als een wachtrij is uitgeschakeld, kan geen enkele gebruiker (behalve root) opdrachten naar een printer versturen. Een ingeschakelde wachtrij accepteert opdrachten. Een printer met een uitgeschakelde wachtrij kan worden gestart en drukt dan alle afdrukopdrachten in de wachtrij af tot deze leeg is.

In het algemeen is het nodig root-rechten te hebben om het commando lpc(8) te gebruiken. Gewone gebruikers kunnen het commando lpc(8) gebruiken om een printerstatus op te vragen en om een vastgelopen printer te herstarten.

Nu volgt een samenvatting van de lpc(8) commando's. De meeste commando's accepteren een argument printernaam, om aan te geven op welke printer te werken. Om op alle printers te werken die in /etc/printcap genoemd worden, kan all worden gebruikt als printernaam.

abort printernaam

Annuleer de huidige opdracht en stop de printer. Gebruikers kunnen nog steeds opdrachten versturen als de wachtrij is ingeschakeld.

clean printernaam

Verwijder oude bestanden uit de wachtrijmap van de betreffende printer. Het kan wel eens gebeuren dat de bestanden waaruit een opdracht bestaat niet juist worden verwijderd door LPD. Dit gebeurt bijvoorbeeld wanneer er fouten zijn opgetreden tijdens het afdrukken of tijdens grote administratieve activiteit. Dit commando vindt en verwijdert bestanden die niet in de wachtrijmap thuishoren.

disable printernaam

Nieuwe opdrachten kunnen niet meer in de wachtrij worden geplaatst. Als de printer nog draait, drukt die de opdrachten die zich nog in de wachtrij bevinden af. De supergebruiker (root) kan altijd opdrachten versturen, ook naar een uitgeschakelde wachtrij.

Dit commando is handig bij het testen van een nieuwe printer of een filterinstallatie: schakel de wachtrij uit en verstuur als root opdrachten. Andere gebruikers kunnen geen opdrachten versturen totdat het testen is voltooid en de wachtrij weer is ingeschakeld met het commando enable.

down printernaam boodschap

Schakel een printer uit. Equivalent aan disable gevolgd door stop. De boodschap verschijnt als de status van de printer als een gebruiker de wachtrij van de printer controleert met lpq(1) of de status met lpc status.

enable printernaam

Schakel de wachtrij van een printer in. Gebruikers kunnen opdrachten versturen, maar de printer drukt ze pas af als deze is gestart.

help commandonaam

Geef hulp over het commando commandonaam. Zonder commandonaam, wordt een samenvatting van de beschikbare commando's getoond.

restart printernaam

Start de printer. Gewone gebruikers kunnen dit commando gebruiken als door een uitzonderlijke omstandigheid LPD hangt, maar ze kunnen een printer niet starten die gestopt is met een van de commando's stop of down. Het commando restart is equivalent aan abort gevolgd door start.

start printernaam

Start de printer. De printer drukt opdrachten in zijn wachtrij af.

stop printernaam

Stop de printer. De printer maakt de huidige opdracht af en drukt opdrachten in de wachtrij niet af. Gebruikers kunnen nog steeds opdrachten versturen naar een ingeschakelde wachtrij, ook al is de printer gestopt.

topq printernaam opdracht-of-gebruikersnaam

Herschik de wachtrij voor printernaam door de opdrachten met de opgegeven opdracht nummers of opdrachten van gebruikersnaam bovenaan de wachtrij te plaatsen. Voor dit commando is het niet mogelijk all te gebruiken als printernaam.

up printernaam

Schakel een printer in. Het omgekeerde van het commando down. Equivalent aan start gevolgd door enable.

lpc(8) accepteert bovenstaande commando's op de opdrachtregel. Als er geen commando's worden gegeven, schakelt lpc(8) over op een interactieve modus, waar opdrachten gegeven kunnen worden totdat het commando exit, quit of einde-van-bestand wordt gegeven.