Es gibt zwei Drucksysteme unter UNIX. Dies ist historisch durch die Aufteilung zwischen dem BSD-UNIX aus dem universitären Bereich und dem AT&T-UNIX entstanden. Welches System auf dem eigenen Rechner installiert ist, erkennt man am Aufruf. Funktionieren die Aufrufe lpr, lpq und lprm, ist es offensichtlich ein BSD-System.
BSD-Unix: lpr, lpq und lprm
Das BSD-Drucksystem ist inzwischen recht weit verbreitet, da es Netzdrucker unterstützt. Dieser Standard ist bereits in andere Betriebssysteme als UNIX übernommen worden, so dass es sich inzwischen zu einem Quasistandard für TCP/IP Drucker entwickelt hat. Dass MacOS X das BSD-System verwendet, verwundert nicht, immerhin basiert es auf FreeBSD. Aber auch Linux, das sich in vielen Dingen an System V hält, verwendet primär das BSD-System.Start des Druckauftrages
Der Server des Druckdienstes heißt lpd. Um als Anwender Dateien in das Spoolverzeichnis des lpd zu schreiben, wird das Frontendprogramm lpr verwendet. Will man eine Datei auf den Standarddrucker ausgeben, reicht der Befehl:
lpr meinedatei |
PRINTER
lpr wird die Datei an den lpd senden und ihm mitteilen, welches der Standarddrucker ist. Die Information, welcher Drucker der Standarddrucker ist, entnimmt lpr der Umgebungsvariablen PRINTER. Daraufhin wird lpd den Druckauftrag zum Spoolen einstellen und nach und nach auf dem Drucker ausgeben.
Drucken aus der Pipe
Typischer ist es jedoch, dass die Druckdatei als solche gar nicht existiert, sondern der Text vor dem Druck aufbereitet oder erst erzeugt wird. Dann wird der Druck an den lpr per Pipe übermittelt. Beispielsweise wird eine Textdatei meist vor dem Druck etwas geschönt und nach Postscript konvertiert. Standardmäßig beherrschen UNIX-Drucker Postscript.
pr -h "/etc/printcap vom 3.3.2001" /etc/printcap | lpr |
Im Beispiel wird die Druckerkonfigurationsdatei mit einer Titelzeile ausgedruckt. Das Kommando pr formatiert ASCII-Dateien vor. Das Ergebnis geht auf stdout und von dort über eine Pipe an den Drucker über lpr. Man könnte auch auf diese Weise eine aktuelle Prozessliste ausgeben:
ps -alx | pr -h "ps um 14:13" | lpr |
Die Prozessliste wird mit ps erzeugt, mit pr formatiert und wandert dann zum Drucker.
Umgang mit mehreren Druckern
Häufig steht aber nicht nur einer, sondern mehrere Drucker zur Verfügung und so wird in einem Parameter für den lpr angegeben, welcher der Drucker verwendet werden soll. Angenommen es gebe noch einen Farblaserdrucker, der sinnigerweise farblaser getauft wurde. Der Aufruf lautet unter Linux oder Solaris:
a2ps meinedatei | lpr -Pfarblaser |
Unter SCO heißt die Option -d statt -P. Von Fremdsystemen wie MS-Windows oder OS/2 muss noch zusätzlich der Servername mit -S angegeben werden. Der Name des Druckers wird in der Datei /etc/printcap definiert. Diese enthält auch die Information, ob der Drucker direkt an dieser Maschine angeschlossen ist oder über das Netz erreichbar ist.
Druckkontrolle
Druckstatus: lpq
Mit dem Befehl lpq kann man sich die eingestellten Druckjobs anzeigen lassen. Verwendet man einen anderen als den Standarddrucker, wird der gleiche Parameter -P wie beim lpr verwendet, um die Druckwarteschlange zu betrachten. Alle eingestellten Drucke bekommen eine Nummer. Diese Nummer ist wichtig, wenn man einen Druck wieder entfernen will.
Stornieren: lprm
Mit lprm und besagter Drucknummer kann man einen eingestellten Druck wieder aus der Warteschlange entfernen. Das funktioniert eventuell nicht mehr, wenn der Druckdämon den Auftrag bereits in der Bearbeitung hat.AT&T: lp, lpstat und cancel
lp -d Drucker
Beispielsweise AIX und SCO verwenden von Haus aus das AT&T Drucksystem. Mit dem Kommando lp werden auf AT&T-Systemen Druckaufträge abgesetzt. Um einen anderen als den Standarddrucker anzusprechen, wird die Option -d gefolgt vom Druckernamen verwendet.Druckkontrolle: lpstat und cancel
Der Befehl lpstat gibt eine Liste über den Status der verschiedenen Drucker aus. Beispiel:
Ausgabe von lpstat
Queue Dev Status Job Files User PP % Blks Cp Rnk ----- ----- ------- --- ------------ --------- -- -- ---- -- --- lp0 lp0 RUNNING 918 STDIN.14846 willemer 5 43 10 1 1 QUEUED 919 STDIN.14593 willemer 3 1 2 QUEUED 920 maskexpj wagener 2 1 3 QUEUED 921 STDIN.14596 willemer 2 1 4 QUEUED 922 STDIN.21790 willemer 1 1 5 QUEUED 923 lunget wagener 3 1 6 bsh bshde READY |
cancel storniert Druckaufträge
Um einen Text aus der Warteschlange zu entfernen, wird der Befehl cancel verwendet. Es ist natürlich nur möglich, eigene Drucke wieder zu entfernen. Fremde Ausdrucke kann nur der jeweilige Besitzer oder der Systemverwalter beseitigen.Druck formatieren: pr und a2ps
Das Programm pr formatiert Textdateien seitenweise. Dies ist vor allem als Vorbereitung für den Ausdruck der Dateien hilfreich. Bei der Ausgabe wird das Datum, der Name der Datei und eine Seitennummerierung als Kopf angegelegt. Der Befehl hat die Optionen:
Option | Wirkung |
---|---|
-t | keine Kopf und Fußzeilen |
-Zahl | erzeugt einen Ausdruck mit Zahl Spalten |
-h text | Als Kopfzeile wird text verwandt |
Ein typischer Aufruf lautet:
pr -h "(C) Arnold Willemer" meintext | lpr |
a2ps
Um reine Textdateien auszugeben, gibt es auf vielen Systemen das Programm a2ps. Der Name bedeutet etwa "ASCII to Postskript". Dabei wird der Text zweispaltig mit Überschrift und Seitennummer formatiert und dann auch gleich über den Standarddrucker ausgegeben.http://www.inf.enst.fr/~demaille/a2ps
Diese Seite basiert auf Inhalten aus dem Buch Arnold Willemer: Wie werde ich UNIX-Guru? |