prtstat

The prtstat utility is a very useful utility that provides the same information as the script in the preceding section, but is an external binary. It is part of the psmisc project, which also provides fuser, killall, and pstree. You could get the CPU number from prtstat by piping it through grep and awk, which is easier than taking responsibility for correct parsing of a relatively long and complicated set of variables, although it does look a little less tidy, and involves spawning three different binaries, whereas the shell script in the preceding section spawns no processes at all.

prtstat $$ 
Process: bash          State: S (sleeping) 
  CPU#:  1          TTY: 136:1   Threads: 1 
Process, Group and Session IDs 
  Process ID: 2168          Parent ID: 2063 
    Group ID: 2168          Session ID: 2168 
  T Group ID: 2999 
Page Faults 
  This Process    (minor major):     4539         0 
  Child Processes (minor major):   114675        55 
CPU Times 
  This Process    (user system guest blkio):   0.07   0.14   0.00   0.93 
  Child processes (user system guest):         4.56   0.67   0.00 
Memory 
  Vsize:       19 MB     
  RSS:         2412 kB            RSS Limit: 18446744073709 MB 
  Code Start:  0x400000           Code Stop:  0x4d8c1c  
  Stack Start: 0x7fffb27ae720 
  Stack Pointer (ESP): 0x7fffb27ae300    Inst Pointer (EIP): 0x7fe37fa9a36e 
Scheduling 
  Policy: normal 
  Nice:   0          RT Priority: 0 (non RT) 
$ 
$ prtstat -r $$ | grep processor: | awk '{ print $2 }'  ...

Get Shell Scripting: Expert Recipes for Linux, Bash, and More now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.