lprコマンドを使用して、リモートコンピューターからネットワークプリンターにいくつかのファイルを印刷しています。どうやらうまくいきましたが、数分後にlpstatまたはlpqを入力すると、ジョブはすでに消えていて、おそらく既にファイルを印刷していました。プリンターキューで正常に完了したジョブの履歴またはログを確認する方法はありますか?
lprコマンドを使用して、リモートコンピューターからネットワークプリンターにいくつかのファイルを印刷しています。どうやらうまくいきましたが、数分後にlpstatまたはlpqを入力すると、ジョブはすでに消えていて、おそらく既にファイルを印刷していました。プリンターキューで正常に完了したジョブの履歴またはログを確認する方法はありますか?
回答:
はい、プログラムが存在します: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
敬具
lpstat -W completed -u user1,user2
。
試みたときの他の答えは次を作り出しました:
$ 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 the
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