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


14

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


もちろん、現在プリンタにアクセスできないため、ファイルが印刷されたかどうかを確認できません。
サンティ14

Webインターフェイスを使用すると簡単です。
Faheem Mitha

それは何ですか、もう少し説明してもらえますか?
サンティ14

回答:


30

はい、プログラムが存在します: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

敬具


3
これは、ユーザーIDの完了のみを表示します。次のようなユーザーのリストを提供できますlpstat -W completed -u user1,user2
slm

lpstatには、完了した印刷ジョブ履歴のローリングウィンドウがありますか、それとも完了したすべてのジョブが表示されますか?
chinnychinchin

4

/var/log/cups/page_logなどには完了した仕事の歴史があると思います。

代替手段はWebインターフェースです

http://localhost:631/ 

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


4

試みたときの他の答えは次を作り出しました:

$ 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

したがって、これを行うためのハック的な方法の1つは、システム上のユーザーのリストを形式化し、-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

参照資料


0

上記のすべての答えは、完了したジョブにのみ関心があるようです...

ユーザーまたは管理者によってキャンセルされたジョブにも興味がある場合はどうなりますか?ドライバーやその他の問題が原因で、印刷システム自体によって中止されたジョブの数を知りたい場合はどうしますか?

これらの場合に使用するもの:

lpstat -W all -o

また、各ジョブの詳細を知りたい場合があります。この場合-l、長い出力形式を追加します。

lpstat -l -W all -o

-2

このコマンドは、履歴とアクティブなジョブをクリアするように見えます:

sudo cancel -a -x
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.