View all user's printing jobs from the command line

I’m running Fedora 17, Gnome (3?), and using bash from terminal. Whenever I run lpstat I only get a list of my jobs, but every time I go to retrieve my jobs from the printer, somebody else is printing and mine hasn’t even started! What gives?

I want to view a list of all users’ jobs, not just mine.

I tried lpq to no avail. I’ve also tried lpstat -t and same result — just my jobs, not anyone else’s. What am I doing wrong here?

Here is Solutions:

We have many solutions to this problem, But we recommend you to use the first solution because it is tested & true solution that will 100% work for you.

Solution 1

The accepted answer did not work for me but the following method did. However, if you have a directory that contains your LPD control files, typically it’s /var/spool/cups, you'll notice a bunch of control files in there. These files are kept as a result of theMaxJobs` setting, which defaults to 500 when unset.

$ sudo ls -l /var/spool/cups/ | wc -l
502

Another source of usernames?

If you look through these files you’ll notice that they contain usernames, and not just ones for accounts that are present on the system.

$ strings /var/spool/cups/* | grep -A 1 job-originating-user-name | head -5
job-originating-user-name
tammyB
--
job-originating-user-name
tammyB

So we could select all the entries that contain the username followed by the 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

This list can then be adapted in the same way as we were originally using to take the list of users from getent passwd, like so:

$ 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

References

Solution 2

lpstat -u all (as root) should show all users and all jobs that are currently queued:

-u <logon-IDs>

Prints the status of output requests for users, in which can be one or all of the following:

  • <user> – A user on the local system, as in lpstat -u user
  • <host!user> – A user on a system, as in lpstat -u systema!user
  • <host!all> – All users on a particular system, as in lpstat- u systema!all
  • <all!user> – A particular user on all systems, as in lpstat -u all!user
  • all – All users on all systems specified, as in lpstat -u all

Solution 3

While lpstat -u all didn’t work on my system, i could see other users’ jobs when specifying -u without any value:

lpstat -u

Note: Use and implement solution 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply