Wie zeige ich den Verlauf der CUPS-Druckaufträge an?


14

Ich drucke einige Dateien mit dem Befehl lpr von einem Remotecomputer auf einen Netzwerkdrucker. Es hat anscheinend funktioniert, aber einige Minuten später, als ich lpstat oder lpq eintippte, war der Job bereits verschwunden, wahrscheinlich hatte er die Datei bereits gedruckt. Gibt es eine Möglichkeit, den Verlauf oder das Protokoll meiner erfolgreich abgeschlossenen Aufträge in der Druckerwarteschlange zu überprüfen?


Natürlich habe ich momentan keinen Zugriff auf den Drucker und kann daher nicht prüfen, ob die Datei gedruckt wurde oder nicht.
Santi

Über das Webinterface ist es einfach.
Faheem Mitha

Was ist das, könntest du etwas mehr erklären?
Santi

Antworten:


29

Ja, es gibt ein Programm: lpstat- Statusinformationen der Tassen ausdrucken

$ lpstat -W completed
-W which-jobs
     Specifies which jobs to  show,  completed  or  not-completed  (the
     default).  This option must appear before the -o option and/or any
     printer names, otherwise the default (not-completed) value will be
     used in the request to the scheduler.

Oder wenn Sie es vorziehen, über die folgenden Webseiten :

https://localhost:631/printers/[NameOfPrinter]?which_jobs=completed
http://localhost:631/jobs?which_jobs=completed

Mit freundlichen Grüßen


3
Dadurch wird nur die für Ihre Benutzer-ID vervollständigte angezeigt. Sie können eine Liste der Benutzer wie folgt geben: lpstat -W completed -u user1,user2.
SLM

4

Ich denke, /var/log/cups/page_logetc. hat die Geschichte der erledigten Jobs.

Eine Alternative ist das Webinterface

http://localhost:631/ 

Hier werden auch erledigte Aufträge angezeigt. Ich bin nicht sicher, woher das Webinterface seine Informationen bezieht.


4

Die andere Antwort ergab beim Versuch folgendes:

$ sudo lpstat -W completed
mfc-8480dn-1652         root              1024   Tue 28 Jan 2014 01:19:34 AM EST

Wenn Sie einen Benutzer hinzufügen, wird samlder Verlauf dieses Benutzers angezeigt:

$ sudo lpstat -W completed -u saml | head -2
mfc-8480dn-1524         saml             23552   Thu 28 Nov 2013 10:45:44 AM EST
mfc-8480dn-1526         saml            699392   Sat 30 Nov 2013 10:34:34 AM EST

Die -u allin diesem U & L mit dem Titel " Alle Druckaufträge des Benutzers über die Befehlszeile anzeigen" genannten Fragen und Antworten haben jedoch nichts für mich getan.

$ sudo lpstat -W completed -u all | head -2
$

Seltsamerweise könnte ich das tun:

$ sudo lpstat -W completed -u saml,root | head -3
mfc-8480dn-1524         saml             23552   Thu 28 Nov 2013 10:45:44 AM EST
mfc-8480dn-1526         saml            699392   Sat 30 Nov 2013 10:34:34 AM EST
mfc-8480dn-1652         root              1024   Tue 28 Jan 2014 01:19:34 AM EST

Ein hackiger Weg, dies zu tun, besteht darin, eine Liste der Benutzer auf Ihrem System zu formalisieren und diese dann als Unterbefehl zum -uArgument wie folgt hinzuzufügen :

$ sudo lpstat -W completed -u $(getent passwd | \
    awk -F: '{print $1}' | paste -sd ',')

Um zu zeigen, dass dies alle Benutzer vor Ort sieht, können Sie eine eindeutige Liste Ihrer Benutzer erstellen, wie folgt:

$ sudo lpstat -W completed -u $(getent passwd | \
    awk -F: '{print $1}' | paste -sd ',') | awk '{print $2}' | sort -u
ethan
root
sam
tammy

Probleme?

Ein Problem dabei ist, dass der Benutzer, der auf CUPS druckt, lokal kein Konto hat, nicht angezeigt wird.

Wenn Sie jedoch ein Verzeichnis haben, das Ihre LPD-Steuerdateien enthält , you'll notice a bunch of control files in there. These files are kept as a result of the, ist die Einstellung / var / spool / cups MaxJobs in der Regel auf 500 voreingestellt, wenn sie nicht festgelegt ist.

$ sudo ls -l /var/spool/cups/ | wc -l
502

Eine andere Quelle für Benutzernamen?

Wenn Sie diese Dateien durchsehen, werden Sie feststellen, dass sie Benutzernamen enthalten und nicht nur solche für Konten, die auf dem System vorhanden sind.

$ strings /var/spool/cups/* | grep -A 1 job-originating-user-name | head -5
job-originating-user-name
tammyB
--
job-originating-user-name
tammyB

So können wir alle Einträge auswählen, die den Benutzernamen gefolgt von B enthalten.

$ sudo strings /var/spool/cups/* | grep -A 1 job-originating-user-name | \
    grep -oP '.*(?=B)' | sort -u
ethan
guest-AO22e7
root
sam
saml
slm
tammy

Diese Liste kann dann auf dieselbe Weise angepasst werden, wie wir sie ursprünglich verwendet haben, um die Liste der Benutzer zu übernehmen getent passwd:

$ sudo lpstat -W completed -u $(strings /var/spool/cups/* | \
    grep -A 1 job-originating-user-name | \
    grep -oP '.*(?=B)' |sort -u | paste -sd ',') 
mfc-8480dn-1525         tammy           545792   Thu 28 Nov 2013 01:36:59 PM EST
mfc-8480dn-1526         saml            699392   Sat 30 Nov 2013 10:34:34 AM EST
mfc-8480dn-1652         root              1024   Tue 28 Jan 2014 01:19:34 AM EST
mfc-8480dn-1672         saml              1024   Sun 09 Feb 2014 01:56:26 PM EST

Verweise


0

Jede Antwort oben scheint nur an erledigten Jobs interessiert zu sein ...

Was ist, wenn Sie auch an Jobs interessiert sind, die vom Benutzer oder einem Administrator abgebrochen wurden? Was ist, wenn Sie wissen möchten, wie viele Aufträge vom Drucksystem aufgrund von Treibern oder anderen Problemen abgebrochen wurden?

Für diese Fälle verwenden Sie:

lpstat -W all -o

Außerdem möchten Sie möglicherweise weitere Details zu jedem Job erfahren. In diesem Fall -lfür ein langes Ausgabeformat hinzufügen :

lpstat -l -W all -o

-2

Dieser Befehl löscht den Verlauf sowie alle aktiven Jobs:

sudo cancel -a -x
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.