CUPSプリンタのジョブ履歴を表示するには?

CUPSプリンタのジョブ履歴を表示するには?

私は、lprコマンドを使用してリモートコンピュータからネットワークプリンタにいくつかのファイルを印刷しています。明らかに動作しますが、数分後にlpstatまたはlpqと入力すると、ジョブが消えてファイルが印刷された可能性があります。プリンタキューで正常に完了したジョブの履歴またはログを確認する方法はありますか?

答え1

はい、プログラムがあります: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.

または必要に応じてWebページ:

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

フレンドリーな安否

答え2

試してみると、別の答えは次のような結果をもたらしました。

$ 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 allU&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

質問?

この問題の1つは、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

引用する

答え3

私の考えには、背中が/var/log/cups/page_log仕事を果たした歴史があると思います。

もう1つのオプションはWebインターフェースです。

http://localhost:631/ 

また、完了したジョブも表示されます。 Webインターフェイスが情報をどこから取得するのかわかりません。

答え4

他のユーザーのタスクを表示するには、何らかの理由で値なしで-uタスクを指定します(少なくとも私のシステムでは)。

lpstat -W completed -u

関連情報