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

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

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

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


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 or, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply