web-dev-qa-db-ja.com

コマンドラインからすべてのユーザーの印刷ジョブを表示する

私はFedora17、Gnome(3?)を実行していて、ターミナルからbashを使用しています。 lpstatを実行するたびに、ジョブのリストしか取得できませんが、プリンターからジョブを取得するたびに、他の誰かが印刷していて、私のジョブはまだ開始されていません。何が得られますか?

自分だけでなく、すべてのユーザーの仕事のリストを表示したい。

lpqを試しましたが無駄になりました。私も試しましたlpstat -tそして同じ結果-私の仕事だけで、他の人の仕事ではありません。私はここで何が間違っているのですか?

lpstat -u all(rootとして)は、現在キューに入れられているすべてのユーザーとすべてのジョブを表示する必要があります。

-u <logon-IDs>

ユーザーの出力要求のステータスを出力します。これには、次の1つまたはすべてが含まれます。

  • <user>-lpstat -u userのように、ローカルシステム上のユーザー
  • <Host!user>-lpstat -u systema!userのように、システム上のユーザー
  • <Host!all>-lpstat- u systema!allのように、特定のシステム上のすべてのユーザー
  • <all!user>-lpstat -u all!userのように、すべてのシステムの特定のユーザー
  • all-lpstat -u allのように、指定されたすべてのシステムのすべてのユーザー
1
charlesbridge

受け入れられた答えは私にはうまくいきませんでしたが、次の方法はうまくいきました。ただし、LPD制御ファイルを含むディレクトリがある場合、通常は/ var/pool/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

参考文献

2
slm