Linux

查看 CUPS 列印作業的時間戳

  • April 18, 2021

我正在尋找一種在 CUPS 中查看作業時間戳的方法。我已經搜尋了手冊頁,但似乎找不到它。

長期目標是有一個腳本來解析來自 jobID 的時間,並自動刪除任何超過特定年齡的作業 - 以避免伺服器過載。我的 CUPS 伺服器有超過 2000 個列印隊列。

我在 U&L 網站中發現了以下 2 個問題,這些問題似乎可以作為一種可能的方式提供提示。這2個問題:

似乎暗示你可以lpstat用來得到你想要的。我注意到我可以執行這個命令:

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

和這個:

$ 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對我沒有任何幫助。

$ 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 , you'll notice a bunch of control files in there. These files are kept as a result of theMaxJobs 設置,未設置時預設為 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

參考

引用自:https://unix.stackexchange.com/questions/159935