Bagaimana cara menunjukkan riwayat pekerjaan printer CUPS?

14

Saya mencetak beberapa file dari komputer jarak jauh ke printer jaringan dengan perintah lpr. Tampaknya berhasil, tetapi beberapa menit kemudian ketika saya mengetik lpstat atau lpq, pekerjaan itu sudah hilang, mungkin sudah mencetak file. Apakah ada cara untuk memeriksa riwayat atau log pekerjaan saya yang berhasil diselesaikan dalam antrian printer?

Santi
sumber
Tentu saja saya tidak memiliki akses ke printer sekarang, dan oleh karena itu saya tidak dapat memeriksa apakah file itu dicetak atau tidak.
Santi
Melalui antarmuka web itu mudah.
Faheem Mitha
Apa itu, bisakah Anda menjelaskan lebih banyak?
Santi
localhost: 631 .
Faheem Mitha

Jawaban:

30

Ya ada program: lpstat- cetak informasi status gelas

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

Atau jika Anda lebih suka melalui halaman web berikut :

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

Salam

Alexis-Emmanuel Haeringer
sumber
3
Ini hanya akan menunjukkan selesai untuk userid Anda. Anda dapat memberikan daftar pengguna seperti ini: lpstat -W completed -u user1,user2.
slm
Apakah lpstat memiliki jendela bergulir untuk riwayat pekerjaan pencetakan yang sudah selesai, atau apakah ini menunjukkan semua pekerjaan yang pernah diselesaikan?
chinnychinchin
4

kupikir /var/log/cups/page_log dll. Memiliki riwayat pekerjaan yang selesai.

Alternatif adalah antarmuka web

http://localhost:631/ 

yang juga menunjukkan pekerjaan selesai. Saya tidak yakin dari mana antarmuka web mendapatkan informasinya.

Faheem Mitha
sumber
4

Jawaban lain ketika dicoba menghasilkan yang berikut:

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

Menambahkan pengguna, samlmemberi Anda riwayat pengguna itu:

$ 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

Tetapi yang -u alldisebutkan dalam U&L Q&A berjudul: Melihat semua pekerjaan pencetakan pengguna dari baris perintah tidak melakukan apa pun untuk saya.

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

Anehnya saya bisa melakukan ini:

$ 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

Jadi salah satu cara meretas untuk melakukan ini adalah dengan memformalkan daftar pengguna pada sistem Anda dan kemudian menambahkannya sebagai sub- -uperintah pada argumen seperti:

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

Hanya untuk menunjukkan bahwa ini melihat semua pengguna secara lokal Anda bisa mendapatkan daftar unik dari pengguna Anda seperti:

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

Masalah?

Satu masalah dengan ini adalah jika pengguna yang mencetak ke CUPS tidak memiliki akun secara lokal maka mereka tidak akan ditampilkan.

Tetapi jika Anda memiliki direktori yang berisi file kontrol LPD Anda, biasanya itu adalah , you'll notice a bunch of control files in there. These files are kept as a result of thepengaturan / var / spool / cups MaxJobs`, yang secara default menjadi 500 ketika tidak disetel.

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

Sumber nama pengguna lain?

Jika Anda melihat file-file ini Anda akan melihat bahwa itu berisi nama pengguna, dan bukan hanya untuk akun yang ada di sistem.

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

Jadi kita bisa memilih semua entri yang berisi nama pengguna diikuti oleh 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

Daftar ini kemudian dapat diadaptasi dengan cara yang sama seperti yang awalnya kami gunakan untuk mengambil daftar pengguna getent passwd, seperti:

$ 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

Referensi

slm
sumber
0

Setiap jawaban di atas tampaknya hanya tertarik untuk diselesaikan pekerjaan yang ...

Bagaimana jika Anda juga tertarik pada pekerjaan yang dibatalkan oleh pengguna atau admin? Bagaimana jika Anda ingin tahu berapa banyak pekerjaan yang dibatalkan oleh sistem cetak itu sendiri, karena driver atau masalah lain?

Untuk kasus ini gunakan:

lpstat -W all -o

Selain itu, Anda mungkin ingin mengetahui detail lebih lanjut tentang setiap pekerjaan. Dalam hal ini tambahkan -luntuk format output yang panjang:

lpstat -l -W all -o
Kurt Pfeifle
sumber
-2

Perintah ini muncul untuk menghapus riwayat serta semua pekerjaan aktif:

sudo cancel -a -x
Mark Lord
sumber