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.