I am familiar with pidstat command that gives separate user and system CPU per process on Linux:

$ sudo pidstat -p 3162
Linux 4.18.0-13-generic (ubi)   26.12.2018  _x86_64_    (1 CPU)

11:26:13      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
11:26:13     1000      3162    0.24    0.04    0.00    0.12    0.28     0  emacs

How can I accomplish the same on Mac OSX?

top on OSX gives these values but only on the machine level and not per process. For processes, it seems to give only total CPU used

Load Avg: 3.26, 3.02, 3.01  CPU usage: 3.13% user, 5.69% sys, 91.16% idle  SharedLibs: 169M resident, 44M data, 11M

97229  powerlogd    0.0  00:00.45 2     1    51    1160K  16K    1744K  97229 1     sleeping *1[1]

Per process, it shows only the total cpu percentage and not the user and system split. How do I get both user and system time?

  • you already have the answer the % split CPU is in coulomb 15 &16. So you have the Total and the split
    – Ruskes
    Commented Dec 26, 2018 at 1:25

3 Answers 3


Not sure the information you are looking for is accessible so easily. You could try ps

$ ps -p 407 -o pid,time,utime,etime,comm
  407   2:08.23   1:46.36 11-17:10:27 /Applications/Aquamacs.app/Contents/MacOS/Aquamacs

and calculate the system time (TIME - UTIME) and the percentages. This is just the total since the process started though, not an ongoing sampling.

  • More info from man ps: etime: elapsed running time; time :accumulated CPU time, user + system (alias cputime); utime: user CPU time (alias putime)
    – ijoseph
    Commented Nov 29, 2020 at 3:24

You were close with Top command,

now try Top -A

and it will show you this per Process (PID)

enter image description here

or try this top -F -R -o cpu

All the possible Top command options

enter image description here

While Top is running press o (and/or Capital O) then use any of the listed options with it to modify what and how is it displayed in real time.

  • -A gives me an invalid syntax on HighSierra. top still displays the total cpu per process and not the user and system separately unless I missed something here.
    – Neo
    Commented Dec 25, 2018 at 19:34
  • I just tried the top -a on High Sierran and it does work
    – Ruskes
    Commented Dec 25, 2018 at 19:59
  • It shows CPU usage by user
    – Ruskes
    Commented Dec 25, 2018 at 21:12
  • May I wasn't very clear, top shows the process total cpu time and not the split. I need both user and system time. Updated the question too
    – Neo
    Commented Dec 25, 2018 at 23:15
  • OK, Total CPU is in 3d coulomb, the split is %CPU_me and %CPU_others in coulomb 15 &16
    – Ruskes
    Commented Dec 26, 2018 at 1:22

The solution for MAC is :

top -a -n20 | awk 'FNR>=11 && FNR<=31{print $0};FNR==31{exit}' > cpustat.txt
  • 1
    What does this do and how does it solve the question asked in the question?
    – nohillside
    Commented Mar 6, 2022 at 10:43

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .