Comment afficher l'historique des travaux de l'imprimante CUPS?

14

J'imprime certains fichiers d'un ordinateur distant vers une imprimante réseau avec la commande lpr. Cela a apparemment fonctionné, mais quelques minutes plus tard, lorsque j'ai tapé lpstat ou lpq, le travail avait déjà disparu, il avait probablement déjà imprimé le fichier. Existe-t-il un moyen de vérifier l'historique ou le journal de mes travaux terminés avec succès dans la file d'attente d'impression?

Santi
la source
Bien sûr, je n'ai pas accès à l'imprimante pour le moment et je ne peux donc pas vérifier si le fichier a été imprimé ou non.
Santi
Via l'interface Web, c'est facile.
Faheem Mitha
Qu'est-ce que c'est, pourriez-vous expliquer un peu plus?
Santi
localhost: 631 .
Faheem Mitha

Réponses:

30

Oui, un programme existe: lpstat- imprimer les informations sur l'état des gobelets

$ 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.

Ou si vous préférez via les pages Web suivantes :

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

Sincères amitiés

Alexis-Emmanuel Haeringer
la source
3
Cela ne montrera que le terminé pour votre ID utilisateur. Vous pouvez donner une liste d'utilisateurs comme ceci: lpstat -W completed -u user1,user2.
slm
Lpstat a-t-il une fenêtre déroulante pour l'historique des travaux d'impression terminés ou affiche-t-il tous les travaux qui ont été terminés?
chinnychinchin
4

Je pense que /var/log/cups/page_logetc. a l'histoire des travaux terminés.

Une alternative est l'interface web

http://localhost:631/ 

qui montre également les travaux terminés. Je ne sais pas d'où l'interface Web tire ses informations.

Faheem Mitha
la source
4

L'autre réponse lors de l'essai a produit ce qui suit:

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

L'ajout d'un utilisateur samlvous donne l'historique de cet utilisateur:

$ 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

Mais la -u allmention dans cette Q&R U&L intitulée: Voir tous les travaux d'impression de l'utilisateur à partir de la ligne de commande n'a rien fait pour moi.

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

Curieusement, je pourrais faire ceci:

$ 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

Donc, une façon hackée de le faire serait de formaliser une liste des utilisateurs de votre système, puis d'ajouter cela en tant que sous-commande à l' -uargument comme ceci:

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

Juste pour montrer que cela voit tous les utilisateurs localement, vous pouvez obtenir une liste unique de vos utilisateurs comme ceci:

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

Problèmes?

Un problème avec cela est que si l'utilisateur qui imprime sur CUPS n'a pas de compte local, il ne s'affichera pas.

Mais si vous disposez d'un répertoire contenant vos fichiers de contrôle LPD, il s'agit généralement du , you'll notice a bunch of control files in there. These files are kept as a result of theparamètre / var / spool / cups MaxJobs, qui par défaut est 500 lorsqu'il n'est pas défini.

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

Une autre source de noms d'utilisateurs?

Si vous regardez ces fichiers, vous remarquerez qu'ils contiennent des noms d'utilisateur, et pas seulement ceux des comptes présents sur le système.

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

Nous pourrions donc sélectionner toutes les entrées contenant le nom d'utilisateur suivi du B.

$ 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

Cette liste peut ensuite être adaptée de la même manière que nous utilisions à l'origine pour extraire la liste des utilisateurs getent passwd, comme ceci:

$ 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

Les références

slm
la source
0

Chaque réponse ci-dessus ne semble intéresser que les emplois terminés ...

Et si vous êtes également intéressé par des emplois qui ont été annulés par l'utilisateur ou un administrateur? Que faire si vous souhaitez savoir combien de travaux ont été interrompus par le système d'impression lui-même, en raison d'un pilote ou d'autres problèmes?

Pour ces cas, utilisez:

lpstat -W all -o

De plus, vous voudrez peut-être en savoir plus sur chaque travail. Dans ce cas, ajoutez -lpour un format de sortie long:

lpstat -l -W all -o
Kurt Pfeifle
la source
-2

Cette commande semble effacer l'historique ainsi que tous les travaux actifs:

sudo cancel -a -x
Mark Lord
la source