Beschreibung: Prüfungskandidaten sollten in der Lage sein, Druckerwarteschlangen und Druckjobs von Benutzern zu verwalten. Dieses Lernziel beinhaltet die Kontrolle von Druckservern und Druckerwarteschlangen und das Lösen allgemeiner Druckprobleme.
Die wichtigsten Dateien, Bezeichnungen und Anwendungen:
Drucken unter Linux läuft immer nach einem ganz bestimmten Schema ab. Zunächst einmal geht es in diesem Abschnitt um die Verwaltung von Druckerwarteschlangen. Die Einrichtung verschiedener Drucker wird in den folgenden Kapiteln erläutert.
Eine Warteschlange (engl. spool) ist immer ein Verzeichnis irgendwo unter /var/spool. In dieses Verzeichnis werden die Druckaufträge in zwei verschiedenen Dateien abgelegt. Die erste Datei trägt einen Namen, der mit cf beginnt, diese Datei enthält die Kontrollinformationen des Jobs. (cf - control file). Kontrollinformationen sind z.B. der Name der zu druckenden Datei, der Name des Users, der den Druckauftrag aufgegeben hat und der Hostname des Rechners, von dem aus der Auftrag abgegeben wurde. Die zweite Datei trägt einen Namen, der mit den Buchstaben df beginnt und enthält die zu druckende Datei selbst (df - data file).
Wird also ein Druckauftrag abgegeben, so werden eigentlich nur diese zwei Dateien erstellt. Das eigentliche Drucken wird dann von einem Daemon-Prozeß erledigt, der diese Warteschlange abarbeitet. So können auch Aufträge abgeschickt werden, wenn der Drucker gerade nicht zur Verfügung steht. Denn sie werden ja nur in das Spool-Verzeichnis geschrieben. Selbst wenn der Rechner danach ausgeschaltet wird, sind die Aufträge nicht verschwunden. Sobald der Druckerdaemon das nächste Mal läuft und der Drucker zur Verfügung steht, wird die zu druckende Datei dann ausgedruckt.
Ein Eintrag in /etc/printcap enthält - neben anderen Informationen - den Namen des zu verwendenden Druckers und die Angabe, welches Verzeichnis das zu verwendende Spoolverzeichnis ist. Zum Beispiel zeigt der folgender Eintrag einen Drucker:
lp|hplaser|PS;r=600x600;q=medium;c=gray;p=a4;m=auto:\ :sd=/var/spool/lpd/lp:\ :lf=/var/spool/lpd/lp/log:\ :af=/var/spool/lpd/lp/acct:\ :if=/etc/apsfilter/basedir/bin/apsfilter:\ :lp=/dev/lp0:\ :sh:\ :mx#0:Die für uns interessanten Einträge sind hier:
Mit Hilfe dieser Information weiß das Drucksystem von Linux also, daß der Drucker lp oder hplaser das Spoolverzeichnis /var/spool/lpd/lp benutzt. Wenn also ein Druckauftrag an diesen Drucker abgeschickt wird, dann werden sowohl die Kontrolldatei, als auch die zu druckende Datei in diesem Verzeichnis abgelegt.
Der Name des zu verwendenden Druckers kann mit der Option -P angegeben werden. Wird kein Name angegeben, so wird standardmäßig der Drucker mit dem Namen lp benutzt.
Die Anzahl der zu druckenden Kopien kann mit der Option -# angegeben werden. Vorsicht bei der Anwendung dieses Parameters auf der Shell. Die Shell mißinterpretiert das #-Zeichen als Kommentarzeichen, es muß also vor Interpretation geschützt werden (-\#).
Um also die Datei /etc/passwd auf dem Drucker lp2 vier mal auszudrucken, wird der Befehl
lpr -Plp2 -\#4 /etc/passwdangegeben. Soll die Datei nur einmal auf dem Standarddrucker ausgegeben werden, so genügt ein
lpr /etc/passwdDer Befehl lpr druckt nicht wirklich, sondern legt die Aufträge nur in die entsprechenden Spool-Verzeichnisse ab. Erst der Druckerdaemon lpd erledigt das Drucken selbst.
Die Druckaufträge werden zusammen mit einer Jobnummer ausgegeben, die wir später brauchen werden, um einzelne Aufträge wieder zu löschen. Die Ausgabe des Befehl könnte etwa so aussehen:
lp is ready and printing Rank Owner Job Files Total Size active root 447 /etc/passwd 1204 bytesWir entnehmen also daraus, daß nur ein Druckauftrag vorliegt, der dem User root gehört, also von ihm aufgegeben wurde. Der Auftrag hat die JobID 447 und druckt die Datei /etc/passwd, die insgesamt 1204 Byte groß ist.
Die erste Zeile ist für die Diagnose von Fehlern sehr wichtig. Sie zeigt den Status des Druckerdaemons an. Es könnten hier auch Fehlermeldungen wie
Warning: lp is down: Warning: lp queue is turned offausgegeben werden, wenn der Drucker deaktiviert wurde oder einfach eine Leerzeile, wenn kein Druckerdaemon vorhanden ist.
lprm erwartet die Angabe einer oder mehrerer JobIDs als Parameter, die die zu löschenden Jobs beschreiben. Diese JobIDs können vor dem Aufruf von lprm durch lpq festgestellt werden.
Für jeden Drucker, der in /etc/printcap angegeben wurde, kann lpc benutzt werden um
Wird lpc ohne Parameter aufgerufen, so wartet er auf Kommandos von der Standard-Eingabe. Sind Parameter angegeben, so interpretiert lpc den ersten Parameter als Kommando und die folgenden Parameter als Argumente dieses Kommandos. lpc kennt folgende Kommandos:
All diese Befehle können entweder als Kommandozeilenparameter eingegeben werden, wie etwa
lpc up alloder - wenn lpc ohne Parameter aufgerufen wurde - als Befehl von der Standard-Eingabe:
lpc lpc> up lp lp: printing enabled daemon started lpc> exitWurde lpq ohne Parameter aufgerufen, so kann der Interpreter über die Befehle exit oder quit wieder verlassen werden.