Welten vereinen

So druckt man mit Linux

Unix und Drucker - zwei Welten treffen aufeinander: Nachdem es unter Linux kein einheitliches Druckertreibermodell gibt, muß sich der Linux-Freund anders behelfen: Lösungen gibt es eigentlich für jedes Druckproblem - welche Lösungen das sind zeigt der folgende Beitrag. Von Jürgen Bernau und Thomas Wölfer.

Die Printer Queue: (lpd/lpr/lpq/lprm/lpc)
Beim Booten von Linux wird der Line Printer Daemon (lpd) gestartet. Dieser liest zunächst die Datei /etc/printcap, die Informationen über verfügbare Drucker enthält. Anschließend wartet der Daemon auf Druckaufträge die sowohl vom lokalen Rechner als auch über Netzwerkverbindungen entgegengenommen werden. Ein Druckauftrag besteht aus dem Namen einer zu druckenden Datei sowie einer Sammlung von Zusatzinformationen wie zum Beispiel dem Namen des Ausgabegerätes und des Benutzers, der den Auftrag abgeschickt hat.

Ein Auftrag wird in das entsprechende Spool Verzeichniss kopiert und in der Druckerqueue angehängt. Wenn der Auftrag die Spitze der Queue erreicht, und der Drucker verfügbar ist, beginnt der tatsächliche Ausdruck. Nach dessen Ende wird die Datei aus dem Spoolverzeichniss entfernt und der Eintrag in der Queue gelöscht. Alle Daten sind also persistent, d.h. auch wenn der Daemon beendet wird, der Rechner abstürzt oder herunterfährt bleiben alle Eintrage in der Queue erhalten, so daß beim erneuten starten des Daemons weitergedruckt werden kann.

Ein Anwender kommuniziert nicht direkt mit dem Druckerdaemon: Vielmehr werden Druckaufträge über das Kommando 'lpr' angelegt. Das Kommando erzeugt die von lpd benötigten Informationen automatisch und reicht diese zusammen mit der zu druckenden Datei an diesen weiter.

Der einfachste Aufruf von lpr lautet

lpr Dateiname

Hier wird die Datei 'Dateiname' an den Standarddrucker geschickt und wenn möglich sofort ausgedruckt. Ist der Drucker gerade beschäftigt oder offline, so wird der Druckauftrag in die Warteschlange gestellt: Das Kommando kehrt also auf jeden Fall sofort zurück. Welcher Drucker als Default verwendet wird, entnimmt das Kommando der Umgebungsvariablen 'PRINTER'. Ist diese nicht gesetzt, so wird 'lp' als Standarddrucker verwendet. Soll die Ausgabe auf einem anderen Gerät erfolgen, so kann über den Parameter '-P' ein anderer Name angegeben werden. Der Ausdruck auf den Drucker 'Drucker2' erfolgt also mittels:

lpr -PDrucker2 Dateiname

Über den Status der Druckerwarteschlange informiert das Kommando 'lpq' (line printer queue). Auch hier gilt, daß ohne Angabe von Parametern die Warteschlange des Standarddrucker ausgegeben wird. Über den '-P# Parameter kann auch hier ein alternativer Name angegeben werden. Den Druckerstatus von 'Drucker2' erhält man also mittels:

lpq -PDrucker2

Jedem Druckauftrag ist eine Jobnummer zugeordnet. Diese Nummer kann man verwenden, um gezielt einzelne Aufträge wieder aus der Warteschlange zu entfernen. Das Kommand 'lprm' (lineprinter remove) entfernt den angegeben Job aus der Liste. Ohne Angabe von Parameter wird einfach der momentan aktive Job entfernt. Natürlich können Sie nur eigenen Druckaufträge anhalten - Aufträge von anderen Anwendern kann nur der Superuser entfernen.


Die Verwaltung der Druckerwarteschlange kann auch mit dem graphischen Tool 'klpq' erfolgen.

Ebenfalls nur für den Superuser gedacht ist das Kommando 'lpc' (lineprinter control). Mit diesem interaktivem Programm kann der Superuser die Druckausgabe auf einzelnen Geräte anhalten, zum Beispiel um Papier nachzulegen. In diesem Fall kann der Anwender weiterhin Druckaufträge an das Gerät schicken, der Ausdruck beginnt aber erst, wenn das Gerät wieder aktiv ist. Fällt ein Drucker längere Zeit aus, so kann auch seine Warteschlange deaktiviert werden: In diesem Fall können keine weiteren Aufträge abgeschickt werden. Beim Versuch erhält der Anwender eine Fehlermeldung. Als letzte Funktion kann mittels lpc auch die Reihenfolge der Druckaufträge umgestellt werden. Normalerweise werden Aufträge in der Reihenfolge des Eintreffens bearbeitet.

Artikel kommentieren