Як показати історію завдань принтера CUPS?


14

Я друкую деякі файли з віддаленого комп'ютера на мережевому принтері за допомогою команди lpr. Це, мабуть, спрацювало, але через кілька хвилин, коли я набрав lpstat або lpq, робота вже зникла, вона, ймовірно, вже надрукувала файл. Чи є спосіб перевірити історію чи журнал моїх успішно виконаних завдань у черзі принтера?


Звичайно, зараз у мене немає доступу до принтера, і тому я не можу перевірити, чи файл був надрукований чи ні.
Санті

Через веб-інтерфейс це легко.
Faheem Mitha

Що це, ви могли б пояснити трохи більше?
Санті

Відповіді:


30

Так, програма існує: lpstat- друкуйте інформацію про стан чашок

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

Або якщо ви віддаєте перевагу через такі веб-сторінки :

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

З повагою


3
Це покаже лише завершені для вашого користувача. Ви можете дати список користувачів , як це: lpstat -W completed -u user1,user2.
slm

Чи має lpstat вікно, що перекидається, для завершеної історії завдань друку чи він відображає всі завдання, які коли-небудь були виконані?
chinnychinchin

5

Я думаю, що /var/log/cups/page_logі т.д. має історію закінчених робіт.

Альтернативою є веб-інтерфейс

http://localhost:631/ 

який також показує завершені робочі місця. Я не впевнений, звідки веб-інтерфейс отримує свою інформацію.


4

Інша відповідь при спробі дала наступне:

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

Додавши користувача, samlви отримуєте історію цього користувача:

$ 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

Але -u allзгадане в цьому записі U&L під назвою: Переглянути всі завдання друку користувача з командного рядка нічого не зробило для мене.

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

Цікаво, що я міг би це зробити:

$ 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

Отож, один хакітний спосіб зробити це - формалізувати список користувачів у вашій системі, а потім додати це як підкоманду до такого -uаргументу:

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

Просто щоб показати, що це бачать усі користувачі на місцевому рівні, ви можете отримати унікальний список ваших користувачів, наприклад:

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

Випуски?

Одна з проблем полягає в тому, якщо користувач, який друкує на CUPS, не має облікового запису локально, вони не відображатимуться.

Але якщо у вас є каталог, який містить ваші файли управління LPD, зазвичай це , you'll notice a bunch of control files in there. These files are kept as a result of theналаштування / var / spool / чашки MaxJobs`, яке за замовчуванням дорівнює 500.

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

Ще одне джерело імен користувачів?

Якщо ви переглянете ці файли, ви помітите, що вони містять імена користувачів, а не лише ті облікові записи, які є в системі.

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

Таким чином, ми могли вибрати всі записи, які містять ім’я користувача, за яким слід 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

Потім цей список можна адаптувати так само, як ми спочатку використовували для отримання списку користувачів 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

Список літератури


0

Кожна відповідь вище, здається, цікавить лише виконані роботи ...

Що робити, якщо вас також цікавлять завдання, скасовані користувачем чи адміністратором? Що робити, якщо ви хочете знати, скільки робочих місць було перервано самою системою друку через проблеми з драйверами чи іншими?

Для цих випадків використовуйте:

lpstat -W all -o

Також ви можете дізнатися більше деталей про кожну роботу. У цьому випадку додайте -lдовгий вихідний формат:

lpstat -l -W all -o

-2

Ця команда видає історію, а також будь-які активні завдання:

sudo cancel -a -x
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.