Process Introspection
Process IntrospectionThe next step in a performance analysis is to figure out what the application is doing. Configuring application is one thing. Checking if the application actually pulled all configration information is another thing. The tools below tell you what your application is doing.
Solaris provides a large collection of tools to list and control processes. For an overview and detailed description, please refer to the manual pages of proc(1). The following chapter introduces the most commonly used commands.
pgrep – Find Processes by Name and other Attributes
The pgrep command finds processes by name and other attributes. For that, the pgrep utility examines the active processes on the system and reports the process IDs of the processes whose attributes match the criteria specified on the command line. Each process ID is printed as a decimal value and is separated from the next ID by a delimiter string, which defaults to a newline.
pgrep – find processes by name and other attributes
pkill – Signal Processes by Name and other Attributes
The pkill signals processes by name and other attributes. pkill functions identically to pgrep, except that each matching process is signaled as if by kill(1) instead of having its process ID printed. A signal name or number may be specified as the first command line option to pkill.
pkill – signal processes by name and other attributes
ptree - Print Process Trees
The ptree prints parent-child relationship of processes. For that, it prints the process trees containing the specified pids or users, with child processes indented from their respective parent processes. An argument of all digits is taken to be a process-ID, otherwise it is assumed to be a user login name. The default is all processes.
ptree – no options
sta [Tools CD] – Print Process Trees
The sta tool provides similar output to ptree. See example run below.
sta – sample output
pargs - Print Process Arguments, Environment, or auxiliary Vector
The pargs utility examines a target process or process core file and prints arguments, environment variables and values, or the process auxiliary vector.
pargs – sample output
pfiles – Report on open Files in Process
The pfiles command reports fstat(2) and fcntl(2) information for all open files in each process. In addition, a path to the file is reported if the information is available from /proc/pid/path. This is not necessarily the same name used to open the file. See proc(4) for more information.
pfiles – sample output
pstack – Print lwp/process Stack Trace
The pstack command prints a hex+symbolic stack trace for each process or specified lwps in each process.
Note: use jstack for java processes
pstack – sample output
jstack – Print Java Thread Stack Trace [see $JAVA_HOME/bin]
The jstack command prints Java stack traces of Java threads for a given Java process or core file or a remote debug server. For each Java frame, the full class name, method name, 'bci' (byte code index) and line number, if available, are printed.
jstack – sample output
pwdx – Print Process current Working Directory
The pwdx utility prints the current working directory of each process.
pwdx – sample output
pldd – Print Process dynamic Libraries
The pldd command lists the dynamic libraries linked into each process, including shared objects explicitly attached using dlopen(3C). See also ldd(1).
pldd – sample output
pmap - Display Information about the Address Space of a Process
The pmap utility prints information about the address space of a process. By default, pmap displays all of the mappings in the virtual address order they are mapped into the process. The mapping size, flags and mapped object name are shown.
pmap – default output
An extended output is available by adding the -x option (additional information about each mapping) and the -s option (additional HAT size information).
pmap – extended output
showmem [Tools CD] – Process private and shared Memory usage
The showmem utility wraps around pmap and ps todetermine how much private and shared memory a process is using.
showmem – sample output
plimit - Get or set the Resource Limits of running Processes
In the first form, the plimit utility prints the resource limits of running processes.
plimit – displaying process resource limits
In the second form, the plimit utility sets the soft (current) limit and/or the hard (maximum) limit of the indicated resource(s) in the processes identified by the process-ID list, pid. As an example, let's limit the current (soft) core file size of the trashapplet process with PID 897 to five (5) MB, using the command: plimit -c 5m,unlimited 897.
plimit – setting the current (soft) core file limit to 5 MB
Thomas Bastian was a coauthor of an earlier version of this document. The earlier version of this page has been published in the "The Developers Edge" in 2009.
- 28151 views