Как показать историю заданий принтера CUPS?

scai, autodelete.txt является файлом, который я создал в окнах и загрузил на долю Linux :) Теперь я сделал этот код в нано из-за окон проблемами кода Linux.

Но теперь это дает набор ошибки

root ~/.config # sh autodelete
find: unrecognized: -printf
BusyBox v1.20.2 (2012-08-09 05:49:15 CEST) multi-call binary.

Usage: find [PATH]... [OPTIONS] [ACTIONS]

Search for files and perform actions on them.
First failed action stops processing of current file.
Defaults: PATH is current directory, action is '-print'

        -follow         Follow symlinks

Actions:
        ! ACT           Invert ACT's success/failure
        ACT1 [-a] ACT2  If ACT1 fails, stop, else do ACT2
        ACT1 -o ACT2    If ACT1 succeeds, stop, else do ACT2
                        Note: -a has higher priority than -o
        -name PATTERN   Match file name (w/o directory name) to PATTERN
        -iname PATTERN  Case insensitive -name
        -path PATTERN   Match path to PATTERN
        -ipath PATTERN  Case insensitive -path
        -type X         File type is X (one of: f,d,l,b,c,...)
        -links N        Number of links is greater than (+N), less than (-N),
                        or exactly N
If none of the following actions is specified, -print is assumed
        -print          Print file name
        -exec CMD ARG ; Run CMD with all instances of {} replaced by
                        file name. Fails if CMD exits with nonzero

autodelete: line 11: bytes: not found
14
08.04.2014, 01:08
6 ответов

Да, программа существует: lpstat - информация о состоянии чашек для печати

$ lpstat -W completed
-W, в которых задания
 Указывает, какие задания показывать, завершены или не завершены (в разделе "Работа").
 по умолчанию). Эта опция должна появиться перед опцией -o и/или любой другой опцией
 имена принтеров, в противном случае значение по умолчанию (незавершенное) будет равно
 используемый в запросе к планировщику.

Или, если вы предпочитаете, через следующие веб-страницы :

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

Доброе пожелание

.
30
27.01.2020, 19:50
[1126826] Я думаю, что [1127365]/var/log/cups/page_log[1127366] и т.д. имеет историю выполненных заданий.

Альтернативой является web-интерфейс

, который также показывает выполненные задания. Я не уверен, откуда веб-интерфейс получает информацию.[1126831].

4
27.01.2020, 19:50

Другой ответ при попытке выдал следующее:

$ 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 Q&A под заголовком: Просмотрите все пользовательские задания печати из командной строки ничего не сделал для меня.

$ 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

Issues?

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

Но если у вас есть каталог, содержащий управляющие файлы системы LPD, обычно это /var/spool/cups, вы заметите там кучу управляющих файлов. Эти файлы хранятся в результате настройки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

References

4
27.01.2020, 19:50

Эта команда очищает историю, а также все активные задания:

sudo cancel -a -x
-2
27.01.2020, 19:50

Кажется, что каждый ответ выше интересует только выполненных заданий...

Что, если вас также интересуют задания, которые были отменены пользователем или администратором? Что делать, если вы хотите узнать, сколько заданий было прервано самой системой печати из-за драйвера или других проблем?

Для этих случаев используйте:

lpstat -W all -o

Кроме того, вы можете узнать больше о каждом задании. В этом случае добавьте -lдля длинного формата вывода:

lpstat -l -W all -o
2
27.01.2020, 19:50

Если вы хотите видеть работы других пользователей, то по какой-то причине указание -uбез значения работает (по крайней мере в моей системе):

lpstat -W completed -u
0
14.04.2021, 16:49

Теги

Похожие вопросы