J'imprime des fichiers d'un ordinateur distant à une imprimante réseau avec la commande LPR. Il a apparemment travaillé, 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 de l'imprimante?
Oui, un programme existe: lpstat
- Informations sur les tasses d'impression
$ 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 suivantes pages Web:
https://localhost:631/printers/[NameOfPrinter]?which_jobs=completed
http://localhost:631/jobs?which_jobs=completed
Bien à vous
Je pense /var/log/cups/page_log
etc. a l'historique des emplois terminés.
Une alternative est l'interface Web
http://localhost:631/
qui montre également des emplois terminés. Je ne sais pas où l'interface Web obtient ses informations.
L'autre réponse lorsque j'ai essayé de produire ce qui suit:
$ Sudo lpstat -W completed
mfc-8480dn-1652 root 1024 Tue 28 Jan 2014 01:19:34 AM EST
Ajout d'un utilisateur, saml
vous donne l'historique de l'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 le -u all
mentionné dans cet intitulé U & L titré: 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 pirate de faire cela serait de formaliser une liste des utilisateurs sur votre système, puis de l'ajouter comme une sous-commande au -u
argument comme si:
$ 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 alors:
$ Sudo lpstat -W completed -u $(getent passwd | \
awk -F: '{print $1}' | paste -sd ',') | awk '{print $2}' | sort -u
ethan
root
sam
tammy
Un problème avec ceci est si l'utilisateur d'imprimer sur des gobelets n'a pas de compte localement, ils ne seront pas affichés.
Mais si vous avez un répertoire contenant vos fichiers de contrôle LPD, c'est typiquement il s'agit/var/spool/cups, you'll notice a bunch of control files in there. These files are kept as a result of the
MAxJobs 'Réglage, qui par défaut à 500 quand non défini.
$ Sudo ls -l /var/spool/cups/ | wc -l
502
Si vous regardez via ces fichiers, vous remarquerez qu'ils contiennent des noms d'utilisateur et non seulement 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 prendre la liste des utilisateurs de getent passwd
, ainsi:
$ 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
Chaque réponse ci-dessus semble être seulement intéressée par complété emplois ...
Et si vous êtes également intéressé par des emplois qui étaient annulés par l'utilisateur ou un administrateur? Et si vous voulez savoir combien d'emplois ont été avorté par le système d'impression lui-même, en raison du conducteur ou d'autres problèmes?
Pour ces cas, utilisez:
lpstat -W all -o
De plus, vous voudrez peut-être connaître plus de détails sur chaque travail. Dans ce cas, ajoutez -l
Pour un long format de sortie:
lpstat -l -W all -o