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
Да, программа существует: lpstat
- информация о состоянии чашек для печати
$ lpstat -W completed
-W, в которых задания Указывает, какие задания показывать, завершены или не завершены (в разделе "Работа"). по умолчанию). Эта опция должна появиться перед опцией -o и/или любой другой опцией имена принтеров, в противном случае значение по умолчанию (незавершенное) будет равно используемый в запросе к планировщику.
Или, если вы предпочитаете, через следующие веб-страницы :
https://localhost:631/printers/[NameOfPrinter]?which_jobs=completed
http://localhost:631/jobs?which_jobs=completed
Доброе пожелание
.Альтернативой является web-интерфейс
, который также показывает выполненные задания. Я не уверен, откуда веб-интерфейс получает информацию.[1126831].
Другой ответ при попытке выдал следующее:
$ 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
Одна из проблем с этим заключается в том, что если пользователь, печатающий на 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
Эта команда очищает историю, а также все активные задания:
sudo cancel -a -x
Кажется, что каждый ответ выше интересует только выполненных заданий...
Что, если вас также интересуют задания, которые были отменены пользователем или администратором? Что делать, если вы хотите узнать, сколько заданий было прервано самой системой печати из-за драйвера или других проблем?
Для этих случаев используйте:
lpstat -W all -o
Кроме того, вы можете узнать больше о каждом задании. В этом случае добавьте -l
для длинного формата вывода:
lpstat -l -W all -o
Если вы хотите видеть работы других пользователей, то по какой-то причине указание -u
без значения работает (по крайней мере в моей системе):
lpstat -W completed -u